public void UnregisterEvent() { if (m_EnumEventChannel != C_EnumEventChannel.Empty && !string.IsNullOrEmpty(m_strEventName)) { C_EventHandler.UnregisterEvent(this); m_EnumEventChannel = C_EnumEventChannel.Empty; m_strEventName = string.Empty; m_Callback = null; m_nPriority = 0; } }
public static void SendEvent(C_EnumEventChannel enumEventChannel, string eventName, params object[] uiObjParams) { if (enumEventChannel == C_EnumEventChannel.Empty) { Debug.LogWarning("C_EventHandler SendEvent: Event channel is Empty!"); return; } if (string.IsNullOrEmpty(eventName)) { Debug.LogWarning("C_EventHandler SendEvent:" + eventName + " is Null or Empty!"); return; } if (!m_EventHandlerDict.ContainsKey(enumEventChannel)) { Debug.LogWarning("C_EventHandler SendEvent Channel:" + enumEventChannel.ToString() + " doesn't exist!"); return; } if (!m_EventHandlerDict[enumEventChannel].ContainsKey(eventName)) { Debug.LogWarning("C_EventHandler SendEvent Name:" + eventName + " doesn't exist!"); return; } var handlers = m_EventHandlerDict[enumEventChannel][eventName]; handlers.Sort(Compare); // 删除List需要从后向前遍历, 从前向后遍历删除后索引值会不断变化 for (int index = handlers.Count - 1; index >= 0; index--) { var handler = handlers[index]; if (handler != null) { handler.CallBack(uiObjParams); } else { handlers.RemoveAt(index); } } }
public void RegisterEvent(C_EnumEventChannel eventChannel, string eventName, Action <object[]> callback, int priority = 0) { if (eventChannel == C_EnumEventChannel.Empty) { Debug.LogError("C_Event RegisterEvent: Event channel is Empty!"); return; } if (string.IsNullOrEmpty(eventName)) { Debug.LogError("C_Event RegisterEvent: Event name is Null or Empty!"); return; } UnregisterEvent(); m_EnumEventChannel = eventChannel; m_strEventName = eventName; m_Callback = callback; m_nPriority = priority; C_EventHandler.RegisterEvent(this); }