Esempio n. 1
0
 /// <summary>
 /// 移除未添加委托的事件
 /// </summary>
 /// <param name="myEventName"></param>
 private static void OnListenerRemoved(MyEventName myEventName)
 {
     if (m_EventTable[myEventName] == null)
     {
         m_EventTable.Remove(myEventName);
     }
 }
Esempio n. 2
0
        /// <summary>
        /// 注册事件
        /// </summary>
        /// <param name="myEventName"></param>
        /// <param name="callback"></param>
        private static void OnListenerAdding(MyEventName myEventName, Delegate callback)
        {
            if (!m_EventTable.ContainsKey(myEventName))
            {
                m_EventTable.Add(myEventName, null);
            }
            Delegate d = m_EventTable[myEventName];

            if (d != null && d.GetType() != callback.GetType())
            {
                throw new Exception(string.Format("尝试为事件{0}添加不同类型的委托,当前事件所对应的委托类型是{1},要添加的委托类型为{2}", myEventName, d.GetType(), callback.GetType()));
            }
        }
Esempio n. 3
0
        /// <summary>
        /// 广播4参数类型
        /// </summary>
        /// <param name="myEventName"></param>
        public static void Broadcast <T, X, Z, W>(MyEventName myEventName, T arg1, X arg2, Z arg3, W arg4)
        {
            Delegate d;

            if (m_EventTable.TryGetValue(myEventName, out d))
            {
                CallBack <T, X, Z, W> callBack = d as CallBack <T, X, Z, W>;
                if (callBack != null)
                {
                    callBack(arg1, arg2, arg3, arg4);
                }
                else
                {
                    throw new Exception(string.Format("广播失败:事件{0}未包含3参数类型委托", myEventName));
                }
            }
        }
Esempio n. 4
0
        /// <summary>
        /// 广播无参数类型
        /// </summary>
        /// <param name="myEventName"></param>
        public static void Broadcast(MyEventName myEventName)
        {
            Delegate d;

            Debug.Log(m_EventTable.TryGetValue(myEventName, out d));
            if (m_EventTable.TryGetValue(myEventName, out d))
            {
                CallBack callBack = d as CallBack;
                if (callBack != null)
                {
                    callBack();
                }
                else
                {
                    throw new Exception(string.Format("广播失败:事件{0}未包含无参数类型委托", myEventName));
                }
            }
        }
Esempio n. 5
0
 /// <summary>
 /// 移除事件
 /// </summary>
 /// <param name="myEventName"></param>
 /// <param name="callback"></param>
 /// <returns></returns>
 private static void OnListenerRemoving(MyEventName myEventName, Delegate callback)
 {
     if (m_EventTable.ContainsKey(myEventName))
     {
         Delegate d = m_EventTable[myEventName];
         if (d == null)
         {
             throw new Exception(string.Format("移除监听错误:事件{0}未添加任何委托", myEventName));
         }
         else if (d.GetType() != callback.GetType())
         {
             throw new Exception(string.Format("移除监听错误:事件{0}没有对应的委托", myEventName));
         }
     }
     else
     {
         throw new Exception(string.Format("事件系统未包含{0}事件", myEventName));
     }
 }
Esempio n. 6
0
 //添加2参数委托
 public static void AddListener <T, X>(MyEventName myEventName, CallBack <T, X> callBack)
 {
     OnListenerAdding(myEventName, callBack);
     m_EventTable[myEventName] = (CallBack <T, X>)m_EventTable[myEventName] + callBack;
 }
Esempio n. 7
0
 //移除4参数委托
 public static void RemoveListener <T, X, Z, W>(MyEventName myEventName, CallBack <T, X, Z, W> callBack)
 {
     OnListenerRemoving(myEventName, callBack);
     m_EventTable[myEventName] = (CallBack <T, X, Z, W>)m_EventTable[myEventName] - callBack;
     OnListenerRemoved(myEventName);
 }