小红点系统

模块预览图:

图1

图2

图1为子层,图2为主层,当子层拥有信息时,往主层通知。
思路:子层绑定主层。当消息状态来了,通知主层,主层亮起红点。这就意味着,我们要把这个系统写成树形结构。

首先我们要有个根节点,根节点下有许多子节点,子节点下又会拥有许多子节点。这点必须要清楚。
理清上面关系后,开始整理代码

首先:

我们需要创建和绑定根节点

当我传入的第一个节点是空的,那么默认设置它为根节点,否则就会往它下面增加子节点

再然后就是一个创建普通节点的重载方法

这里我们会通过它的Key去找到对应的父节点,找到后,往父节点下创建子节点。

然后我们的每个节点都会有个小红点,所以我们需要把对应的节点绑定对应的UI。包括节点的获取

public class BaseNode{public string key;public BaseNode parent;public BaseNode rootNode;public bool nodeValue;public bool localValue;public GameObject ui;public List<BaseNode> childNode_list = new List<BaseNode>();public BaseNode() { }public BaseNode(string urlKey, bool value){this.key = urlKey;this.nodeValue = value;}/// <summary>/// 根据Key找到父节点/// </summary>/// <param name="nKey"></param>public void AddChild(BaseNode node){if (!this.childNode_list.Contains(node)){this.childNode_list.Add(node);node.parent = this;}this.Update();}protected void Update(){this.nodeValue = this.localValue;if (!this.localValue){for (int i = 0; i < this.childNode_list.Count; i++){this.nodeValue |= this.childNode_list[i].nodeValue;}}UpdateUI();if (this.parent != null){this.parent.Update();}}public void SetValue(bool vals){this.localValue = vals;Update();}private void UpdateUI(){if (ui != null){ui.SetActive(this.nodeValue);}}public void BindUI(GameObject ui){this.ui = ui;UpdateUI();}}

上面的代码是节点类,这节点类里面包含它所有的子节点,同理,如果是子节点,那么它也会包含它所有的子节点。

AddChild : 添加节点,当我们需要动态添加节点,可添加进入后调用Update的更新节点
this.localValue : 表示当前节点的状态,true是亮起,false是熄灭。都会调用Update去更新
BindUI:绑定节点对应的小红点,通过 SetValue 来控制状态

大致就是这样,不是很难,当初我竟然想去写二叉树,脑袋秀了

UI层的信息推送,小红点系统相关推荐

  1. 信息推送分发服务器系统,消息事件的分发方法、分发平台、系统及服务器专利_专利查询 - 天眼查...

    1.一种消息事件的分发方法,其特征在于,包括:如果监测到消息发布服务发布的消息事件,获取预先存储的配置信息:其中,所述配置信息包括所述消息发布服务,以及所述消息发布服务对应的至少一个消息订阅服务:根据 ...

  2. 基于位置服务的信息推送系统设计

    1.1  研究目的与意义 随着空间信息技术和网络技术的快速发展,普通的地图信息展示已经无法满足人们的需求.GIS(Geographic Information System)作为拥有处理和分析空间信息 ...

  3. 微信公众号信息推送实现业务解耦

    序 最近第三方服务需要增加微信模板信息推送能力,要与业务系统解耦.微服务架构的springCloud下第三方服务增加能力. 一.技术选型 看了下微信公众号的信息推送开发文档,发现不难,就是一个个接口对 ...

  4. bmob云服务器信息推送,FAQ-Bmob后端云

    Q: Bmob 平台是做什么的? A: Bmob 是多租户无模式的移动应用云服务,它可以让 android/IOS/WP 等移动开 发者无需掌握任何一门服务器开发语言(如 JAVA/PHP 等),将注 ...

  5. Github系列之二:开源 一行代码实现多形式多动画的推送小红点WZLBadge(iOS)

    更新日志 V1.2 2015.09.25 1.UITabBarItem badge is supproted; 2.Enable change badge properties when badge ...

  6. php 微信客服信息推送失败 微信重复推送客服消息 40001 45047

    1 /*** 2 * 微信客服发送信息 3 * 微信客服信息推送失败 微信重复推送客服消息 40001 45047 4 * 递归提交到微信 直到提交成功 5 * @param $openid 6 * ...

  7. 钉钉 php 推送,微信模板推送,钉钉信息推送

    上午的时候看到有朋友需要微信推送,正好我也需要,之前一直用 Server 酱的,但是最近用不了,想找一个替代品,一开始准备选择钉钉,除了打卡,我很少使用钉钉,邮件提醒是备用方案,其实和 Server ...

  8. 微信开发3之php模板信息推送

    模板信息推送:需要在后台开通了模板消息推送接口 PHP代码如下: <?php $appid="wxxxxxxxxxxxxxxxxxx"; //填写微信后台的appid $ap ...

  9. 【imessage群发苹果推信】[iMessageSuspic](Apple推送服务)使用信息推送服务

    Apple信息推送服务(ApplePushNotificationservice), 由Apple根据官方新闻服务提供. 交货包括顶部,声音和Badgenumber比例指南(),应用程序可以在任何条件 ...

最新文章

  1. 【iOS】Mapkit的使用:地图显示、定位、大头针、气泡等
  2. python文本替换 数据库_Python pptx(Power Point)查找和替换文本(ctrl+H)
  3. php python 函数互相翻译的网站
  4. android 观察者更新ui,android通过观察者模式实现更新UI
  5. 阿里云ECS在CentOS 6.9中使用Nginx提示:nginx: [emerg] socket() [::]:80 failed (97: Address family not supported
  6. AT2371-[AGC013E]Placing Squares【矩阵乘法】
  7. LeetCode 837. 新21点(动态规划)
  8. [转]linux之top命令
  9. 硅谷还是程序员的“圣地”吗?
  10. 第三届 Apache Flink 极客挑战赛暨 AAIG CUP 攻略发布!
  11. VS中javascript注释快捷键
  12. dubbo接口调试工具
  13. 老男孩教育33期周末班-决心书
  14. RSF 分布式 RPC 服务信息的暴露
  15. 苹果录屏功能没有声音_手机录屏没有声音如何处理?可以从这三个方面入手看看...
  16. ppt文件太大如何压缩变小?
  17. Windows下控制网络连接的常用命令
  18. 十、纺织品库存管理系统全部功能展示
  19. php 原理 淘口令 解密_淘口令解析 - super19911115的个人空间 - OSCHINA - 中文开源技术交流社区...
  20. 算法-动态规划-股票交易

热门文章

  1. 爱因斯坦的“读书会“
  2. 下发策略,DFA算法优化---敏感词查询
  3. 代理服务器搭建和加密传输
  4. CA6140车床法兰盘831004加工工艺及钻φ6孔夹具设计(说明书+CAD图纸+三维图)
  5. Java静态变量使用实例
  6. 工作负载(workloads)
  7. QT中改变坐标系方向和原点
  8. redis有序集合键(数据结构篇)
  9. Vue学习:事件修饰符
  10. JS基础知识(总结归纳)(常识笔记)