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

如何在xna中获取用户输入,如姓名和性别?,xna,Xna,我正在用xna制作游戏,现在我需要输入一些信息,比如姓名和性别。如果我使用C#会容易得多,但我不知道如何在这里做到这一点。使用现有的用户界面库,例如。您可以在问题中找到更多选项。使用现有的用户界面库,如。您可以在问题中找到更多选项。当您使用XNA时,您正在使用C。XNA框架只是一组DLL,您可以使用C#对它们进行编程 至于获取输入,您可以编写自己的控件代码,也可以使用一些现有的库。这两种选择各有利弊 我们在XNA论坛上发布了一个名为“XNA框架有哪些GUI系统”的常见问题解答,这可能对您来说是一

我正在用xna制作游戏,现在我需要输入一些信息,比如姓名和性别。如果我使用C#会容易得多,但我不知道如何在这里做到这一点。

使用现有的用户界面库,例如。您可以在问题中找到更多选项。

使用现有的用户界面库,如。您可以在问题中找到更多选项。

当您使用XNA时,您正在使用C。XNA框架只是一组DLL,您可以使用C#对它们进行编程

至于获取输入,您可以编写自己的控件代码,也可以使用一些现有的库。这两种选择各有利弊

我们在XNA论坛上发布了一个名为“XNA框架有哪些GUI系统”的常见问题解答,这可能对您来说是一本有用的读物——>

当您使用XNA时,您正在使用C。XNA框架只是一组DLL,您可以使用C#对它们进行编程

至于获取输入,您可以编写自己的控件代码,也可以使用一些现有的库。这两种选择各有利弊


我们在XNA论坛上有一个名为“XNA框架有哪些GUI系统”的常见问题解答,这可能对您很有用->

如果我这样做,我会听一些键,然后是“回车”按钮。然后,我会根据需要重复多次。代码如下

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);
}

如果我这样做,我会听一些键,然后是“回车”按钮。然后,我会根据需要重复多次。代码如下

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);
}

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

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