XNA关闭游戏

时间:2013-06-14 15:58:53

标签: c# process xna exit

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

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

    Game1.GetInstance().Exit();

GetInstance是我自己的返回Game1实例的方法,所以我可以从其他类中退出游戏。

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

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

3 个答案:

答案 0 :(得分: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认为它仍在调试。

答案 1 :(得分:0)

如果Game1是单身,它应该有效,你总是可以使用Game1的枚举,然后在Game1中退出。

答案 2 :(得分: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()
,同时仍然可以使用提供的使用语句。