游戏内红点系统设计

游戏内红点系统设计

红点系统设计的初衷就是为了提示用户。通过红点系统所构建的一个个红点路径,将玩家重最外层引导到最里层。

常见的应用场景有:提示玩家有新邮件,完成新的成就,达成某项任务,可以进行升级等等。 通常红点系统所构建的路径都是连续的。

红点的种类

常见的红点
红点大致上可以分为表现及逻辑。

从表现上来说

红点可以是一个简单的红点,或者是长得并不像红点的感叹号、文本、动画特效等等。 总之是给用户一个提醒的内容。

策划可能会基于提示的优先级(毕竟全强调就是没强调),趣味性及功能性安排这种“红点”的表现。

表现上的处理可以自行封装表现,或者直接在对应界面上添加自定义的红点表现,然后等宏定数据变化后通过回调或者事件的方式再变更界面表现。

从逻辑上说

红点最基础的两个状态为显示及隐藏。
另外还有其他信息的展示例如红点的数量等。

代码实现

分析过后其实发现红点结构就是一个树形结构,还是个前缀树。 代码可以参考下面的链接。

树的应用(一)- 基于TrieTree(前缀树)的红点系统
【游戏开发实战】手把手教你在Unity中使用lua实现红点系统

另外由于前缀树的操作会对字符串做分割的操作,这样会导致性能问题。 为了解决字符串切割的问题可以对字符串的使用做优化。 下面这篇文章使用 RangeString(对string的封装,更方便的作为前缀树字段中的键来使用)。

基于前缀树的红点系统

另外由于前缀树种的叶节点进行数据变更时需要更新父节点的数值。 由于大量的子节点刷新会导致父节点的无效刷新,所以有以下两个策略。

  1. 添加一个存储脏节点池子。 当子节点数据变更后将其父节点放入脏池子。 然后由外部的Update进行触发更新,遍历脏节点池子让其查询自己的值。
  2. 在每个节点上添加脏标记。 当子节点数据变更后顺着父节点的路径一路标记所有的节点为脏。 等触发更新操作后再由根节点从上至下进行查询被标记为脏的节点并进行更新。

第一种策略可能需要几帧的时间进行更新操作,性能上没有什么消耗而且分在不同的帧内处理更加平滑。但是稍微不是那么的及时,但是对通常游戏也没有多少影响。
第二种策略既可以由Upate触发更新,也可以手动触发。如果需要计算比较及时的可以用。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity红点系统是一种常用的游戏UI设计,主要用于提醒玩家当前有新的任务、奖励或其他未读信息需要处理。下面是一个简单的Unity红点系统设计: 1. 定义红点控件:在UI界面中添加一个红点控件,通常是一个小圆点或小数字。该控件需要有一个唯一的名称,用于后续的操作。 2. 定义红点数据结构:为每个需要红点提醒的功能定义一个红点数据结构,包含以下信息: - 功能名称:用于标识该功能。 - 红点控件名称:与UI界面中的红点控件名称对应。 - 是否需要红点提醒:标识该功能是否需要红点提醒。 - 红点数量:如果需要显示数字红点,则需要记录具体的数量。 3. 定义红点管理类:创建一个红点管理类,用于管理所有的红点数据和UI界面上的红点控件。该类需要提供以下功能: - 添加红点数据:向红点管理类中添加新的红点数据。 - 更新红点状态:根据红点数据中的信息,更新UI界面上对应的红点控件状态。 - 监听红点变化:提供回调函数,当某个红点数据的状态发生变化时,通知相应的UI界面进行更新。 4. 使用红点系统:在需要使用红点系统的地方,调用红点管理类的方法添加红点数据和监听红点变化。当红点数据的状态发生变化时,红点管理类会自动更新UI界面上的红点控件状态。 通过以上步骤,就可以实现一个简单的Unity红点系统。当玩家有新的任务或奖励时,红点控件会自动提醒玩家,增强了游戏的交互性和用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值