예제 #1
0
파일: FSM.cs 프로젝트: loneyer/TowerDefend
    /// <summary>
    /// 设置为上个状态
    /// </summary>
    public void ToLastState()
    {
        if (currentState == lastState)
        {
            return;
        }

        currentState.ExecuteLeave();
        lastState.ExecuteEnter();
        StatePath cachedCurrentState = currentState;

        currentState = lastState;
        lastState    = cachedCurrentState;
        stateTime    = 0;
    }
예제 #2
0
파일: FSM.cs 프로젝트: loneyer/TowerDefend
    /// <summary>
    /// 设置状态
    /// </summary>
    /// <param name="_s">S.</param>
    public void SetState(StatePath _s)
    {
        if (!allState.ContainsKey(_s.stateName) || currentState == _s)
        {
            return;
        }

        if (currentState != null)
        {
            currentState.ExecuteLeave();
        }


        lastState    = currentState;
        currentState = _s;
        stateTime    = 0;
        currentState.ExecuteEnter();
    }