C# 按下XNA键时等待

C# 按下XNA键时等待,c#,xna,C#,Xna,我正在尝试学习XNA游戏编程,现在我想在按下一个键时等待 我已经用以下方法进行了测试: while (IsKeyPressed = Keyboard.GetState().IsKeyDown(key)); 但是当释放钥匙时,IsKeyPressed也是正确的,该代码实际上是一个旋转锁不要使用旋转锁 您看到的bug可能是因为您使用的是旋转锁,没有机会正确更新 相反,您应该读取正在按下的键,并在与停止处理相关的任何类中设置状态(可能是一个简单的if检查Update函数)。然后,当检测到释放时,更改

我正在尝试学习XNA游戏编程,现在我想在按下一个键时等待 我已经用以下方法进行了测试:

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
       }
 }
您可以始终检查前一个状态,以避免重复调用
等待
继续
,但这将是对所提供代码的某种微观优化