Example #1
0
        /// <summary>
        /// 如果要判断为同一状态,不进行切换,调用,true 判断,false 不判断
        /// </summary>
        /// <param name="nextState"></param>
        /// <param name="ignor">是否判断为同一状态</param>
        /// <returns></returns>
        public virtual bool ChangeState(MState <T> nextState, bool isSame)
        {
            if (LockCurrentState)
            {
                return(false);
            }

            if (nextState == null)
            {
                Debug.Log("State Machine ===>  nextState is null State");
                return(false);
            }
            //if (CurrenState == null)
            //{ }

            if (isSame && nextState.Name == CurrenState.Name)
            {
                //Debug.Log(CurrenState.Name + "    <<=======>>   " + nextState.Name);
                return(false);
            }

            previousState = (CurrenState == null) ? nextState : CurrenState;
            CurrenState.Exit();
            //Debug.Log("_currenState = " + _currenState.Name);
            //Debug.Log("nextState = " + _currenState.Name);
            CurrenState = nextState;
            CurrenState.Enter();
            return(true);
        }
Example #2
0
 protected virtual void FixedUpdate()
 {
     if (CurrenState != null)
     {
         CurrenState.FixedUpdate();
     }
 }
Example #3
0
 public virtual void UpdateState()
 {
     CurrenState.Execute();
     if (golbalState != null)
     {
         golbalState.Execute();
     }
 }
Example #4
0
 protected bool EndPreviusState(State newState)
 {
     if (CurrenState != null)
     {
         return(CurrenState.End(newState));
     }
     return(true);
 }
Example #5
0
 public virtual void OnTriggerExit(Collider other)
 {
     CurrenState.OnTriggerExit(other);
 }