C# 按下XNA键时等待
我正在尝试学习XNA游戏编程,现在我想在按下一个键时等待 我已经用以下方法进行了测试:C# 按下XNA键时等待,c#,xna,C#,Xna,我正在尝试学习XNA游戏编程,现在我想在按下一个键时等待 我已经用以下方法进行了测试: while (IsKeyPressed = Keyboard.GetState().IsKeyDown(key)); 但是当释放钥匙时,IsKeyPressed也是正确的,该代码实际上是一个旋转锁不要使用旋转锁 您看到的bug可能是因为您使用的是旋转锁,没有机会正确更新 相反,您应该读取正在按下的键,并在与停止处理相关的任何类中设置状态(可能是一个简单的if检查Update函数)。然后,当检测到释放时,更改
while (IsKeyPressed = Keyboard.GetState().IsKeyDown(key));
但是当释放钥匙时,IsKeyPressed也是正确的,该代码实际上是一个旋转锁不要使用旋转锁 您看到的bug可能是因为您使用的是旋转锁,没有机会正确更新 相反,您应该读取正在按下的键,并在与停止处理相关的任何类中设置状态(可能是一个简单的
if
检查Update
函数)。然后,当检测到释放时,更改状态,以便if
检查通过
比如:
//Main Update
if (Keyboard.GetState().IsKeyDown(key))
myObject.Wait();
else
myObject.Continue();
//Other object
public void Wait()
{
waiting = true;
}
public void Continue()
{
waiting = false;
}
public void Update()
{
if (!waiting)
{
//Update state
}
}
您可以始终检查前一个状态,以避免重复调用等待
和继续
,但这将是对所提供代码的某种微观优化