using System.Collections; using System.Collections.Generic; using UnityEngine; public class EventCenter : Singleton { public delegate void EventHandler(params object [] param); private Dictionary> m_EventHandlers = new Dictionary>(); public void Register(EventMsgType evt, EventHandler handler) { List handlers; if (!m_EventHandlers.TryGetValue(evt, out handlers)) { handlers = new List(); m_EventHandlers.Add(evt, handlers); } if (!handlers.Contains(handler)) { handlers.Add(handler); } else { Debug.LogError("Event has already registed, eventType=" + evt); } } public void UnRegister(EventMsgType evt, EventHandler handler) { List handlers; if (m_EventHandlers.TryGetValue(evt, out handlers)) { if(handlers.Contains(handler)) handlers.Remove(handler); } } public void Publish(EventMsgType evt, params object[] objs) { List handlers; if (m_EventHandlers.TryGetValue(evt, out handlers)) { handlers.ForEach(h => h(objs)); } } public void Publish(EventMsgType evt) { List handlers; if (m_EventHandlers.TryGetValue(evt, out handlers)) { handlers.ForEach(h => h(null)); } } }