// Update is called once per frame void Update() { if (_nextState != null && _currentState != null && _currentState.Status == StateStatus.Running) { Debug.LogWarning(_currentState.GetType() + " OnLeave"); _currentState.OnLeave(); } if (_currentState != null && _currentState.Status == StateStatus.LeaveEnded) { _currentState = null; } if (_currentState == null && _nextState != null) { _currentState = _nextState; _nextState = null; Debug.LogWarning(_currentState.GetType() + " OnStart"); _currentState.OnEnter(); } if (_currentState != null && _currentState.Status == StateStatus.Running) { _currentState.Update(); } }