public static void RegisterEvent(int evt, EventManager.EventProcessInterface processor) { EventManager.EventListener eventListener = null; if (!EventManager._eventList.TryGetValue(evt, out eventListener)) { eventListener = new EventManager.EventListener(); EventManager._eventList.Add(evt, eventListener); } if (eventListener.listeners.Contains(processor)) { Debug.LogError("事件重复添加!"); return; } eventListener.listeners.Add(processor); EventManager.IEventUnregisterable eventUnregisterable = processor as EventManager.IEventUnregisterable; if (eventUnregisterable != null) { eventUnregisterable.HasRegisterEvent = true; } }
public static void UnRegisterAll(EventManager.IEventUnregisterable processor) { if (!processor.HasRegisterEvent) { return; } foreach (KeyValuePair <int, EventManager.EventListener> current in EventManager._eventList) { List <EventManager.EventProcessInterface> listeners = current.Value.listeners; if (listeners.Contains(processor)) { List <EventManager.EventProcessInterface> list = new List <EventManager.EventProcessInterface>(); foreach (EventManager.EventProcessInterface current2 in listeners) { if (current2 != processor) { list.Add(current2); } } current.Value.listeners = list; } } }