【发布时间】:2016-03-06 13:35:56
【问题描述】:
我查看了所有我能找到的关于它的帖子,但似乎没有一个对我有用。我想在游戏的后台不断检查按键。
这是我试图让它工作的东西,但它不会。
namespace Base
{
class MainClass
{
public static int X = 0;
public static int Y = 0;
public static void Main(string[] args)
{
while (true)
{
KeyboardState CurrentKeyboardState = Keyboard.GetState();
if (CurrentKeyboardState.IsKeyDown(Keys.Left))
{
MainClass.X += 1;
}
Console.WriteLine(X + ", " + Y);
}
}
}
}
按左键不会提高 X 值,这意味着没有响应。 我在某处读到过,您无法在 Main 或线程中不断检查,但那我应该在哪里检查呢?
【问题讨论】:
-
我应该说我是 C# 新手。
-
在 XNA 游戏中运行后台线程来不断轮询输入通常是一个非常糟糕的主意。线程的 CPU 开销以及确保从您告诉数据进入 GPU 并且它实际上去的那一刻起没有数据损坏的复杂性通常是不值得的。因此,由于 Xna 游戏中的 Update 方法每秒循环 60 次,因此通常在游戏线程上的 update 方法中检查输入更改通常就足够了。
-
这些样本中的任何一个都是这样做的:xbox.create.msdn.com/en-US/education/catalog/…