void ChangeStateInternal(AltoState nextState) { if (logVerbose) { string currentStateName = (_currentState != null) ? _currentState.GetType().Name : "null"; Log($"{currentStateName} <color=#f894fc>-></color> {nextState.GetType().Name}"); } if (_currentState != null) { _currentState.onExitNextState = nextState; _currentState.Exit(); } nextState.onEnterPrevState = _currentState; _currentState = nextState; nextState.Enter(); }
/// <summary> /// ステートを変更する。 Exit / Enter のハンドラは呼ばれない。 /// 初期ステートの設定に使う /// </summary> public void SetState <TState>() where TState : AltoState, new() { _currentState = GetOrCreateState <TState>(); }