一般活动
从策划需求到活动上线 — 完整工作流程
一、收到策划需求后,第一步做什么?
1.1 需求拆解
拿到策划文档后,先回答以下 6 个关键问题:
| # | 问题 | 答案决定什么 | 示例 |
|---|---|---|---|
| 1 | 活动有几种界面? | 单页 or 多Tab | 签到1页 / 任务+兑换2页 |
| 2 | 核心交互是什么? | 选哪个模板 | 任务列表→TaskView / 线性兑换→ExchangeLinearView |
| 3 | 有没有商城兑换? | 是否配 activityShopType | 有→关联商城mallId |
| 4 | 有没有任务系统? | 是否配 activityTaskGroup | 有→任务组ID |
| 5 | 有没有独立网络通知? | 是否需要写子模型+协议 | 有→子模型BindNotify / 无→复用通用接口 |
| 6 | 有没有自定义UI交互? | 纯换皮 or 写实例代码 | 纯展示→零代码 / 有按钮交互→写实例 |
1.2 模板选型决策树
1 | 策划需求核心功能是什么? |
二、完整工作流程(7 步)
Step 1: 需求分析与确认
你做的事:
- 读完策划文档
- 填写需求拆解表(上面的 6 个问题)
- 确定模板选型
- 列出需要的配置项清单
- 跟策划确认:
- 活动ID分配了没有?
- 任务组ID在TaskConfData里配好了没有?
- 商城ID在MallCommodityConf里配好了没有?
- 美术资源(背景图、标题图)CDN地址有了没有?
- 活动时间确定了吗?
交付物:一份确认好的需求拆解表
Step 2: 配置表填写
你做的事:在对应 Excel 中新增一行活动记录
文件:Editor/letsgo_common/excel/xls/H_活动中心配置.xlsx
必须确认的字段:
| 字段 | 值 | 谁提供 | 说明 |
|---|---|---|---|
id |
30999 | 策划/服务端 | 活动唯一ID |
activityType |
ATLinearRedeem | 策划 | 玩法类型 |
activityName |
春日兑换 | 策划 | 活动名 |
activityUIDetail |
UI_ActivityTemplate_ExchangeLinearView | 你决定 | ★ 指向选定的模板 |
tagId |
1 | 策划 | 在哪个Tab展示 |
activityShopType |
142 | 策划 | 关联商城 |
activityTaskGroup |
570011,570021 | 策划 | 任务组ID |
backgroundUrl |
spring_bg.astc | 策划/美术 | 背景图+标题图CDN地址 |
timeInfo |
begin/end | 策划 | 活动时间 |
clientParams |
[“每日任务”,”兑换商店”] | 你决定 | Tab名列表 |
platforms |
1,2,3,4 | 策划 | 支持平台 |
lowVersion |
1.5.61.25 | 策划 | 最低版本 |
操作:
- 打开 Excel,找到对应 sheet
- 末尾新增一行,填写字段
- 保存
- 执行导表
导表命令:
1 | cd D:\LetsGoEditor\Editor\letsgo_common |
验证:检查 server/data/ActivityMainConfigForLetsGo_common.txt 中是否有新增的 id: 30999
Step 3: UMG 蓝图协调
谁做:美术创建蓝图 + 你设置 View 属性
3a. 跟美术沟通
告诉美术以下信息:
1 | 1. 蓝图名:UI_ActivityTemplate_ExchangeLinearView(或自定义实例名) |
💡 如何确定 Widget 清单:打开对应模板的 Lua 源码,搜索
self.bp.w_即可找到所有引用的 Widget 名
3b. 美术交付后,你做的事
- 打开 UMG 蓝图
- 确认父类是
MoeLuaWidget - 设置 View 属性:
1
Feature.System.Script.System.Activity.Public.Template.View.UI_ActivityTemplate_ExchangeLinearView
- 确认每个 Widget 名称拼写正确(区分大小写)
- 保存蓝图
Step 4: 编写实例代码(如需自定义逻辑)
判断:
| 情况 | 写不写代码 |
|---|---|
| 模板功能完全满足,只换美术 | ❌ 不写 |
| 需要自定义按钮交互、数据处理 | ✅ 写实例 |
如果需要写:
4a. 创建目录
1 | Instance/SpringExchange/ |
4b. 注册子模型路径
在 Public/ActivityModelPath.lua 中添加:
1 | ["Activity_Instance_SpringExchange_Model"] = "Feature.System.Script.System.Activity.Instance.SpringExchange.Model.Activity_Instance_SpringExchange_Model", |
4c. 创建子模型
1 | local Activity_Instance_SpringExchange_Model = _MOE.class( |
4d. 创建实例视图
1 | local Parent = require("Feature.System.Script.System.Activity.Public.Template.View.UI_ActivityTemplate_ExchangeLinearView") |
4e. 修改配置表指向实例
配置表 activityUIDetail 改为:UI_ActivityInstance_SpringExchange
在 UIWndNameToLuaPath.lua 中注册:
1 | ["UI_ActivityInstance_SpringExchange"] = "Feature.System.Script.System.Activity.Instance.SpringExchange.SubView.UI_ActivityInstance_SpringExchange", |
Step 5: 导表
1 | cd D:\LetsGoEditor\Editor\letsgo_common |
验证:
- 无报错
server/data/ActivityMainConfigForLetsGo_*.txt中包含新活动ID
常见导表错误:
道具1300001不存在→ 配置表引用了不存在的道具ID,找策划确认commodityId不唯一→ 商城商品ID重复,找策划确认
Step 6: PIE 测试
打开 UE4 编辑器 → Play(PIE)
测试清单:
| # | 测试项 | 怎么测 | 预期结果 |
|---|---|---|---|
| 1 | 活动显示 | 大厅→活动中心→对应Tab | 活动图标/名称正确显示 |
| 2 | 进入界面 | 点击活动 | 线性兑换界面正常打开 |
| 3 | 标题 | 看界面顶部 | 活动名称正确 |
| 4 | 背景图 | 看界面背景 | 背景图加载成功 |
| 5 | 时间显示 | 看时间区域 | 开始-结束时间正确 |
| 6 | Tab页签 | 看Tab区域 | clientParams配置的Tab名正确 |
| 7 | 任务列表 | 切到任务Tab | 任务正确显示,可领奖 |
| 8 | 兑换商店 | 切到兑换Tab | 商品正确显示,可兑换 |
| 9 | 兑换功能 | 点击兑换按钮 | 扣道具→发奖励→刷新列表 |
| 10 | 红点 | 看活动入口 | 有新内容时显示红点 |
| 11 | 返回再进 | 返回→再次进入 | 数据保持,不重置 |
| 12 | 日志 | 看 Output Log | 无 Lua 报错 |
常见问题排查:
| 现象 | 原因 | 解决 |
|---|---|---|
| 活动不显示 | tagId/suspend/时间配置错误 | 检查配置表 |
| 界面打不开 | UMG View属性未设置 | 蓝图中设置View=Lua路径 |
| 标题不显示 | UMG缺少w_txt_title | 蓝图中添加Widget |
| 背景图不显示 | backgroundUrl地址错误 | 检查CDN地址 |
| 兑换列表为空 | activityShopType错误 | 检查商城mallId |
| 任务为空 | activityTaskGroup错误 | 检查任务组ID |
| 按钮无反应 | Widget名不匹配 | 对照模板源码检查名称 |
| 子模型nil | ActivityModelPath未注册 | 检查key大小写和路径 |
Step 7: 交付与提交
代码提交:确认以下文件已修改
- 配置表 Excel(策划也改了的话确认一致)
ActivityModelPath.lua(如注册了子模型)UIWndNameToLuaPath.lua(如注册了实例视图)- 实例 Lua 文件(如创建了)
UMP 蓝图:确保已保存
通知策划:告知活动已实现,请配置服务端数据并测试
三、流程总览图
1 | 策划给需求 |
四、实际案例演示
假设策划给你这样一个需求:
做一个”夏日兑换”活动,玩家完成任务获得积分,积分在线性轨道上兑换奖励。有两个Tab:每日任务和兑换商店。活动时间 7/20-8/20。
你的操作:
| 步骤 | 操作 | 结果 |
|---|---|---|
| Step 1 | 分析:线性兑换+任务+多Tab → 选 ExchangeLinearView 模板 |
模板确定 |
| Step 2 | 跟策划确认:活动ID=30999, 任务组=570011, 商城=142 | 配置参数确认 |
| Step 3 | Excel 填写一行,activityUIDetail=UI_ActivityTemplate_ExchangeLinearView,clientParams=["每日任务","兑换商店"] |
配置表完成 |
| Step 4 | 跟美术沟通蓝图Widget清单,美术创建蓝图后你设View属性 | UMG完成 |
| Step 5 | 模板功能完全满足,不写代码 | 代码零修改 |
| Step 6 | 导表 | 导表成功 |
| Step 7 | PIE 测试 12 项全通过 | 测试通过 |
| Step 8 | 提交 | 完成 |
✅ 整个开发只花了:填配置表 + 设UMG View属性 + 测试,零代码编写
本文从 LearnByCompany 原始文档 自动同步。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 岁迹!
