翻转布尔值

时间:2017-09-12 07:54:02

标签: c# boolean invert

我有一个很小的C#问题,我肯定必须容易解决,但我不能为我的生活找出错误。

我的游戏中有一个调试模式,当布尔值 debugMode 设置为true时,该模式会打开。变量保存在 gameInfo 对象中,在我的 GameInfo 类中引用。我想这样做,以便我可以通过按下" I"来打开和关闭调试模式。键盘上的键。这就是我的尝试:

if (keyboardState.IsKeyDown(Keys.I))
      GameInfo.gameInfo.debugMode = !GameInfo.gameInfo.debugMode;

问题是当我按下"我"时没有任何反应。如果我执行以下操作,我可以将调试模式关闭,因此我知道这个想法有效:

if (keyboardState.IsKeyDown(Keys.I))
          GameInfo.gameInfo.debugMode = false;

有谁知道我做错了什么?我当然可以通过使用几个if语句来解决它,将true变为false,反之亦然,但与上面的简单陈述相比,它啰嗦。

非常感谢您提供的任何帮助:)

1 个答案:

答案 0 :(得分:1)

这确实需要你有另一个标志,但它会阻止一次多次处理Key事件。

bool keyPressRegistered = false;

...

if (keyboardState.IsKeyDown(Keys.I) && !keyPressRegistered)
{
    keyPressRegistered = true;
    GameInfo.gameInfo.debugMode = !GameInfo.gameInfo.debugMode;
}

...

keyPressRegistered = !(keyPressRegistered && keyboardState.IsKeyUp(Keys.I));