//无参,单个返回值监听委托的移除 public static void RemoveListener <T>(GameEventType eventType, CallBack_Return <T> callBack) { //若通过以上检测则说明没有发生移除错误,则将对应委托 OnListenerRemoving(eventType, callBack); eventDic[eventType] = (CallBack_Return <T>)eventDic[eventType] - callBack; if (eventDic[eventType] == null) { eventDic.Remove(eventType); } }
//广播无参事件 public static T Boardcast <T>(GameEventType eventType) { Delegate d; if (eventDic.TryGetValue(eventType, out d)) { CallBack_Return <T> callBack = d as CallBack_Return <T>; if (callBack != null) { return(callBack()); } else { throw new Exception(String.Format("不存在对应的委托值,所要广播的委托类型为{1}", eventType.GetType())); } } return(default(T)); }
//添加无参,一个返回值监听委托 public static void AddListener <T>(GameEventType eventType, CallBack_Return <T> callBack) { OnListenerAdding(eventType, callBack); eventDic[eventType] = (CallBack_Return <T>)eventDic[eventType] + callBack; }