我有一张初始图片,当你按回车键时,它会进入游戏状态。问题在于,由于这是一张图像,因此必须按住该按钮才能保持显示游戏画面。有没有办法让它一旦你按下按钮,图像保持关闭?
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);
}
答案 0 :(得分:0)
将状态存储在主游戏类中:
private bool gameStarted = false;
在您的更新方法中,请检查输入:
if (!gameStarted && Keyboard.GetState().IsKeyDown(Keys.Enter))
{
gameStarted = true;
}
稍后在您的绘制方法中,只绘制起始图像,如果游戏尚未开始:
if (!gameStarted)
{
helpScreen.Draw(spriteBatch);
}
一旦玩家按下按钮,就不会再画出来了。同样使用一般gameStarted
字段可以明确您的意图,您可以通过简单而自然的方式将其他游戏逻辑建立在其状态上。
答案 1 :(得分:0)
我可以问一下,你有没有围绕输入进行任何其他编码?或者您是从这个帮助屏幕开始的?因为这涵盖了输入处理的基础知识。
看起来你把它看作一个事件驱动系统,实际上它是一个游戏循环。这意味着您检查每个循环的值并将输出基于该值,而不是通过事件(例如,单击)
我要做的是记录前一个值,然后在下一个循环中,将该值与当前值进行比较。 Update方法中的示例:
//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按钮时将触发此操作。我将对该代码执行许多其他更改,但这应该指出您针对此特定问题的正确方向。