首页 / 资讯中心 / 文章详情

游戏签到系统

游戏签到系统 ★ FEATURED ARTICLE
分为几个模块配置模块。从Excel表导表工具序列化文件配置管理器。玩家数据。存本地则玩家数据有签到记录、玩家数据管理器。UI。签到面板、奖励格子、获得奖励界面、获得奖励格子。业务控制器。从配置管理器、玩家数据管理器拿数据准备UI参数显示和初始化UI。一个Excel配置文件记录每天的奖励需要能记录金币、各种道具、人物等各种物品。用导表工具导成json。还有相应的C#配置类。游戏要运营几年不可能把每天的奖励配好。奖励必然是循环的常见的有周循环和月循环。一个玩家签到记录文件记录玩家签到了哪些天UI一个面板需要自动布局组件。奖励格子。配套的视图类、参数类。一个控制器负责读取签到配置文件得到每天奖励的图标。读取玩家签到文件显示哪些天签过哪些天错过以及可以签的今天。领取奖励后弹出一个全屏窗口提示获得的奖励。最好预留显示多种奖励的能力弄一个自动布局组件。漏签规则和刷新周期签到漏签的时候有两种规则开放当天的签到漏签的可以花资源补签。适用于每天奖励差不多的。如果想弄一个大奖则可以弄一个一周完整签到的奖励累积签到漏签则签到进度落后之后的奖励拿不到。适用于最后一天奖励很大的刷新周期规则一周或一个月结束后刷新距玩家第一次签到后过一周、一个月后刷新等玩家签完一周期再刷新规则1就是说如果玩家第一次玩不在一周第一天那么他已经注定拿不完奖励。这样也行就是要在奖励下标注周一-周日。然后发现这种逻辑是绑定漏签规则1的你不能今天是周三然后开放周二的奖励。规则2则需要判断玩家一个周期第一次签到记录下玩家第一次签到的时间当前日期-第一次7天时刷新。这样玩家如果忘记了第一次签到是哪天也会对奖励刷新疑惑。虽然绝大多数玩家不会在意。漏签规则2匹配刷新规则3是另一种自洽逻辑。玩家一定能拿满奖励只是会晚一点。综上漏签规则和刷新周期其实是绑定的当天签到漏签则应该在一周或一个月的第一天刷新且奖励标明日期累积签到进度落后可以在拿满一周期奖励后刷新累积签到进度落后可以在一周、一个月开始时刷新但要标明是本周、本月签到玩家签到记录假设我们采用方案2。玩家漏签导致落后。玩家的签到记录怎么记录用列表还是字典如果用字典键是什么记录全部签到记录还是最近一个周期最简易的方式只记录上一次签到的配置ID。还有时间用于判断是否该解锁新奖励。只有规则2能这么做因为玩家最后一次签到之前的配置一定都签到了。虽然够用但感觉不严谨。然后如果用列表直接看最后一条就是最近的签到。但是测试的时候漏写了判断时间导致同一个签到ID出现了多个签到记录。总之要用列表就充分利用最后一条就是最近签到记录的特性否则列表没有优势。用字典如果用日期为键dateTime.ToString(yyyy-MM-dd);可以绝对避免一天的记录出现多次。我们要获得当前应该签哪天的到就是获得签到记录里ID最大的1.玩家签到记录是记录所有的还是当前签到周期加载到内存的应该是全部记录还是当前周期记录为了数据完整性应该记录全部签到记录。但是随着游戏运营几年签到记录数据量巨大肯定不会全加载的内存。应该是服务器拿到本周期的记录发给客户端。那么如果存本地应该怎么做应该签完一个周期后单独存一个文件以后打开游戏不再加载此文件。不过为了省事可以签过的周期就不记录了。那么逻辑就是签到记录只记录当前周期假如一周为周期则记录不超过7个。登录游戏检查当前和记录里最后一条是不是一周不是就清空记录。奖励状态逻辑先循环得到玩家签到记录里最晚的和当前时间比较是不是同一天。得到是否有奖励可领。如果奖励凌晨4点刷新就把最后签到时间和当前时间都-4小时比较是否是同一天。获取每个奖励的状态读取玩家签到记录把不属于本周的记录过滤掉。然后有记录的日期标记已领取无标记的和玩家最后的签到记录比较是否是id1。一个签到周期结束后的逻辑首先解决判定签到周期是否结束的问题。可以看玩家签到记录数不小于签到奖励数就算结束但判定结束后不要立即清空签到记录否则玩家刚签到完清空签到记录又可以领奖励。还是在判断当前可领奖励后判断签到记录是否已领满一周期是则清空签到记录。严格来说如果程序一直运行应该在进入新周期时0点或4点清空签到记录而不是玩家领完最后一次奖励时。签到调试工具需要做到显示签到记录把最近的记录前推一天以解锁新奖励清空签到记录测试环节签到一次然后打开签到窗口重新登录打开签到窗口确认不能再次签到修改时间把使用的当前时间往后推再次签到。如此重复直到完成一个签到周期签到状态归零开始下一个周期。把当前时间改成2天、3天后验证漏签后无法拿满奖励的情况。public DateTime Now { get { #if UNITY_EDITOR return DateTime.Now.AddDays(RootSO.Single.SigninTestOffset); #else return DateTime.Now; #endif } }和其他进入大厅弹出面板的冲突依次弹窗框架发现注册新玩家后进入大厅同时弹出了开场介绍面板和签到面板。这些面板应该一个结束后弹出下一个。面板关闭时执行一个委托。而且只有进入大厅自动弹出的这一次执行。然后好像要给大厅控制器弄一个ListUnityAction控制器在显示一个面板时把下一个委托塞给它的关闭回调。但是UnityAction又没有指定是加载面板一定有关闭回调。那么窗口基类弄一个委托onCloseList窗口基类循环把下一个弹窗的显示加入上一个的关闭回调。窗口现在是用MVC的由它的控制器准备参数显示窗口输入参数。那么只能把控制器也接口化IUIController实现同一个ShowPanel方法。再弄一个set属性传入委托。本来想把ShowPanel加个参数输入委托发现这样只能在传入时立刻显示窗口无法做成一个窗口关闭打开下一个窗口的链式。那么把IUIController增加一个设置onClose的属性把外面传入的委托寄存在控制器的成员。ShowPanel时传入。然后发现越来越框架化面板、面板参数、控制器、配置管理器全部有抽象类或接口。
阅读完成 · 觉得有帮助?
咨询建站