【问题标题】:NullReferenceException on creating an instance of an inheriting class创建继承类的实例时出现 NullReferenceException
【发布时间】: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 看起来像是一个答案。你为什么不把它放在答案框中?

标签: c# mono monogame


【解决方案1】:

您是否创建了一个新的 Win8 单游戏项目?如果是这样,入口点应该看起来更像这样

#if !NETFX_CORE 
  using (MyGame game = new MyGame()) 
  { 
      game.Run();
  } 
#endif 
#if NETFX_CORE 
  var factory = newMonoGame.Framework.GameFrameworkViewSource<MyGame>();
  Windows.ApplicationModel.Core.CoreApplication.Run(factory); 
#endif } 

【讨论】:

    猜你喜欢
    • 2012-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-08
    • 2013-07-20
    • 1970-01-01
    相关资源
    最近更新 更多