0
点赞
收藏
分享

微信扫一扫

04_消息中心(MessageCenter)


一介绍

该消息中心是基于委托和事件(观察者模式)设计的,是 ​​MxFramework框架​​ 的一个子模块。 主要是为了处理消息的收发。

 

二、消息处理中心(代码如下)

/***
*
* Title: MXFramework
* 主题: 消息中心
* Description:
* 功能:负责消息的收发
*
* Date: 2020
* Version: v4.0版本
* Modify Recoder:
*
*/

using System.Collections.Generic;
using UnityEngine;
using System;

namespace Mx.Msg
{
/// <summary>消息中心</summary>
public class MessageCenter : MonoBehaviour
{
/// <summary>消息中心缓存集合</summary>
public static Dictionary<string, Action<string, object>> dicMessages = new Dictionary<string, Action<string, object>>();

/// <summary>
/// 添加消息的监听
/// </summary>
/// <param name="messageType">消息分组</param>
/// <param name="handler">消息委托</param>
public static void AddMsgListener(string messageType, Action<string, object> handler)
{
if(!dicMessages.ContainsKey(messageType))
{
dicMessages.Add(messageType, null);
}
dicMessages[messageType] += handler;
}

/// <summary>
/// 取消消息监听
/// </summary>
/// <param name="messageType">消息分组</param>
/// <param name="handler">消息委托</param>
public static void RemoveMsgListener(string messageType, Action<string, object> handler)
{
if(dicMessages.ContainsKey(messageType))
{
dicMessages[messageType] -= handler;
}
}

/// <summary>
/// 取消所有的消息监听
/// </summary>
public static void ClearAllMsgListener()
{
if(dicMessages!=null)
{
dicMessages.Clear();
}
}

/// <summary>
/// 发送消息
/// </summary>
/// <param name="messageType">消息分组</param>
/// <param name="key">消息名称</param>
/// <param name="values">消息体</param>
public static void SendMessage(string messageType,string key,object values)
{
Action<string, object> del;
dicMessages.TryGetValue(messageType, out del);
if(del!=null)
{
del(key,values);
}
}

}
}

 

三、消息处理管理(代码如下) 

using System;
using UnityEngine;

namespace Mx.Msg
{
/// <summary>消息管理</summary>
public class MessageMgr : MonoBehaviour
{
/// <summary>
/// 添加消息的监听
/// </summary>
/// <param name="messageType">消息分组</param>
/// <param name="handler">消息委托</param>
public static void AddMsgListener(string messageType, Action<string, object> handler)
{
MessageCenter.AddMsgListener(messageType, handler);
}

/// <summary>
/// 取消消息监听
/// </summary>
/// <param name="messageType">消息分组</param>
/// <param name="handler">消息委托</param>
public static void RemoveMsgListener(string messageType, Action<string, object> handler)
{
MessageCenter.RemoveMsgListener(messageType, handler);
}

/// <summary>
/// 取消所有的消息监听
/// </summary>
public static void ClearAllMsgListener()
{
MessageCenter.ClearAllMsgListener();
}

/// <summary>
/// 发送消息
/// </summary>
/// <param name="messageType">消息分组</param>
/// <param name="key">消息名称</param>
/// <param name="values">消息体</param>
public static void SendMessage(string messageType, string key, object values)
{
MessageCenter.SendMessage(messageType, key, values);
}

/// <summary>
/// 发送给指定UI消息
/// </summary>
/// <param name="uIFormType">接收消息UI面板</param>
/// <param name="key">消息名称</param>
/// <param name="values">消息体</param>
//public static void SendMessageToUIForm(EnumUIFormType uIFormType, string key, object values)
//{
// MessageCenter.SendMessage(uIFormType.ToString() + "Msg", key, values);
//}
}
}

 

四、API 

1.注册消息监听事件

public static void AddMsgListener(string messageType, Action<string, object> handler)

2.注销消息监听事件

public static void RemoveMsgListener(string messageType, Action<string, object> handler)

3.注销所有消息监听事件

public static void ClearAllMsgListener()

4.发送消息

public static void SendMessage(string messageType, string key, object values)

 

五、如何使用

1.发送消息

MessageMgr.SendMessage("消息分组", "消息名称", 消息体);

2.接收消息

private void Awake()
{
//注册事件>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
MessageMgr.AddMsgListener("消息分组", OnTestMessageCenterEvent);
}

private void OnDestroy()
{
//记得有注册就会有注销>>>>>>>>>>>>>>>>>>>>
MessageMgr.RemoveMsgListener("消息分组", OnTestMessageCenterEvent);
}

/// <summary>
/// 监听测试消息中心数据
/// </summary>
/// <param name="key">数据名称</param>
/// <param name="values">具体的数值</param>
private void OnTestMessageCenterEvent(string key, object values)
{
switch (key)
{
case"消息名称":

数据类型 msg=(数据类型) values;
break;
}
}

 

六、​​源码​​结构

1.核心代码路径(ImportPlugins/MXFramework**/Core/Message)

04_消息中心(MessageCenter)_消息中心

2.示例工程路径(Example/04_MessageCenter)

04_消息中心(MessageCenter)_监听事件_02

 

七、源码下载

MxFramework 源码: ​​https://github.com/yongliangchen/MXFramework​​

QQ 交流群:1079467433

举报

相关推荐

0 条评论