可切换暂停屏幕XNA 4.0 C#
我正在使用XNA4.0框架用C#制作一个简单的游戏,但在实现暂停功能时遇到了问题 我想让它启动关闭暂停然后,在按下p键取消暂停并开始游戏,然后在任何时候按下p时,再次暂停。到目前为止,它开始暂停并切换到播放,但一旦开始播放就不会暂停。这是我按下P键时暂停的代码 paused是一个布尔值,就像pauseScreen一样,两者都用于触发暂停/取消暂停游戏和显示/隐藏我正在使用的后挡板的if语句。这些都很好用,正是上面的那一点给我带来了麻烦 你知道为什么它只注册一次p键,而不是每次按下它吗 很抱歉,如果这看起来很愚蠢,现在已经很晚了,我想不出任何理由说明这不起作用可切换暂停屏幕XNA 4.0 C#,c#,visual-studio-2010,xna,C#,Visual Studio 2010,Xna,我正在使用XNA4.0框架用C#制作一个简单的游戏,但在实现暂停功能时遇到了问题 我想让它启动关闭暂停然后,在按下p键取消暂停并开始游戏,然后在任何时候按下p时,再次暂停。到目前为止,它开始暂停并切换到播放,但一旦开始播放就不会暂停。这是我按下P键时暂停的代码 paused是一个布尔值,就像pauseScreen一样,两者都用于触发暂停/取消暂停游戏和显示/隐藏我正在使用的后挡板的if语句。这些都很好用,正是上面的那一点给我带来了麻烦 你知道为什么它只注册一次p键,而不是每次按下它吗 很抱歉,如
bool isPause;
bool isPauseKeyDownHandled;
bool isPauseKeyDown = ...;
if (isPauseKeyDown)
{
if (!isPauseKeyDownHandled)
{
isPause = !isPause;
isPauseKeyDownHandled = true;
}
}
else
{
isPauseKeyDownHandled = false;
}
或使用:
似乎在下一个
if
语句中暂停,然后取消暂停。将暂停块中的取消暂停if
语句包装为else
。感谢您的建议。谢谢!第二种解决方案非常有效!我不知道有像prostokiriuah这样的实用程序存在,还有暂停=!停顿太好了,真不敢相信我没有想到这么简单的事情。完美的解决方案,正是我现在想要的,谢谢!谢谢这是我的账户,不是什么官方产品。如果你愿意,可以免费使用。
bool isPause;
bool isPauseKeyDownHandled;
bool isPauseKeyDown = ...;
if (isPauseKeyDown)
{
if (!isPauseKeyDownHandled)
{
isPause = !isPause;
isPauseKeyDownHandled = true;
}
}
else
{
isPauseKeyDownHandled = false;
}
CustomKeyInputManager keyInputManager;
Initialize()
{
keyInputManager = CustomKeyInputManager();
keyInputManager.RegisterKey("pause", Keys.P);
}
Update(GameTime pGameTime)
{
keyInputManager.Update(pGameTime);
if (keyInputManager["pause"].IsPressedAndNotHandled)
{
pause != pause;
keyInputManager["pause"].SetHandled();
}
}