/// <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(); }