红点系统最简版

红点系统最简版

红点系统是无论任何一款游戏中,都比较重要的模块。常用于提醒玩家还有哪些待做项没有做,以及新系统开放提醒玩家前体验。但由于游戏复杂多变的项目需求,红点系统往往难以很好的适配。所以我学习整理了一款比较简单的红点系统放在这里,全权当作抛砖引玉。

结构

不管任何系统,都要先确立好结构。接下来所有的业务开发都将围绕着已确立好的结构进行,这样不仅有利于我们建立起清晰的代码逻辑,也方便我们后续排查bug。我们的数据结构是一棵树,由于网上已经有很多这方面的介绍了,所以我也就不在这里解释了。
在这里插入图片描述

驱动层

驱动层的必须需求分为以下几种:

  1. 红点变化UI层表演通知注册
  2. 红点变化UI层表演通知注册移除
  3. 指定红点状态变化改变调用通知(传递红点id,红点状态)

驱动层与表现层息息相关,当一个新的UI界面生成时,它便需要将红点变化带来的动画效果改变注册到驱动层中,红点变化效果可以是常用的红点闪烁、也可以是震动等等美术希望实现的效果。当注册成功后,一旦红点状态发生变化,驱动层就会立即通知到表现层开始进行表演。
红点状态由各模块自己负责改变,驱动只负责通知即可。

数据层

正如前文所述,我们的红点系统是一棵树,子节点状态的变化将会带来父节点状态的改变。所以节点类的设计是重中之重。红点节点越简单,红点系统就越清晰。所以我对它的要求只有两点:一是树的构建,二是数据储存。所以对于它的数据结构,采取如下的最简设计:

  1. id
  2. 红点数量
  3. 父节点
  4. 子节点id列表
  5. 增加/移除子节点

在红点树中,子节点仅能由父节点生成。最顶层的节点以及模块入口节点,在配置表中进行配置,在红点模块初始化时进行基本的树的构建。例如在如下系统中
在这里插入图片描述
主界面与联盟和英雄的红点id将在配置表中进行配置,并在配置表配置好父子关系,以便于搭建基本的红点树。而其余的联盟信件、成员、英雄合成、信息、升级等等红点节点可以动态生成子节点来构建。

表现层

表现层不仅需要负责基本的红点展示,当有特殊的红点需求时,我们也应该写在表现层当中。例如每次进入游戏,首次进入时显示红点,以后进入时不显示红点。对于这种需求我们应该在驱动层做好红点状态变化的处理。
永远不要在数据层做特殊处理!

功能分析

经过以上分析,我们就能得出构建一个红点系统的基本功能:

  1. 红点树的初始化
  2. 生成动态子节点
  3. 子节点移除
  4. UI层表演变化函数注册
  5. UI层表演变化函数移除
  6. UI层表演变化函数调用通知
  7. 强制改变节点状态(状态由各模块自己负责,这里只负责接受状态的改变)

至此一个红点系统已经足够的清晰,代码网上很多,所以这里我按下不表。当然,由于游戏模块复杂需求的多变性,这个最简单的红点系统是远远不够的。我将继续整理学习,在后面的博客中分享。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值