游戏签到奖励系统开发教案(30天签到+连续签到功能)
课程主题:游戏签到奖励系统开发(30天签到+连续签到功能)
适用对象:已掌握基础脚本编写、UI界面搭建及变量存储的游戏开发者(需熟悉CSV读表、容器布局、事件触发等基础操作)
课时:1课时(45分钟)
一、课程目标
通过本节课学习,掌握游戏中“30天签到奖励系统”的全流程开发方法,能够独立完成以下任务:
- 搭建30天签到界面(含日期显示、奖励预览、已签到状态标记);
- 编写脚本实现签到逻辑(判断是否已签到、发放奖励、记录签到状态);
- 实现连续签到功能(统计连续签到天数、发放额外奖励);
- 处理补签功能(弹窗提示、扣除元宝、补签操作);
- 排查界面布局、变量作用域、读表错误等常见问题。
二、重点知识讲解
模块1:签到界面搭建
1. 界面结构设计
- 核心容器:使用“列表容器”作为主框架(尺寸建议:宽580,高330),内部嵌套“基础容器”用于布局签到项;
- 签到项布局:每个签到项包含日期文本(如“第1天”)、奖励预览(物品图标+数量)、已签到状态标记(如“已完成”图标);
- 坐标调整:通过循环计算每个签到项的X/Y坐标(如每行6个,X坐标=10+80×列索引,Y坐标=10+120×行索引),确保排列整齐。
2. UI元素配置
- 日期文本:绑定CSV表中“天数”列(如第1天→第30天);
- 奖励预览:从物品表(item)读取奖励ID、名称、数量,通过“物品框”组件显示;
- 已签到标记:使用“图片组件”,默认隐藏,签到后显示“已完成”图标(如“check.png”)。
模块2:签到脚本逻辑
1. 初始化与读表
- 全局变量声明:使用T变量(如T90)存储签到状态(主键为天数,值为“已签到”);使用U变量(如U90)存储连续签到次数;
- 读表逻辑:在
loading
触发中读取CSV表(签到奖励表),获取30天的奖励配置(物品ID、数量);
- 状态校验:进入签到界面时,通过
GetVariableValue
获取T90中当前天数的签到状态,判断是否已签到(提示“已签到”或允许操作)。
2. 签到核心逻辑
- 点击签到触发:为“签到按钮”绑定
OnClick
事件,参数为当前天数(如点击第5天,参数=5);
- 条件判断:
- 若当前天数>开服天数(通过常量
开服day
判断),提示“未到签到时间”;
- 若已签到(T90中存在记录),提示“今日已签到”;
- 否则,发放奖励(
GiveItem
),并记录签到状态(SetVariableValue(T90, 天数, "已签到")
)。
3. 连续签到逻辑
- 连续签到判断:点击签到后,获取前一天(参数-1)的签到状态(T90中查询);
- 连续签到计数:若前一天已签到,U90(连续签到次数)+1;否则重置U90=1;
- 连续奖励发放:若U90达到目标值(如2天、5天、12天),发放额外奖励(从连续奖励表读取),并标记奖励已领取(T90记录“连续签到第X天已领取”)。
模块3:补签功能实现
1. 补签触发:在签到界面添加“补签”按钮,点击后弹出确认窗口(ShowMessage
);
2. 条件校验:
- 检查当前天数是否≤开服天数(避免补签未来天数);
- 检查是否已补签过(T90记录“第X天已补签”);
- 检查元宝是否足够(
CheckMoney(元宝, 50)
);
3. 补签操作:
- 扣除元宝(
ChangeMoney(元宝, -50)
);
- 发放当日奖励(
GiveItem
);
- 记录补签状态(
SetVariableValue(T90, 天数, "已补签")
);
- 刷新界面(重新加载签到项状态)。
模块4:常见问题与排查
问题现象 |
可能原因 |
解决方法 |
签到项排列错乱 |
容器尺寸过小/坐标计算错误 |
调整列表容器尺寸(如宽600),重新计算X/Y坐标(每行6个,X=10+80×列索引) |
签到状态未保存 |
T变量未正确设置主键/值 |
检查SetVariableValue 参数(主键=天数,值=“已签到”) |
连续签到次数未累加 |
未获取前一天签到状态(T90查询错误) |
确认前一天参数(参数-1)是否正确,检查T90中是否存在前一天记录 |
补签弹窗无响应 |
ShowMessage 指令参数错误(如按钮文本未设置) |
检查弹窗参数(标题、内容、确认/取消按钮文本) |
三、实战任务(课后练习)
- 基础签到功能:
- 搭建30天签到界面(含日期、奖励预览、已签到标记);
- 编写脚本实现签到逻辑(发放奖励、记录状态、判断是否已签到)。
- 连续签到功能:
- 统计连续签到天数(U90变量);
- 达到目标连续天数(如2天、5天)时发放额外奖励。
- 补签功能:
- 添加补签按钮,实现弹窗确认;
- 校验元宝是否足够,扣除元宝后补签并刷新界面。
四、总结与注意事项
- 核心规则:
- 签到状态需通过T变量长期存储(主键为天数,值为“已签到”/“已补签”);
- 连续签到次数通过U变量动态更新(每次签到时检查前一天状态);
- 界面布局需提前计算容器尺寸与坐标,避免元素重叠或错位。
- 优化建议:
- 使用“九宫格”优化图片显示(避免拉伸失真);
- 封装通用函数(如
CheckSignInStatus(day)
),减少重复代码;
- 测试时使用“范围刷怪”工具模拟多玩家场景,验证签到逻辑稳定性。
课后思考:如何实现“累计签到奖励”(如累计签到10天送稀有道具)?(提示:新增T变量记录累计天数,达到阈值时触发奖励发放。)