Exemple #1
0
        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;
            }
        }
Exemple #2
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);
                }
            }
        }
Exemple #3
0
        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);
        }