1

伙计们需要一段时间来解决这个问题。我在visual C# express 2010和monogame 2.5中编写代码以在windows中制作游戏,使用Texture2D为游戏加载一些图像并编译。但是当我尝试编译项目时,它给了我这个错误。你调用的对象是空的。

    private static Game1 game;

    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        game = new Game1();
        game.Run();//This line gives the warning
    }
}

我试试这段代码

Game1 game = new Game1();
game.Run();

但它没有用,它仍然给出了这个错误。

你调用的对象是空的

我错过了什么还是应该安装一些东西来解决这个问题?

4

2 回答 2

1

根据您提供的信息,听起来异常是从 MonoGame 的Run方法中引发的。

解决此问题的第一步是获取有关原因的更多信息。最好的方法是在一个解决方案中从源代码以及您的项目构建 MonoGame 。这样,当抛出异常时,调试器将在 MonoGame 中发生错误的确切位置中断,您可以使用调试器来确定问题所在。

下一个最好的事情——你可以在不需要源代码的情况下做——是查看异常的详细信息以获取堆栈跟踪。这至少会告诉你什么方法导致了异常。从那里你可以在源代码中查找它,看看它是否提供了任何额外的信息。

(对于这个特殊的异常,“对象引用未设置为对象的实例”,堆栈跟踪的帮助较小,因为它被 .NET 框架抛出(可能是由于 MonoGame 中的错误),而不是显式抛出MonoGame 本身由于(例如)API 使用错误。)


如果我不得不猜测原因(我确实这样做了),我猜你没有GraphicsDeviceManager在你的类的构造函数中正确设置一个Game1(注意你的构造函数之前是如何运行的Run)。而且,MonoGame 并没有检测到这种情况并抛出一个信息异常,而是继续工作直到它崩溃。

但这假设其他一切都正常工作。这也可能是一个问题,例如,MonoGame 出于某种原因无法初始化图形设备。或者很多其他的东西,真的......

(另一种选择可能是尝试针对 XNA 构建您的游戏,看看会产生什么结果。)

于 2013-08-13T09:03:31.547 回答
0

在我的 Monogame 版本中,默认项目总是这样开始:

 static void Main()
        {
            using (var myGame = new Game1())
                myGame.Run();
        }

这似乎有效。

于 2015-03-10T16:31:12.583 回答