using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using UnityEngine; /******************************************************************************* *Create By CG *Function 事件中心管理 *******************************************************************************/ namespace CG.Framework { public class EventCenterManager : ClassSingleton { //枚举-委托事件 可以通过找到订阅的事件 private Dictionary _eventDic = new Dictionary(); /// /// 添加委托事件 /// /// /// public void AddEventListener(EventEnum eventName,EventHandler handler) { if (_eventDic.ContainsKey(eventName)) { _eventDic[eventName] += handler; } else { _eventDic.Add(eventName, handler); } } /// /// 发布者发布消息 /// /// 委托事件名字 /// 发布者 /// 消息参数 public void Dispatch(EventEnum eventName, object sander,EventArgs args) { if (_eventDic.ContainsKey(eventName)) { _eventDic[eventName]?.Invoke(sander, args); } } /// /// 移除委托内一个事件 /// /// /// public void RemoveListener(EventEnum eventName,EventHandler handler) { if (_eventDic.ContainsKey(eventName)) { _eventDic[eventName] -= handler; } } /// /// 移除委托事件 /// /// public void RemoveEvent(EventEnum eventName) { if (_eventDic.ContainsKey(eventName)) { _eventDic[eventName] = null; } } /// /// 清除所有委托事件 /// public void Clear() { foreach (var item in _eventDic.Keys) { _eventDic[item] = null; } _eventDic.Clear(); } } /// /// 鼠标双击空白处触发事件 /// public class CameraDoubleClickNullArgs : EventArgs { public string _groupShowName; public string _onlyGeoName; } /// /// 委托事件名字 /// public enum EventEnum { /// /// 鼠标双击空白处触发事件 /// CameraDoubleClickNull } }