1

我正在创建一个 XNA 应用程序,我想在启动 XNA 应用程序之前添加一个 Windows 表单,询问用户他的用户名和密码登录,我创建了所有这些但是当我运行我的程序时它直接打开 XNA 窗口。请告诉我如何使用 Windows 窗体运行 XNA?

4

1 回答 1

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
    }

我的登录对话框的完整源代码:

http://pastebin.com/yVZbtxH8

只需创建一个类并将其复制进去。

请记住为您的 XNA 项目添加对 System.Windows.Forms 的引用。

于 2013-04-24T10:44:53.587 回答