/// <summary> /// 抽換指定的狀態 /// </summary> /// <param name="_stateIndex"></param> public void ChangeState(FigureStateEnum _stateEnum) { //狀態枚舉 int stateIndex = (int)_stateEnum; //過濾不合理情況 if (myStateList.Length < (int)_stateEnum) { return; } if (myStateList[stateIndex] == null) { return; } //如前後一樣也無視 if (currentStateEnum == _stateEnum) { return; } //新的狀態 FigureStateEnum newEnum = _stateEnum; FigureState newState = myStateList[(int)_stateEnum]; //替換掉舊的監聽者 if (currentState != null) { currentState.Exit(); RemoveActionListener = currentState; RemoveCombatListener = currentState; RemoveValueListener = currentState; } //更換成新的 currentState = newState; currentStateEnum = newEnum; currentState.Start(); AddActionListener = currentState; AddValueListener = currentState; AddCombatListener = currentState; }
public void ChangeState(FigureStateEnum _state) { myFigure.ChangeState(_state); }