게임 제작시 MainFrame(MainManager, GameManager 등)에서 FSM을 구현하는 방법 정리
MainFrame.cs
class MainFrame { public enum State { Game, Lobby } FiniteStateMachine<MainFrame, State> FSM; LobbyState stateLobby = new LobbyState(); GameState stateGame = new GameState(); void Awake() { FSM = new FiniteStateMachine<MainFrame, State>(this); FSM.AddState(stateLobby); FSM.AddState(stateGame); FSM.ChangeState(stateLobby); // 시작시 stateLobby State } }LobbyState.cs
class LobbyState : FiniteState<MainFrame, MainFrame.State> { public override void SetEntity(MainFrame entity) { base.SetEntity(entity); } public override void Enter() { base.Enter(); //게임 입장시 이벤트 구현부 } public override void Excute() { base.Excute(); //게임 실행시 이벤트 구현부 } public override void Exit() { base.Exit(); //게임 퇴장시 이벤트 구현부 } public override MainFrame.State _StateID { get { return MainFrame.State.Game; } } }GameState.cs
class GameState : FiniteState<MainFrame, MainFrame.State> { public override void SetEntity(MainFrame entity) { base.SetEntity(entity); } public override void Enter() { base.Enter(); //게임 입장시 이벤트 구현부 } public override void Excute() { base.Excute(); //게임 실행시 이벤트 구현부 } public override void Exit() { base.Exit(); //게임 퇴장시 이벤트 구현부 } public override MainFrame.State _StateID { get { return MainFrame.State.Game; } } }
0 개의 댓글:
댓글 쓰기