コード例 #1
0
 /// <summary>
 /// 移除事件侦听
 /// </summary>
 /// <param name="_eventId">事件ID</param>
 /// <param name="_callback">回调事件</param>
 public void RemoveCallbackListener(int _eventId, StrayFogCallbackHandler _callback)
 {
     if (mCallbackHandlerMaping.ContainsKey(_eventId) &&
         mCallbackHandlerMaping[_eventId].Contains(_callback))
     {
         mCallbackHandlerMaping[_eventId].Remove(_callback);
     }
 }
コード例 #2
0
    /// <summary>
    /// 添加事件侦听
    /// </summary>
    /// <param name="_eventId">事件枚举</param>
    /// <param name="_callback">事件回调</param>
    public void AddCallbackListener(int _eventId, StrayFogCallbackHandler _callback)
    {
        if (!mCallbackHandlerMaping.ContainsKey(_eventId))
        {
            mCallbackHandlerMaping.Add(_eventId, new List <StrayFogCallbackHandler>());
        }
        if (!_callback.IsValid())
        {
#if UNITY_EDITOR
            Debug.LogError(string.Format("注册消息【{0}】失败=>Delegate.Target is null.", _eventId));
#endif
        }
        else if (!mCallbackHandlerMaping[_eventId].Contains(_callback))
        {
            mCallbackHandlerMaping[_eventId].Add(_callback);
        }
    }
コード例 #3
0
    /// <summary>
    /// 处理CallbackHandler事件
    /// </summary>
    /// <param name="_senderArgs">事件参数</param>
    /// <param name="_callback">回调</param>
    void OnProcessCallbackHandler(StrayFogEventHandlerArgs _senderArgs, StrayFogCallbackHandler _callback)
    {
        int tKey = _senderArgs.eventId;

        if (mCallbackHandlerMaping.ContainsKey(tKey))
        {
            List <StrayFogCallbackHandler> remove = new List <StrayFogCallbackHandler>();
            for (int i = 0; i < mCallbackHandlerMaping[tKey].Count; i++)
            {
                if (!mCallbackHandlerMaping[tKey][i].IsValid())
                {
                    remove.Add(mCallbackHandlerMaping[tKey][i]);
#if UNITY_EDITOR
                    Debug.LogError(string.Format("发布CallbackHandler消息【{0}】失败=>Delegate.Target is null.", tKey));
#endif
                }
                else
                {
                    try
                    {
                        StrayFogCallbackHandlerArgs callbackArgs = new StrayFogCallbackHandlerArgs(_senderArgs);
                        mCallbackHandlerMaping[tKey][i].Invoke(callbackArgs);
                        _callback?.Invoke(callbackArgs);
                    }
                    catch (Exception ep)
                    {
#if UNITY_EDITOR
                        Debug.LogError(string.Format("发布消息【{0}】失败=>{1}", tKey, ep.Message));
#endif
                    }
                }
            }

            foreach (StrayFogCallbackHandler item in remove)
            {
                mCallbackHandlerMaping[tKey].Remove(item);
            }
        }
    }
コード例 #4
0
 /// <summary>
 /// 发布事件侦听
 /// </summary>
 /// <param name="_senderArgs">发送者事件参数</param>
 /// <param name="_callback">回调</param>
 public void Dispatch(StrayFogEventHandlerArgs _senderArgs, StrayFogCallbackHandler _callback)
 {
     OnProcessCallbackHandler(_senderArgs, _callback);
 }