在游戏中会存在着大量的红点,告诉玩家对应的系统有奖励领取或者,体力满足,活动状态等。
整个游戏就就如同一颗树,主场景就类似根,面板上的各种系统和活动就是对应的子树。每个系统又有可能存在0~n个子系统,结构如图,就是一颗倒立的树,画的比较丑,莫见怪^.^:
从图中可以看出每个系统都类似一颗颗子树。玩过游戏的都知道。当子系统有红点,那么他的上一级,上上级都要显示红点,这样玩家在主面板看到对应系统icon上显示了红点就知道内部有可领取或可操作的东西。
这里只提供本人的思路,需要红点变化的地方只要监听RED_REFLASH_EVENT就可以:
1.1.红点管理类 RedManager 管理所有注册进来的红点。注册到一个redPoints表中
1.2.需要一个因事件变更,收集因这个事件变更的红点的表。reflashReds = {}
比如等级变化 导致升级面板红点更新 头衔满足等级需求可激活红点,那么就要将这两个redPoint添加进reflashReds表中
1.3.唤醒timer 执行update方法 ,方法中如果发现reflashReds中有数据 就要一一移除进行check检查红点变化。如red = reflashReds[1] red:check() table.remove(reflashReds,1)
1.4.当update执行一定次数 比如3次就post一次RED_REFLASH_EVENT事件
1.5.提供两个get方法分别获取redPoint对象和redPoint数量
大致图就这样 好丑的图:
2.1.红点节点RedPoint:每个红点有红点名称name,有0~n个子红点用childs = {},需要注册到红点管理器中,需要添加到父红点中
2.2.需要提供一个get红点数量的方法
2.3.需要一个用于检查红点变化的方法 check(),如果红点发生变化更新redNum并返回true 否在false
3.1每个系统红点类:如RedRoleSys
整理的可能各位大佬看不明白,请见谅,用于自己梳理记录。