internal void RemoveListener(int _index) { if (dicWithID.ContainsKey(_index)) { SuperEventListenerUnitBase unit = dicWithID[_index]; dicWithID.Remove(_index); Dictionary <Delegate, SuperEventListenerUnitBase> dic = dicWithEvent[unit.eventName]; dic.Remove(unit.callBack); if (dic.Count == 0) { dicWithEvent.Remove(unit.eventName); } } }
internal void RemoveListener <T>(string _eventName, EventCallBack <T> _callBack) where T : struct { if (dicWithEvent.ContainsKey(_eventName)) { Dictionary <Delegate, SuperEventListenerUnitBase> dic = dicWithEvent[_eventName]; if (dic.ContainsKey(_callBack)) { SuperEventListenerUnitBase unit = dic[_callBack]; dicWithID.Remove(unit.index); dic.Remove(_callBack); if (dic.Count == 0) { dicWithEvent.Remove(_eventName); } } } }