代码之家  ›  专栏  ›  技术社区  ›  mnuzzo

GraphicsDevice在我的XNA Windows游戏项目中为空

  •  1
  • mnuzzo  · 技术社区  · 16 年前

    我刚刚开始尝试用XNA3.1制作一个简单的游戏,帮助自己学习C#和XNA。然而,我遇到了一个有趣的问题。在所有教程中,当实例化一个新的spriteBatch对象时,应该传递GraphicsDevice,如下所示:

    spriteBatch = new SpriteBatch(GraphicsDevice);
    

    GraphicsDevice objGraphics = new graphics.GraphicsDevice;
    spriteBatch = new SpriteBatch(objGraphics);
    

    其中graphics是GraphicsDeviceManager。但是,无论我尝试哪个版本,当我尝试将GraphicsDevice对象传递给spriteBatch的构造函数时,总是会得到ArgumentNullException。几乎我找到的每个教程都给出了第一个选项,只有一个提到了第二个选项。有没有其他人遇到过类似的错误,或者知道是什么导致了这种情况?我正在使用VisualStudio2008在Windows7x64中工作。

    编辑:

    我好像发现了问题。我试图在构造函数中执行该代码(这是我假设它应该去的地方)。我在谷歌上搜索了一下,找到了答案 here

    1 回复  |  直到 16 年前
        1
  •  3
  •   mnuzzo    16 年前

    为了完整起见,我把答案放在这里。

    spriteBatch = new SpriteBatch(GraphicsDevice);
    

    只能在Game类的LoadContent()方法中执行。我把它放在构造函数中,此时GraphicsDevice对象还没有定义 according to one of the answers to this question