我正在创建一个XNA应用程序,我想在启动XNA应用程序之前添加一个Windows窗体,它要求人员输入用户名和密码,我创建了所有这些但是当我运行我的程序时它会直接打开XNA窗口。请告诉我如何使用Windows窗体运行XNA?
答案 0 :(得分:1)
您希望如何在游戏中创建表单取决于您,但在开始游戏之前检查某些内容的最佳方法可能是放入Program.cs文件中。
我做的一个例子是:
using System.Windows.Forms;
static class Program
{
static void Main(string[] args)
{
#if WINDOWS
if (MessageBox.Show("Do you wish to start?", "Start Game", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
using (Game1 game = new Game1())
{
game.Run();
}
}
#endif
}
}
这会提示用户是否应该启动游戏。然后,如果您使用自己的表单自定义它,而是检查一些数据并返回有效的DialogResult。如果DialogResult == DialogResult.OK,那么用户是有效的,也许对话框可以存储登录信息,以便游戏可以获得它(如果需要),也许在game.Run()之后执行此操作;
在创建自定义InputDialog时,它非常简单。我有一个动态输入框,我刚刚为此定制。然后,简单的布局变为:
using System.Windows.Forms;
static class Program
{
static void Main(string[] args)
{
#if WINDOWS
XNASignIn signinDialog = new XNASignIn();
DialogResult result = DialogResult.Abort;
while (result == DialogResult.Abort)
{
result = signinDialog.ShowDialog();
if (result == DialogResult.Abort)
MessageBox.Show("You entered the wrong username and password");
}
if (result == DialogResult.Cancel)
MessageBox.Show("You cancelled the login, the game will exit");
else if (result == DialogResult.OK)
{
using (Game1 game = new Game1())
{
game.Run();
}
}
#endif
}
我的登录对话框的完整源代码:
只需创建一个类并将其复制。
请记住为XNA项目添加对System.Windows.Forms的引用。