Monogame对象引用未设置为实例错误

时间:2013-08-13 06:47:24

标签: c# xna-4.0 monogame visual-c#-express-2010

男人需要帮助解决这个问题一段时间。我在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();

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

  

未将对象引用设置为对象的实例

我是否遗漏了某些东西,或者我应该安装一些东西来解决这个问题?

2 个答案:

答案 0 :(得分:1)

根据您提供的信息,听起来好像是在MonoGame的Run方法中抛出异常。

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

下一个最好的事情 - 您可以在不需要源的情况下完成 - 将查看获取堆栈跟踪的例外的详细信息。这至少会告诉您哪种方法对异常负责。从那里,您可以在the source code中查找,并查看是否提供了任何其他信息。

(对于此特定异常,“对象引用未设置为对象的实例”,堆栈跟踪不太有用,因为它被.NET框架抛出(可能是由于MonoGame中的错误,而不是由于(例如)API使用中的错误而被MonoGame本身抛出。)


如果我必须猜测原因(我这样做),我猜你没有在构造函数中正确设置GraphicsDeviceManager你的Game1类的注意事项(注意你的构造函数在Run之前运行的方式)。并且,MonoGame不会检测到这种情况并抛出信息异常,而是直到崩溃为止。

但这假设其他一切正常。例如,MonoGame无法以任何理由初始化图形设备也可能是一个问题。或许多其他事情,真的...

(另一种选择可能是尝试针对XNA构建游戏,并查看是否给出了什么结果。)

答案 1 :(得分:0)

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

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

这似乎有效。