示例#1
0
        /// <summary>
        /// 状态切换
        /// </summary>
        /// <param name="id"></param>
        public void Change(object id, object changeHandleParam = null)
        {
            if (id.Equals(cur_StateID))
            {
                return;
            }
            else
            {
                //1.退出状态
                if (cur_State != null)
                {
                    cur_State.Exit();
                }
                //2.记录新切换的状态
                cur_StateID = id;
                cur_State   = getSate(id);
                //3.进入新状态
                cur_State.Enter();
                //4.绑定新状态更新内容
                OnUpdateHandle      = cur_State.update;
                OnFixedUpdateHandle = cur_State.fixedUpdate;
                OnLateUpdateHandle  = cur_State.lateUpdate;

                if (onChangeHandle != null && changeHandleParam != null)
                {
                    onChangeHandle.Invoke(changeHandleParam);
                }
            }
        }
示例#2
0
 public bool CheckNewState(IStateBase newState)
 {
     if (newState != ActualState)
     {
         Console.WriteLine($"{GetType()} - State: {newState.GetType().Name} entered");
         _t.Stop();
         ActualState?.Exit();
         newState.Enter();
         _t.Start();
         ActualState = newState;
         return(true);
     }
     return(false);
 }
 public void ChangeState(IStateBase newState)
 {
     if (null == newState)
     {
         return;
     }
     PreviousState = CurrentState;
     if (null != CurrentState)
     {
         CurrentState.Exit(Owner);
     }
     CurrentState = newState;
     CurrentState.Enter(Owner);
 }