public void RegisterHandler(string evt, EVT_HANDLER handler) { HashSet <EVT_HANDLER> handlers; if (!evtMap.TryGetValue(evt, out handlers)) { handlers = new HashSet <EVT_HANDLER>(); evtMap.Add(evt, handlers); } if (handlers.Contains(handler)) { Debug.LogError("Same handler register twice!!!"); return; } handlers.Add(handler); }
public void UnregisterHandler(string evt, EVT_HANDLER handler) { HashSet <EVT_HANDLER> handlers; if (!evtMap.TryGetValue(evt, out handlers)) { return; } if (!handlers.Contains(handler)) { return; } handlers.Remove(handler); if (handlers.Count == 0) { evtMap.Remove(evt); } }