0

我有一个起始图像,当你按下回车键时,它会进入游戏。问题是因为这是一张图片,所以必须按住按钮才能保持显示游戏画面。有没有办法让它一旦你按下按钮,图像就会保持关闭?

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);
}
4

2 回答 2

0

我可以问一下,您是否对输入进行了任何其他编码?或者您是从这个帮助屏幕开始的?因为这涵盖了输入处理的基础知识。

您似乎将其视为事件驱动系统,而实际上它是一个游戏循环。这意味着您检查每个循环的值并将输出基于该值,而不是通过事件(例如单击)

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

//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 按钮时触发。我将对该代码执行许多其他更改,但这应该为您指明解决此特定问题的正确方向。

于 2012-12-07T12:36:15.297 回答
0

将状态存储在您的主游戏类中:

private bool gameStarted = false;

在您的更新方法中检查输入:

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

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

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

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

于 2012-12-07T12:19:25.303 回答