예제 #1
0
 // Update is called once per frame
 void Update()
 {
     curState.Execute();
     if (!curState.CheckIsAlive())
     {
         curState.Exit();
         curState = GetNextState();
         curState.Enter();
     }
     RefreshUI();
 }
예제 #2
0
    void OnLeaveState(object p1, object p2)
    {
        Type t = (Type)p1;

        Debug.Log("OnLeaveState" + t.Name + ", will = " + _willStateType.Name);
        if (_nowState.GetType() == t)
        {
            _nowState = GetState(_willStateType);
            _nowState.Enter(_willStateParameter);
            _willStateType = null;
        }
    }
예제 #3
0
 public void ChangePrevState()
 {
     if (savePrevState != null && curState.ID == savePrevState.ID)
     {
         return;
     }
     if (curState != null)
     {
         curState.Leave();
     }
     curState = savePrevState;
     curState.Enter();
     prevState = curState;
 }
    // trocando o estado
    public void SwitchState(string newState)
    {
        BaseGameState state = FindState(newState);

        if (state == null)
        {
            Debug.LogError("Nao foi encontrado um estado com o nome " + newState);
            return;
        }

        stateStack[stateStack.Count - 1].Exit(state);
        state.Enter(stateStack[stateStack.Count - 1]);
        stateStack.RemoveAt(stateStack.Count - 1);
        stateStack.Add(state);
    }
예제 #5
0
    public BaseGameState savePrevState; //上一个状态

    public void ChangeState(BaseGameState newState)
    {
        if (curState != null && curState.ID == newState.ID)
        {
            return;
        }
        if (prevState != null)
        {
            savePrevState = prevState;
            prevState.Leave();
        }
        curState = newState;
        curState.Enter();
        prevState = curState;
    }
예제 #6
0
    void ChangeState(Type type)
    {
        if (_nowState == null)
        {
            _nowState = GetState(type);
            _nowState.Enter(null);
            _willStateType = null;
            return;
        }

        if (_nowState.GetType() == type)
        {
            return;
        }

        if (_willStateType != null && _willStateType == type)
        {
            return;
        }

        _willStateType = type;
        _nowState.Leave();
    }
예제 #7
0
 // Start is called before the first frame update
 void Start()
 {
     curState = prepareState;
     curState.Enter();
 }