using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; public interface IEventInfo{ } public class EventInfo:IEventInfo { public UnityAction actions; public EventInfo(UnityAction action) { actions += action; } } public class EventInfo : IEventInfo { public UnityAction actions; public EventInfo(UnityAction action) { actions += action; } } public class EventCenter : Singleton { private Dictionary eventDic = new Dictionary(); public void AddEventListener(string name,UnityAction action) { if(eventDic.ContainsKey(name)) { (eventDic[name] as EventInfo).actions += action; } else { eventDic.Add(name, new EventInfo(action)); } } public void AddEventListener(string name, UnityAction action) { if (eventDic.ContainsKey(name)) { (eventDic[name] as EventInfo).actions += action; } else { eventDic.Add(name, new EventInfo(action)); } } public void EventTrigger(string name,T info) { if(eventDic.ContainsKey(name)) { (eventDic[name] as EventInfo).actions?.Invoke(info); } } public void EventTrigger(string name) { if (eventDic.ContainsKey(name)) { (eventDic[name] as EventInfo).actions?.Invoke(); } } public void RemoveEventListener(string name, UnityAction action) { if (eventDic.ContainsKey(name)) { //移除这个委托 (eventDic[name] as EventInfo).actions -= action; } } public void RemoveEventListener(string name, UnityAction action) { if (eventDic.ContainsKey(name)) { //移除这个委托 (eventDic[name] as EventInfo).actions -= action; } } public void Clear() { eventDic.Clear(); } }