我有一个很小的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,反之亦然,但与上面的简单陈述相比,它啰嗦。
非常感谢您提供的任何帮助:)
答案 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));