【发布时间】:2012-11-28 23:28:05
【问题描述】:
我正在 XNA 中编写自己的游戏引擎,并开始将其移植到 MonoGame 中,以便我可以将它放在 Android/iOS/Windows 8 上。由于某种原因,当主创建新游戏时,我得到一个空引用异常目的。所以分配对象的代码是:
static void Main(string[] args)
{
//game g = new game();
using (game game = new game())
{
game.Run();
}
}
错误如下
public lesaEngine()
这是游戏对象的基本构造函数。
继承一如既往
class lesaEngine : Microsoft.Xna.Framework.Game
class game : lesaEngine
不确定这里发生了什么。在普通 XNA 下可以正常工作。我正在使用 Visual Studio 2012 作为端口。
【问题讨论】:
-
NRE 是在
game.Run()调用中发生,还是由new game()表达式中调用的构造函数抛出?如果在lesaEngine()构造函数中抛出错误,您可以发布该构造函数的主体吗? -
除了@phoog 所说的之外,构造函数不是继承的,因此如果需要,您的游戏构造函数必须调用 lesaEngine 构造函数。
-
@ChrisDunaway 如果派生类的构造函数没有显式调用另一个构造函数,那么它将隐式调用基类的默认构造函数。如果基类中没有默认构造函数,或者无法访问,代码将无法编译。
-
改写我的第一条评论:你能发布 NullReferenceException 的堆栈跟踪吗?
-
@Miau 看起来像是一个答案。你为什么不把它放在答案框中?