c# - 在 XNA 中按下按键时等待

标签 c# xna

我正在尝试学习 XNA 游戏编程,现在我想等待按键被按下 我已经测试它:

while (IsKeyPressed = Keyboard.GetState().IsKeyDown(key));

但是当按键被释放时 IsKeyPressed 也为 true

最佳答案

该代码实际上是一个自旋锁。 不要使用自旋锁

您看到的错误可能因为您正在使用自旋锁,它没有机会正确更新。

相反,您应该读取按下的键,并在与停止处理相关的任何类中设置状态(可能是 Update 函数中的简单 if 检查)。然后,当您检测到发布时,您将更改状态,以便 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
       }
 }

您始终可以检查之前的状态,以避免重复调用 WaitContinue,但这将是对所提供代码的微优化。

关于c# - 在 XNA 中按下按键时等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27950250/

相关文章:

c# - 反弹旋转边界球体

c# - 具有 DesiredCapability 的 Selenium C# chromedriver

c# - Xceed DataGrid SelectedItem问题

c# - 在游戏中制作大量咒语时遇到困难

c# - 尝试理解模板(XNA 4.0、Windows Phone 7)

c# - XNA 3D 程序的正确 OOP 设计是什么?

c# - 如何在 C# 上创建网络 map ?

c# - 如何在 Entity Framework 5.0 生成的所有实体中添加 Serializable 属性

c# - CNTK LSTM 评估

c# - Microsoft Xna Texture2D 和旋转