可切换暂停屏幕XNA 4.0 C#

可切换暂停屏幕XNA 4.0 C#,c#,visual-studio-2010,xna,C#,Visual Studio 2010,Xna,我正在使用XNA4.0框架用C#制作一个简单的游戏,但在实现暂停功能时遇到了问题 我想让它启动关闭暂停然后,在按下p键取消暂停并开始游戏,然后在任何时候按下p时,再次暂停。到目前为止,它开始暂停并切换到播放,但一旦开始播放就不会暂停。这是我按下P键时暂停的代码 paused是一个布尔值,就像pauseScreen一样,两者都用于触发暂停/取消暂停游戏和显示/隐藏我正在使用的后挡板的if语句。这些都很好用,正是上面的那一点给我带来了麻烦 你知道为什么它只注册一次p键,而不是每次按下它吗 很抱歉,如

我正在使用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();
    }
}