【发布时间】:2015-05-07 04:30:13
【问题描述】:
我正在使用 XNA 4.0 框架在 C# 中制作一个简单的游戏,但是在实现 pause 功能时遇到了问题。
我希望它开始关闭暂停,然后在按下P键取消暂停并开始游戏时,然后在按下 P 的任何时候,再次暂停。到目前为止,它开始暂停并切换到播放,但一旦开始播放就不会暂停。这是我按下 P
时暂停的代码 protected override void Update(GameTime gameTime)
{
// Allows the game to exit
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
{
this.Exit();
}
KeyboardState newState = Keyboard.GetState();
// Is P key down?
if (newState.IsKeyDown(Keys.P))
{
// If P key is down now but not down last update and game isn't paused; pause
if (!oldState.IsKeyDown(Keys.P) && !paused)
{
// Pausing the game
paused = true;
pauseScreen = true;
}
// If P key is down now but not last update and game is pause; unpause
if (!oldState.IsKeyDown(Keys.P) && paused)
{
// Unpausing
paused = false;
pauseScreen = false;
}
}
oldState = newState;
paused 是一个布尔值,因为 pauseScreen 两者都用于触发 if 语句暂停/取消暂停游戏并显示/隐藏我正在使用的后挡板。这些都工作得很好,就是上面那一点给我带来了麻烦。
任何想法为什么它只记录一次按下 P 键而不是每次按下它?
对不起,如果这看起来很愚蠢,已经晚了,我想不出任何原因导致这不起作用。
【问题讨论】:
-
您似乎在下一个
if语句处暂停然后取消暂停。使用暂停块中的else包装 unpausingif语句 -
感谢您的建议。
标签: c# visual-studio-2010 xna