Пример #1
0
    // 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();
        }
    }