【问题标题】:Connecting Windows Form with XNA Application将 Windows 窗体与 XNA 应用程序连接
【发布时间】:2013-04-24 09:52:11
【问题描述】:

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

【问题讨论】:

  • 整个游戏是假设在一个表格中,还是你只是想要一个启动登录程序?
  • 如果您想获得更多答案,建议您将问题标记为已回答,如果答案是肯定的,您将获得更多回复。我看到你问了很多问题,但从未标记答案。另外,我添加了一个示例。如果您希望在您的游戏中添加控件,请这样说,我可以给您一个示例,如何相当容易地做到这一点。

标签: winforms forms xna connection window


【解决方案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 的引用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    • 1970-01-01
    相关资源
    最近更新 更多