2016-03-06 34 views
0

我已經看過所有可以找到的關於它的文章,而且它們都不適合我。我想不斷檢查遊戲背景中的按鍵。C# - XNA:不斷檢查按鍵

這是我試圖讓它工作,但它不會。

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或線程中經常檢查,但我應該在哪裏檢查它?

+0

我應該說我是C#的新手。 – DeePad

+0

運行後臺線程以持續輪詢輸入在XNA遊戲中通常是一個非常糟糕的主意。線程的CPU開銷以及確保從告訴數據轉到GPU並實際執行時沒有數據損壞的複雜性通常是不值得的。因此,由於Xna遊戲中的Update方法每秒循環60次,因此檢查遊戲線程中更新方法中經常使用的輸入更改通常就足夠了。 –

+0

我該怎麼做? – DeePad

回答

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

0

爲更新運行每秒60次你應該把它的更新。

0

你的問題是鍵盤輸入的命名空間在控制檯應用程序中不起作用。它專爲C#XNA Framework而設計,用於製作遊戲。我建議切換到XNA進行遊戲編程,因爲控制檯應用程序不是爲他們設計的。

+0

1.我弄明白了。 2.它不是一個控制檯應用程序,我只是將它打印在控制檯中以查看結果。 3.無論如何,謝謝! :) – DeePad