经典面试题:“你们的项目中是如何做红点系统的“?

面试官你好,红点是复杂游戏必备的提醒玩家与推进玩家游戏进程的工具与手段,在项目中非常常用。
每个公司的项目的需求不同,设计的方式和结构可能不一样,我们公司之前的某个项目是这样做的。

红点显示需求:
(1) 红点要和常规的UI界面分离开来,同时红点要不能打乱UI界面的Drawcall合批;
(2) 红点使用节点池来做好创建与回收;

红点的数据需求:
(1)某个系列的红点可能由多个层级,比如邮件,第一层是邮件,第二层由系统邮件与好友邮件。
当好友邮件数目变化的时候也会引起第一层邮件的数目显示,我们采用树形结构来维持红点的层级关系与管理。
这部分我们叫做层级红点
(2)某个列表的内容,可能需要红点来提示,让玩家去操作,这部分我们叫做内容红点,在显示内容的时候创建一个红点,
不用的时候回收这个内容红点。内容红点与层级数据无关。
开发需求:
项目的后期再加红点,所以红点的添加要尽量与项目开发无关;
数据需求,层级需求是最明确的,一般和新手引导一起做;

对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀

针对以上需求,我们项目做的设计方案:
(1)将层级管理的红点做好层级红点关系,
{ layerId: 层级Id, redNum: 红点数目, parent: 父亲层级,children: 它下面的子层级}
当我们改动某个孩子的时候,这个系列的红点数目也会跟着改变。
我们提供一个显示某个层级红点的接口,如果哪些地方需要显示哪个层级红点,我们只要调用显示的接口就可以了。
数目这些都是统一管理。比如我们在主页,要显示第一层邮件的数目,只要调用红点模块的显示接口,显示邮件第一层级对应的LayerId的红点。
(2) 显示一个任务列表,任务列表的某项内容需要一个红点提示的时候,我们调用内容红点接口,创建一个红点节点出来。
后面再回收回来。
(3)每个界面UI,我们搞一个专门显示红点的函数,用来维护显示当前界面的所有红点(也可以通过界面上挂脚本的方式)。
(4)红点的层级关系,我们可以来自服务器,对于单机游戏,可以来自本地配置表;
(5)红点层级中的红点数目数据,可以来自服务器计算,单机游戏来自存放在本地数据构建出红点数据。

以上是我们项目中做红点设计的 一些主要的做法与思路。具体细节,沟通中再相互交流;

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值