如何在xna中获取名称和性别等用户输入?

时间:2011-01-11 18:56:48

标签: xna

我正在xna中制作游戏,现在我需要输入一些像名字和性别的输入。如果我使用C#会更容易,但我不知道如何在这里做到这一点。

4 个答案:

答案 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(..)

在屏幕上显示它