我正在xna中制作游戏,现在我需要输入一些像名字和性别的输入。如果我使用C#会更容易,但我不知道如何在这里做到这一点。
答案 0 :(得分:4)
您在使用XNA时正在使用C#。 XNA框架只是一组使用C#编写的dll。
至于获取输入,您可以编写自己的控件或使用一些现有的库。两种选择都有其优点和缺点。
我们在XNA论坛上有一个名为“适用于XNA框架的GUI系统”的常见问题解答,可能对您有用 - > http://forums.create.msdn.com/forums/t/15274.aspx
答案 1 :(得分:0)
使用现有的用户界面库,例如xWinForms。您可以在UI library for XNA问题中找到更多选项。
答案 2 :(得分: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);
}
答案 3 :(得分:0)
实现自己的控件更容易。在字符串缓冲区中使用spritebatch并注册键击,然后使用spriebatch.DrawString(..)
在屏幕上显示它