示例#1
0
    /// <summary>
    /// 添加Update更新监听
    /// </summary>
    /// <param name="eventEnumType"></param>
    /// <param name="eventName"></param>
    /// <param name="listener"></param>
    public static UpdateEvent_CallBack AddUpdateListener(UpdateEventEnumType eventEnumType, string eventName, UpdateEvent_CallBack listener, OperationModeEnumType operationModeEnum = OperationModeEnumType.NoPause)
    {
        UpdateEvent_CallBack _listener = listener;

        switch (eventEnumType)
        {
        case UpdateEventEnumType.FixedUpdate:
            if (fixedUpdateEvent != null)
            {
                _listener = fixedUpdateEvent.AddListener(eventName, listener, operationModeEnum);
            }
            break;

        case UpdateEventEnumType.Update:
            if (updateEvent != null)
            {
                _listener = updateEvent.AddListener(eventName, listener, operationModeEnum);
            }
            break;

        case UpdateEventEnumType.LateUpdate:
            if (lateUpdateEvent != null)
            {
                _listener = lateUpdateEvent.AddListener(eventName, listener, operationModeEnum);
            }
            break;

        default:
            break;
        }
        return(_listener);
    }
示例#2
0
 /// <summary>
 /// 恢复暂停事件
 /// </summary>
 public virtual void RenewPauseEvent(string eventName, UpdateEvent_CallBack listener)
 {
     if (pauseEventObjects.ContainsKey(eventName))
     {
         UpdateEventObject eventObject = pauseEventObjects[eventName].Find(e => e.eventCall == listener);
         if (eventObject != null)
         {
             eventObject.isUpdate = true;
         }
     }
 }
示例#3
0
        /// <summary>
        /// 去除事件
        /// </summary>
        /// <param name="eventName"></param>
        /// <param name="listener"></param>
        public virtual void RemoveListener(string eventName, UpdateEvent_CallBack listener, OperationModeEnumType operationModeEnum)
        {
            UpdateEventObject eventObject = default(UpdateEventObject);

            switch (operationModeEnum)
            {
            case OperationModeEnumType.Pause:
                if (pauseEventObjects.ContainsKey(eventName))
                {
                    eventObject = pauseEventObjects[eventName].Find(e => e.eventCall == listener);
                    pauseEventObjects[eventName].Remove(eventObject);
                }
                break;

            case OperationModeEnumType.NoPause:
                if (eventObjects.ContainsKey(eventName))
                {
                    eventObject = eventObjects[eventName].Find(e => e.eventCall == listener);
                    eventObjects[eventName].Remove(eventObject);
                }
                break;

            default:
                break;
            }
            if (eventObject != null)
            {
                bool Exist = false;
                foreach (var item in eventObject.eventCall.GetInvocationList())
                {
                    if (item.Method == listener.Method)
                    {
                        Exist = true;
                    }
                }
                if (!Exist)
                {
                    Debug.Log(eventName + "==listener监听事件不存在字典中!移除监听参数不能为Lambda表达式。\n解决方法请参考添加监听方法 (AddListener)的返回值!!!");
                    return;
                }
            }
            else
            {
                Debug.Log("事件<" + eventName + ">不存在");
            }
        }
示例#4
0
        /// <summary>
        /// 添加事件
        /// </summary>
        /// <param name="eventName"></param>
        /// <param name="eventCall"></param>
        public virtual UpdateEvent_CallBack AddListener(string eventName, UpdateEvent_CallBack listener, OperationModeEnumType operationModeEnum)
        {
            switch (operationModeEnum)
            {
            case OperationModeEnumType.Pause:
                if (pauseEventObjects.ContainsKey(eventName))
                {
                    pauseEventObjects[eventName].Add(new UpdateEventObject(listener));
                }
                else
                {
                    pauseEventObjects.Add(eventName, new List <UpdateEventObject>()
                    {
                        new UpdateEventObject(listener)
                    });
                }
                break;

            case OperationModeEnumType.NoPause:
                if (eventObjects.ContainsKey(eventName))
                {
                    eventObjects[eventName].Add(new UpdateEventObject(listener));
                }
                else
                {
                    eventObjects.Add(eventName, new List <UpdateEventObject>()
                    {
                        new UpdateEventObject(listener)
                    });
                }
                break;

            default:
                break;
            }
            return(listener);
        }
示例#5
0
 //构造函数
 public UpdateEventObject(UpdateEvent_CallBack eventCall)
 {
     this.eventCall = eventCall;
 }
示例#6
0
    /// <summary>
    /// 恢复暂停事件
    /// </summary>
    public static void RenewPauseEvent(UpdateEventEnumType eventEnumType, string eventName, UpdateEvent_CallBack listener)
    {
        switch (eventEnumType)
        {
        case UpdateEventEnumType.FixedUpdate:
            if (fixedUpdateEvent != null)
            {
                fixedUpdateEvent.RenewPauseEvent(eventName, listener);
            }
            break;

        case UpdateEventEnumType.Update:
            if (updateEvent != null)
            {
                updateEvent.RenewPauseEvent(eventName, listener);
            }
            break;

        case UpdateEventEnumType.LateUpdate:
            if (lateUpdateEvent != null)
            {
                lateUpdateEvent.RenewPauseEvent(eventName, listener);
            }
            break;

        default:
            break;
        }
    }
示例#7
0
    /// <summary>
    ///去除Update更新监听
    /// </summary>
    /// <param name="eventEnumType"></param>
    /// <param name="eventName"></param>
    /// <param name="listener"></param>
    public static void RemoveUpdateListener(UpdateEventEnumType eventEnumType, string eventName, UpdateEvent_CallBack listener, OperationModeEnumType operationModeEnum = OperationModeEnumType.NoPause)
    {
        switch (eventEnumType)
        {
        case UpdateEventEnumType.FixedUpdate:
            if (fixedUpdateEvent != null)
            {
                fixedUpdateEvent.RemoveListener(eventName, listener, operationModeEnum);
            }
            break;

        case UpdateEventEnumType.Update:
            if (updateEvent != null)
            {
                updateEvent.RemoveListener(eventName, listener, operationModeEnum);
            }
            break;

        case UpdateEventEnumType.LateUpdate:
            if (lateUpdateEvent != null)
            {
                lateUpdateEvent.RemoveListener(eventName, listener, operationModeEnum);
            }
            break;

        default:
            break;
        }
    }