C# 新华社结束游戏

C# 新华社结束游戏,c#,process,xna,exit,C#,Process,Xna,Exit,所以我正在制作一个有趣的游戏:)在特定的点上,我试图关闭游戏 我发现要关闭游戏,我需要在Game1中使用函数Exit(),因此我尝试了下一个代码: Game1.GetInstance().Exit(); GetInstance是我自己的返回Game1实例的方法,因此我可以从其他类退出游戏 如何从不同的班级结束游戏?我所做的是将指向game1实例的指针保存在game1构造函数中,然后我可以将其返回到其他类中使用。我希望这是清楚的(如果没有,很抱歉) 那么如何使用其他类的退出函数呢?您可以

所以我正在制作一个有趣的游戏:)在特定的点上,我试图关闭游戏

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

    Game1.GetInstance().Exit();
GetInstance是我自己的返回Game1实例的方法,因此我可以从其他类退出游戏

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


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

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

public void Quit()
{
    this.Exit();
}
现在,在要退出的另一个类中,可以添加对主类的引用

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

       public void DoStuff()
       {
             //Do Stuff
             game.Quit();
       }
}  
在创建要从类退出的
其他类时,需要将游戏对象设置为Game1实例。您也可以在构造函数中将其作为参数传递

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

使用退出方法对我来说很好,我不知道为什么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(),同时仍然可以使用提供的using语句。

在主线程/窗体上创建一个事件,以退出并在类中引发它。所以类调用主窗体的事件,主窗体退出。我删除了你的“第二个问题”——因为每个人都在回答第一个问题。你应该为它创建一个单独的问题,尽可能详细地回答它,这样它就可以得到明确的回答。而且,我也不太明白你的问题是什么。如果您的
GetInstance()
方法按预期工作并返回
Game1
的实例,那么您在那里的确切代码(
Game1.GetInstance().Exit()
)应该可以从
所在的任何位置使用
包含
Game1
的命名空间。 Program.Game.Exit()