Unity游戏UI框架(七):消息传递中心
来源:互联网 发布:青岛中山路美食 知乎 编辑:程序博客网 时间:2024/06/05 18:54
Unity游戏项目中存在多种数值(消息)的传递方式,但是大多数的消息传递方式,耦合性太高造成项目模块的“复用性”降低,采用“消息中心”的思想,开发类似“发邮件”、“收邮件”的机制,来彻底杜绝脚本之间(游戏对象、UI窗体之间)强耦合现象。
将消息通知进行统一管理分发,注册好处理函数,然后在需要时通知消息中心(MessageCenter)进行触发
/// <summary>/// 消息(传递)中心/// 负责UI框架中,所有UI窗体中间的数据传值/// </summary>public class MessageCenter{ /// <summary> /// 委托:消息传递 /// </summary> /// <param name="kv"></param> public delegate void DelMessageDelivery(KeyValuesUpdate kv); /// <summary> /// 消息中心缓存集合 /// <string : 数据大的分类DelMessageDelivery数据执行委托> /// </summary> public static Dictionary<string, DelMessageDelivery> _dicMessages = new Dictionary<string, DelMessageDelivery>(); /// <summary> /// 增加消息的监听。 /// </summary> /// <param name="messageType">消息分类</param> /// <param name="handler">消息委托</param> public static void AddMsgListener(string messageType,DelMessageDelivery handler) { if (!_dicMessages.ContainsKey(messageType)) { _dicMessages.Add(messageType, null); } _dicMessages[messageType] += handler; } /// <summary> /// 取消消息的监听 /// </summary> /// <param name="messageType">消息分类</param> /// <param name="handele">消息委托</param> public static void RemoveMsgListener(string messageType, DelMessageDelivery handele) { if (_dicMessages.ContainsKey(messageType)) { _dicMessages[messageType] -= handele; } } /// <summary> /// 取消所有指定消息的监听 /// </summary> public static void ClearALLMsgListener() { if (_dicMessages != null) { _dicMessages.Clear(); } } /// <summary> /// 发送消息 /// </summary> /// <param name="messageType">消息的分类</param> /// <param name="kv">键值对(对象)</param> public static void SendMessage(string messageType,KeyValuesUpdate kv) { DelMessageDelivery del = null; if (_dicMessages.TryGetValue(messageType,out del)) { if (del != null) { //调用委托 del(kv); } } }}/// <summary>/// 键值更新对/// 功能: 配合委托,实现委托数据传递/// </summary>public class KeyValuesUpdate{ private string _Key; private object _Values; /* 只读属性 */ public string Key { get { return _Key; } } public object Values { get { return _Values; } } public KeyValuesUpdate(string key,object valueObj) { _Key = key; _Values = valueObj; }}
阅读全文
1 0
- Unity游戏UI框架(七):消息传递中心
- Unity游戏UI框架(一)
- Unity中游戏体的消息传递
- Unity游戏开发 全局消息传递
- Unity游戏UI框架(五):配置管理
- Unity游戏UI框架(六):日志系统
- Unity 游戏框架搭建 (七) 减少加班利器-QApp类
- Unity 游戏框架搭建 (七) 减少加班利器-QApp类
- Unity 游戏框架搭建 (七) 减少加班利器-QApp类
- Unity 游戏框架搭建 (七) 减少加班利器-QApp类
- Unity游戏UI框架(二):最简版本设计
- Unity游戏UI框架(三):窗体的层级管理
- Unity游戏UI框架(四):模态窗体管理
- Unity游戏UI框架(八):监听事件系统
- Unity游戏UI框架(九):实现多语言管理
- Unity 游戏框架搭建 (五) 简易消息机制
- Unity 游戏框架搭建 (五) 简易消息机制
- 《Unity 3D游戏客户端基础框架》消息系统
- 哈夫曼树 (c语言)数据结构
- Valgrind内存泄漏检查及定位利器
- Eclipse搭建HTML5开发环境
- 和数能表示1~23的5个正整数
- TensorFlow入门程序-线性回归
- Unity游戏UI框架(七):消息传递中心
- javascript 面向对象(六)原型的特性和作用
- Windows 系统下配置 pyrouge
- 接口测试入门
- 系统测试——基础知识
- 459. Repeated Substring Pattern
- windows 配置不同版本JDK
- nginx简单配置
- 《C++ primer》读书规划 I