小智 6
我将通过给你一些行话来指出你正确的方向:"有限状态机".对于游戏菜单,FSM应该足够了.现在您已经知道了这个流行词,您可以通过Google搜索来找出大量的例子.虽然基本思想很简单,但有很多不同的实现.请记住,这种用于游戏状态转换的系统不需要那么极端.
我亲眼看到各种各样的东西,从过度设计的多维状态转换到巨大的千行开关声明.
对于没有流媒体或疯狂游戏中断的基本游戏,你应该寻找一种不比这更复杂的面向对象的方法:
public enum GameState {
TITLE_STATE = 0,
MAINGAME_STATE,
PAUSE_STATE,
}
void GameStateUpdate() {
// handle update
switch(m_curState) {
case TITLE_STATE:
UpdateTitleScreen();
if(UserPressesEnter()) {
m_curState = MAINGAME_STATE;
}
break;
case MAINGAME_STATE:
UpdateMainGame();
if(UserPressesPause()) {
m_curState = PAUSE_STATE;
}
break;
case PAUSE_STATE:
UpdatePause();
if(UserDoneWithPause()) {
m_curState = MAINGAME_STATE;
}
break;
}
}
Run Code Online (Sandbox Code Playgroud)
从这样的事情开始工作,看看你是否可以为"MAINGAME_STATE"开始之前的暂停菜单弹出或暂停菜单添加过渡状态.