欢迎 来到 王国聪的博客!
小红点系统
模块预览图:
内部小红点-图1:
外部父节点-图2:
图1为子层,图2为主层,当子层拥有信息时,往主层通知。
一般的思路是:子层绑定主层。当消息状态来了,通知主层,主层亮起红点。这就意味着,我们要把这个系统写成树形结构。这样我们就会在主层和子层都要写小红点
但是我们使用事件系统和单例模式改造一番。
用一个小红点管理器类(单例)来做监听器,注册事件,调用事件。
1 | private class Listener//这儿是监听 |
但是游戏中一般模块众多,如果直接通用全部注册在类里(随着游戏迭代会冗余),会导致调用时越来越缓慢。
我们可以用一个类定义一个最基本的小红点属性,方法,然后每一个模块小红点单独继承它,然后调用时,通过在父类里定义的每一个子类的枚举类型,直接调用到对应的类型里面去,避免了调用到其他模块去,尽可能解耦合。
1 | public enum RedPointType |
定义成类似的框架:
在使用时,就可以在父节点和子节点注册一个单独事件:对应的函数,对应的小红点类型,对应的小红点,然后在小红点触发的地方调用该事件。
v1.5.2