XNA关闭了游戏

本文关键字:游戏 XNA | 更新日期: 2023-09-27 18:18:39

所以我正在创造一款有趣的游戏:)并且在特定的点上我尝试着关闭游戏。

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

    Game1.GetInstance().Exit();

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

我如何从不同的类别关闭游戏?我所做的是在game1构造函数中保存指向game1实例的指针,然后我可以返回它以在其他类中使用它。我希望我讲得很清楚。

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

XNA关闭了游戏

您可以在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认为它还在调试

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

我使用的是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()
,同时仍然可以使用语句使用