/// <summary> /// 添加事件监听 /// </summary> /// <param name="type">事件类型</param> /// <param name="listener">事件监听回调</param> public void AddEvent(BaseEventType type, EventCallback listener) { string key = type.eventTypeEnum.ToString(); if (!listenerDic.ContainsKey(key)) { listenerDic.Add(key, null); } listenerDic[key] += listener; }
/// <summary> /// 分发事件 /// </summary> /// <param name="type">事件类型</param> /// <param name="listener">事件数据</param> public void DispenseEvent(BaseEventType type, BaseEventData eventData) { string key = type.eventTypeEnum.ToString(); if (!listenerDic.ContainsKey(key)) { Debug.LogError(key + ":该事件没有被监听!"); return; } listenerDic[key](eventData); }
/// <summary> /// 分发事件(仅通知,无数据) /// </summary> /// <param name="type">事件类型</param> public void DispenseEvent(BaseEventType type) { string key = type.GetType().ToString(); if (!listenerDic.ContainsKey(key)) { Debug.LogError(key + ":该事件没有被监听!"); return; } listenerDic[key](new BaseEventData()); }
/// <summary> /// 移除事件监听 /// </summary> /// <param name="type">事件类型</param> /// <param name="listener">事件监听回调</param> public void RemoveEvent(BaseEventType type, EventCallback listener) { string key = type.eventTypeEnum.ToString(); if (!listenerDic.ContainsKey(key)) { Debug.LogError(key + ":事件不存在,无法移除!"); return; } listenerDic[key] -= listener; if (listenerDic[key] == null) { listenerDic.Remove(key); } }