protected virtual void SwitchState(State newState)
        {
            if (_currentState != null && _currentState.GetType() == newState.GetType())
            {
                return;
            }

            _currentState?.ExitState();
            _currentState = newState;
            _currentState.InitState();
            _updateState = _currentState.UpdateState;
        }