红点大家一定不陌生,不管是游戏还是软件,甚至是手机系统都通过红点的直观方式来告知用户或者玩家,你有新的消息,请注意查收。
红点系统是一个比较让人讨厌的系统,至少对于游戏开发人员来说,是的。因为涉及的地方多,层次深,逻辑判定复杂,表现多样,有的需要服务器判定,有的需要客户端判定,所以处理起来十分麻烦。
经历过的几个项目,都因为前期没有针对红点系统做整体规划,所以后期就栽在红点的需求和表现上,有3-4套红点系统并行,重构了1次仍然不能从根本上解决,但总的来说已经好很多了。
如上图所示,规划红点系统的时候,我们将整个系统分为独立的三个部分:结构层、驱动层和表现层。
结构层用来部署红点的层级结构,做过红点系统的都知道,很多时候红点系统的层级都很深,所以我们要用一个结构来描述层级,这个就是我们今天的主题,树结构。
驱动层是指,如何驱动这个树结构产生状态变化,以及状态变化之后如何将变化的行为通知到指定的表现层,在一定的程度上将数据和表现分离开。
表现层就专门承担表现的职责,比如有的红点就是一个单纯的红点,有的需要显示数字,有的可能是图标晃动,有的是显示new标签,有的是播放特效等等。这些都可以归属在表现层统一去管控。
红点系统管理类
红点物体
红点数据类型---基类
未读邮件红点判断逻辑 --- 系统红点
未读邮件红点判断逻辑--- 玩家红点
红点类型的枚举
邮件系统管理类