所以我需要一个c#if()
语句,看起来应该是这样的,也许吧?代码:
...
if(CurrentGameState != gameState.gameLoading && gameState.mainMenu && keyboardState.IsKeyDown(Keys.Escape))
{
CurrentGameState = gameState.mainmenu;
}
//I get error in: CurrentGameState != gameState.gameLoading && gameState.mainMenu part
...
这就是我使用上述变量的代码:
//Game States
enum gameState
{
gameLoading,
mainMenu,
gameOptions,
levelSelect,
gamePlaying,
gameOver
}
gameState CurrentGameState = gameState.gameLoading;
//Keyboard State
KeyboardState keyboardState = Keyboard.GetState();
有什么建议吗?
答案 0 :(得分:4)
gameState.mainMenu
是枚举值,不是布尔值。你不能按照你想要的方式使用它。你的意思是这样做的吗?
if (CurrentGameState != gameState.gameLoading &&
CurrentGameState != gameState.mainMenu &&
keyboardState.IsKeyDown(Keys.Escape))
答案 1 :(得分:1)
我为格式化而不是用手机写字,但我认为你在使用xna,你应该在switch语句中使用你的游戏状态,否则你的代码会变得非常快而且效率低下
Switch(currentgamestate)
{
Case gamestate.loading:
If(pressing escape)
Currentgamestate = gamestate.mainmenu;
Break;
Case gamestate.mainmenu;
//todo
Break;
}
你的错误是因为你试图将两个条件链接在一起..如果currentgamestate没有加载并且是主菜单,你需要为每个条件引用当前游戏状态..如果currentgamestate没有加载且currentgamestate是mainmenu
答案 2 :(得分:0)
if(CurrentGameState != gameState.gameLoading
&& gameState.mainMenu && keyboardState.IsKeyDown(Keys.Escape))
可能是
if(CurrentGameState != gameState.gameLoading &&
CurrentGameState==gameState.mainMenu && keyboardState.IsKeyDown(Keys.Escape))