Exemplo n.º 1
0
 /// <summary>
 /// 状态机的回调(FixedUpdate)
 /// </summary>
 public override void OnFixedUpdateExecute()
 {
     // 判断是否正在进行状态过渡
     if (_isTransition)
     {
         // 判断状态过渡的回调是否执行完毕
         if (_currentTransition.TransitionCallBack())
         {
             // 执行状态过渡(就是状态的退出 和 进入方法)
             DoTransition(_currentTransition);
             _isTransition = false;
         }
         return;
     }
     // 开始运行时,给_currentState 赋值
     if (_currentState == null)
     {
         _currentState = _defalutState;
     }
     base.OnFixedUpdateExecute();
     //遍历 当前状态的 状态过渡列表:查看满足哪个条件,就执行过渡
     foreach (ITransition transition in _currentState.TransitionList)
     {
         if (transition.CheckTransition())
         {
             _isTransition      = true;
             _currentTransition = transition;
             return;
         }
     }
     // 没有满足任何一个过渡条件,就执行当前状态的 FixedUpdate 回调
     _currentState.OnFixedUpdateExecute();
 }