2011-01-11 29 views

回答

4

当您使用XNA时,您正在使用C#。 XNA框架只是您使用C#编程的一组dll。

至于输入,你可以编码自己的控件或使用一些现有的库。两种选择都有其优点和缺点。

我们在有一个FAQ上称为XNA论坛“什么GUI系统是那里的XNA框架”,可能会成为你的有用读 - >http://forums.create.msdn.com/forums/t/15274.aspx

0

如果我这样做,我会听对于某些按键,然后是“Enter”按钮。我会尽可能多地重复我所需要的。代码如下。

KeyboardState key; 
OldKeyboardState oldKey; 
String input; 
//Puts final input in this 
String finalIn; 
String finalIn2; 
String finalIn3; 

protected override void Update(GameTime gameTime) 
{ 
    key = Keyboard.GetState(); 
    //Do for all acceptable characters 
    if (key.IsKeyDown(Keys.A) && key.IsKeyDown(Keys.RightShift) && oldKey.IsKeyUp(Keys.A) && oldKey.IsKeyUp(Keys.RightShift)) input = input + "A"; 
    else if (key.IsKeyDown(Keys.A) && oldKey.IsKeyUp(Keys.A) input = input + "a"; 
    //Etc. 
    //Finalize input when enter is pressed 
    if(key.IsKeyDown(Keys.Enter) && oldKey.IsKeyUp(Keys.Enter)) 
    { 
     finalIn = input; 
     input = ""; 
    } 
    //Finalize input when enter is pressed for second input 
    if(key.IsKeyDown(Keys.Enter) && oldKey.IsKeyUp(Keys.Enter) && finalIn != "") 
    { 
     finalIn2 = input; 
     input = ""; 
    } 
    //Etc. 
    //At end set oldKey = key, so we have the current one and the old one 
    oldKey = key; 
} 
protected override void Draw(GameTime gameTime) 
{ 
    GraphicsDevice.Clear(Color.CornflowerBlue); 
    //If desired, add in a draw string to show user what is being inputed 
    base.Draw(gameTime); 
} 
0

实现您自己的控件更容易。在字符串缓冲区中使用spritebatch并注册击键,然后使用spriebatch.DrawString(..)在屏幕上显示它(...)