XNA C# - 如何在不按下的情况下按下按钮



我有一个起始图像,当你按回车键时,它会进入游戏。问题是,由于这是一张图像,因此必须按住该按钮才能继续显示游戏屏幕。有没有办法让它一旦按下按钮,图像就会保持关闭状态?

Update Method:
helpScreen = new HelpScreen(this); 
if (!helpScreen.gamestarted && Keyboard.GetState().IsKeyDown(Keys.Enter))
{
    helpScreen.gamestarted = true;
}
Draw Method:
if (!helpScreen.gamestarted)
{
    helpScreen.Draw(spriteBatch);
}

状态存储在主游戏类中:

private bool gameStarted = false;

在更新方法中,检查输入:

if (!gameStarted && Keyboard.GetState().IsKeyDown(Keys.Enter))
{
    gameStarted = true;
}

稍后在 draw 方法中,如果游戏尚未启动,则仅绘制开始图像:

if (!gameStarted)
{
    helpScreen.Draw(spriteBatch);
}

这样,一旦玩家按下按钮,它就不会再次被绘制。此外,使用通用gameStarted字段可以阐明您的意图,并且您可以以简单自然的方式将其他游戏逻辑基于其状态。

我能问一下,你有没有围绕输入做过任何其他编码?还是您从此帮助屏幕开始?因为这涵盖了输入处理的基础知识。

看起来你把它看作是一个事件驱动的系统,而实际上它是一个游戏循环。这意味着您在每个循环中检查一个值,并基于该值而不是事件(例如。咔嚓)

我要做的是记录以前的值,然后在下一个循环中,将该值与当前值进行比较。更新方法中的示例:

//Outside of Update loop declare
KeyboardState previousState = Keyboard.GetState();
//Inside update loop
if (Keyboard.GetState().IsKeyUp(Keys.Enter) && previousState.IsKeyDown(Keys.Enter))
{
        helpScreen = null;     }

这将在按下并释放 Enter 按钮时触发。我会对该代码执行许多其他更改,但这应该为您指出解决此特定问题的正确方向。

相关内容

  • 没有找到相关文章

最新更新