public override void Execute(StateEvent data) { if (changeCount >= changeCountMax) { data.stateMachine.previousState = this; data.stateMachine.ChangeState(nextAnimationState, data); LogTextHelper.Info("this is CAR_OUT Execute next state:--->>IDLE"); } else { changeCount++; } }
private void ChangeState(State state, StateEvent data, StateEvent previousData = null) { //如果切换的状态就是本状态,就退出 if (currentState != null && state.GetStateId == currentState.GetStateId) { return; } //退出上一个状态 if (previousState != null) { previousState.Exit(previousData); } //设置进状态,进入新状态 currentState = state; currentState.Enter(data); }
abstract public void Exit(StateEvent data);
abstract public void Execute(StateEvent data);
abstract public void Enter(StateEvent data);
private void ChangeState(AnimationState animationState, StateEvent data, StateEvent previousData = null) { ChangeState(GetState(animationState), data, previousData); }
public override void Exit(StateEvent data) { LogTextHelper.Info("this is CAR_OUT Exit "); }
public override void Enter(StateEvent data) { LogTextHelper.Info("this is CAR_Weighted Enter"); }
public override void Exit(StateEvent data) { LogTextHelper.Info("this is CAR_ReadyWeight Exit "); }
public override void Exit(StateEvent data) { LogTextHelper.Info("this is IDLE Exit next state:"); }
public StateMachine(StateEvent dataEvent) { this.dataEvent = DataEvent; }