C# - XNA:不断检查按键

时间:2016-03-06 13:35:56

标签: c# xna keypress

我看过所有关于它的帖子,但似乎没有一个对我有用。我想在游戏的背景中不断检查按键。

这就是我试图让它发挥作用,但它不会。

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或线程中不断检查,但我应该在哪里查看呢?

3 个答案:

答案 0 :(得分:0)

我认为如果您是C#的新手,那么您可能也是XNA的新手。 XNA具有内置的游戏循环功能,每秒调用其Update和Draw方法60次。大多数游戏逻辑应该写入Update方法或从Update方法调用。这意味着您在Update方法中编写的代码或从Update调用的代码运行60次/秒。通常,您在那里调用Keyboard.GetState()。这意味着您正在以60 /秒的速度轮询键盘以获取任何输入。

通过一些初学者教程可能会对您有所帮助:

http://www.bing.com/search?q=xna+beginner+tutorial&qs=AS&pq=xna+begi&sk=AS1&sc=5-8&sp=2&cvid=6167E65B683F4A5EBB6488D48C8D011F&FORM=QBRE

答案 1 :(得分:0)

您应该在Update上调用它,因为Update每秒运行60次。

答案 2 :(得分:0)

您的问题是键盘输入的命名空间不能在控制台应用程序中运行。它专为C#XNA Framework而设计,用于制作游戏。我建议切换到XNA进行游戏编程,因为控制台应用程序并不是为他们设计的。