4

所以我正在构建一个有趣的游戏:) 并且在特定点我尝试关闭游戏。

我发现要关闭游戏我需要在 Game1 中使用函数 Exit() 所以我尝试了下一个代码:

    Game1.GetInstance().Exit();

GetInstance 是我自己的方法,它返回 Game1 实例,因此我将能够从其他类中退出游戏。

如何关闭不同班级的游戏?我所做的是将指向 game1 实例的指针保存在 game1 构造函数中,然后我可以返回它以在其他类中使用它。我希望它很清楚(如果不是很抱歉)。

那么如何使用其他类的退出函数呢?

4

3 回答 3

5

你可以在你的game1类中创建一个方法

public void Quit()
{
    this.Exit();
}

现在在您要退出的其他类中,您可以添加对主类的引用

public class SomeOtherClassYouWantToExitFrom
{
       public Game1 game; //Reference to your main class

       public void DoStuff()
       {
             //Do Stuff
             game.Quit();
       }
}  

创建SomeOtherClassYouWantToExitFrom类时,需要将游戏对象设置为 Game1 实例。您也可以将其作为参数传递给构造函数

   Blah = new SomeOtherClassYouWantToExitFrom(...) { game = this };

使用 Exit 方法对我来说很好,我不确定为什么 Visual Studio 认为它仍在调试。

于 2013-06-14T16:25:38.583 回答
0

如果 Game1 是一个单例,它应该可以工作,你总是可以使用 Game1 的枚举,然后在 Game1 中退出。

于 2013-06-14T16:37:38.463 回答
0

我正在使用 MonoGame 3.4 版,但我在尝试自己解决问题时偶然发现了这个问题......

这就是我所做的非常好的工作(我需要退出 Game1 中不存在的课程)

我注意到 Program.cs 已经是一个静态类,所以我利用了它:

// Program.cs
using System;

namespace XnaGame
{
#if WINDOWS || LINUX
    public static class Program
    {
        public static Game1 Game;

        [STAThread]
        static void Main()
        {
            using (var game = new Game1())
            {
                Game = game;
                Game.Run();
            }
        }
    }
#endif
}

那时我可以访问

Program.Game.Exit()
从我游戏中的任何地方,同时仍然可以从所提供的using语句中受益。

于 2016-01-11T04:27:09.643 回答