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