消息监听
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MessageManage : Singleton<MessageManage>, IMessageManage
{
public delegate void MessageHandler(object[] msgDatas);
private Dictionary<string, List<MessageHandler>> eventHandlerDic = new Dictionary<string, List<MessageHandler>>();
public void RegisterEventMessageHandler(string eventName, MessageHandler message)
{
List<MessageHandler> list;
if (!eventHandlerDic.TryGetValue(eventName, out list))
{
list = new List<MessageHandler>();
eventHandlerDic.Add(eventName, list);
}
if (!list.Contains(message))
list.Add(message);
}
public void RemoveEventMessage(string eventName, MessageHandler message)
{
List<MessageHandler> handle;
if (eventHandlerDic.TryGetValue(eventName, out handle))
{
if (!handle.Contains(message))
handle.Remove(message);
}
}
public void EventNotify(string eventName, params object[] msgData)
{
List<MessageHandler> handle;
if (eventHandlerDic.TryGetValue(eventName, out handle))
{
foreach (MessageHandler itemHand in handle)
{
itemHand(msgData);
}
}
}
public void RemoveAllRegisterEvent()
{
eventHandlerDic.Clear();
}
}