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

时间:2010-05-09 03:23:09

标签: c# visual-studio-2008 windows-7 64-bit xna

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

spriteBatch = new SpriteBatch(GraphicsDevice);

甚至可能会这样做:

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

其中graphics是GraphicsDeviceManager。但是,无论我尝试哪个版本,当我尝试将GraphicsDevice对象传递给spriteBatch的构造函数时,我总是得到一个ArgumentNullException。我找到的几乎每个教程都给出了第一个,只有一个提到了第二个选项。有没有其他人遇到类似的错误或知道是什么原因造成的?我使用Visual Studio 2008在Windows 7 x64中工作。

编辑:

我似乎找到了问题。我试图在构造函数中执行该代码(这是我认为它应该去的地方)。我做了一些谷歌搜索并找到答案here。谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

为了完整起见,我在这里提出答案。

代码

spriteBatch = new SpriteBatch(GraphicsDevice);

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