public void TransitionTo(int nextStateId) { AState prevState = GetCurrentState(); AState nextState = GetState(nextStateId); if (prevState != null) { prevState.Leave(nextState); } CurrentStateId = nextStateId; if (nextState != null) { nextState.Enter(prevState); } else { CurrentStateId = AState.INVALID_STATE; } OnStateChanged.Invoke(); OnHierarchyChanged.Invoke(); }