C# 如何在c中的if()语句中调用多个函数#

C# 如何在c中的if()语句中调用多个函数#,c#,if-statement,enums,keyboard-input,C#,If Statement,Enums,Keyboard Input,所以我需要一个c#if()语句,它可能看起来像这样?代码: ... if(CurrentGameState != gameState.gameLoading && gameState.mainMenu && keyboardState.IsKeyDown(Keys.Escape)) { CurrentGameState = gameState.mainmenu; } //I get error in: CurrentGameState != game

所以我需要一个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();

有什么建议吗?

游戏状态。主菜单是枚举值,而不是布尔值。你不能用你想要的方式使用它。你是有意这么做的吗

if (CurrentGameState != gameState.gameLoading && 
    CurrentGameState != gameState.mainMenu &&
    keyboardState.IsKeyDown(Keys.Escape))

gameState.mainMenu
是枚举值,而不是布尔值。你不能用你想要的方式使用它。你是有意这么做的吗

if (CurrentGameState != gameState.gameLoading && 
    CurrentGameState != gameState.mainMenu &&
    keyboardState.IsKeyDown(Keys.Escape))
可能是

if(CurrentGameState != gameState.gameLoading && 
   CurrentGameState==gameState.mainMenu && keyboardState.IsKeyDown(Keys.Escape))
可能是

if(CurrentGameState != gameState.gameLoading && 
   CurrentGameState==gameState.mainMenu && keyboardState.IsKeyDown(Keys.Escape))

我很抱歉用我的手机进行格式化,但我认为你在使用xna时,应该在switch语句中包含游戏状态,否则你的代码会很快变得混乱,而且效率低下

 Switch(currentgamestate)
 {
      Case gamestate.loading:
          If(pressing escape)
              Currentgamestate = gamestate.mainmenu;
       Break;
       Case gamestate.mainmenu;
            //todo
        Break;
   }

您的错误是因为您试图将两个条件链接在一起。如果currentgamestate未加载并且是主菜单,则需要为每个条件引用当前gamestate。。如果currentgamestate未加载且currentgamestate为主菜单,则我建议格式化,但从手机写入,但我假设您使用xna,您应该在switch语句中包含游戏状态,否则您的代码将很快变得混乱且效率低下

 Switch(currentgamestate)
 {
      Case gamestate.loading:
          If(pressing escape)
              Currentgamestate = gamestate.mainmenu;
       Break;
       Case gamestate.mainmenu;
            //todo
        Break;
   }

您的错误是因为您试图将两个条件链接在一起。如果currentgamestate未加载并且是主菜单,则需要为每个条件引用当前gamestate。。如果currentgamestate未加载且currentgamestate为mainmenu,它是否返回布尔值:
gameState.mainmenu
?还应使用圆括号将其括起来,
if((currentgamestate!=gameState.gameLoading)&&gameState.mainmenu&&keyboardState.IsKeyDown(Keys.Escape))
我相信作者想要的是
CurrentGameState==gameState.mainMenu
,而不仅仅是
&&gameState.mainMenu&
,或者你只需要
CurrentGameState!=gameState.gameLoading&&*CurrentGameState!=*gameState.mainMenu
等。是的,但这不是我需要帮助的代码。它是否返回布尔值:
gameState.mainMenu
?还应该用圆括号括起来,
如果((CurrentGameState!=gameState.gameLoading)&&gameState.mainMenu&&keyboardState.IsKeyDown(Keys.Escape))
我相信作者想要的是
CurrentGameState==gameState.mainMenu
,而不仅仅是
&&gameState.mainMenu&
,或者你只需要
CurrentGameState!=gameState.gameLoading&&*CurrentGameState!=*gameState.main菜单
等。是的,但这不是我需要帮助的代码。