男人需要帮助解决这个问题一段时间。我在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();
但它没有用,仍然给出了这个错误。
未将对象引用设置为对象的实例
我是否遗漏了某些东西,或者我应该安装一些东西来解决这个问题?
答案 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();
}
这似乎有效。