首页 / UNITY / Unity 消息机制
Unity 消息机制
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Unity 消息机制,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2283字,纯文字阅读大概需要4分钟。
内容图文
最近有新项目需要和同事合作开发,他做UI 我做网络层,做着做着发现
如果我们要相对独立完成自己的开发任务,那我们的代码耦合得减少,不然
一个人代码有大改的时候,另一个人也要进行大幅修改,这样不便于后期开发维护。
然后做了一个简单的消息机制。
总的来说是用了一个委托的方式解决的
这是消息管理, 负责添加\删除 监听者,和分发消息的
using System.Collections.Generic; public class MsgHandler { public delegate void DelMsgHandler(Msg msg); private static Dictionary<string, DelMsgHandler> mDicMsgs = new Dictionary<string, DelMsgHandler>(); /// <summary> /// 添加监听者 /// </summary> /// <param name="msgType"></param> /// <param name="handler"></param> public static void AddListener(string msgType, DelMsgHandler handler) { //判空 if (mDicMsgs == null) mDicMsgs = new Dictionary<string, DelMsgHandler>(); if (!mDicMsgs.ContainsKey(msgType)) mDicMsgs.Add(msgType, null); //增加监听 mDicMsgs[msgType] += handler; } /// <summary> /// 去除对参数handler的监听 /// </summary> /// <param name="msgType">消息类型</param> /// <param name="handler">被监听方法</param> public static void RemoveListener(string msgType, DelMsgHandler handler) { if (mDicMsgs != null && mDicMsgs.ContainsKey(msgType)) mDicMsgs[msgType] -= handler; } /// <summary> /// 清除所有的监听者 /// </summary> public static void ClearAllListeners() { if (mDicMsgs != null) mDicMsgs.Clear(); } /// <summary> /// 分发消息 /// </summary> /// <param name="msgType">消息类型</param> /// <param name="msg">分发的内容</param> public static void SendMsg(string msgType, Msg msg) { DelMsgHandler handler; if (mDicMsgs != null && mDicMsgs.TryGetValue(msgType, out handler)) { if (handler != null) handler(msg); } } /// <summary> /// 群发消息 /// </summary> /// <param name="msg">消息内容</param> public static void AllSendMsg(Msg msg) { foreach (var item in mDicMsgs) { item.Value(msg); } } } public class Msg { public string Key { get; private set; } public object Value { get; private set; } public Msg(string key, object value) { this.Key = key; this.Value = value; } }
这是监听类, 负责监听
public class MsgReceive : MonoBehaviour { private void Awake() { MsgHandler.AddListener("MsgReceive", HandleMsg); } private void HandleMsg(Msg msg) { } private void OnDestroy() { MsgHandler.RemoveListener("MsgReceive", HandleMsg); } }
原文:https://www.cnblogs.com/DGJS/p/15149190.html
内容总结
以上是互联网集市为您收集整理的Unity 消息机制全部内容,希望文章能够帮你解决Unity 消息机制所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。
来源:【匿名】