1

我试图让 Windows Phone 7 XNA 游戏在模拟器中运行,但是在调用 Game.Initialize 函数后它只是退出了。它给出的唯一输出是:

Microsoft.Xna.Framework.Graphics.dll 'taskhost.exe'(托管)中发生了“System.NotSupportedException”类型的第一次机会异常:已加载“Microsoft.Xna.Framework.GamerServices.dll”类型“的第一次机会异常” Microsoft.Xna.Framework.dll 中发生 System.Threading.ThreadAbortException'

不知道为什么,相同的程序在 Windows 桌面上运行时运行良好。

好的,经过进一步调查,我发现发生错误是因为我在 Game.Initialize 中初始化 spritebatch:

        base.Initialize();
        if (spriteBatch == null)
        {
            spriteBatch = new SpriteBatch(GraphicsDevice);
        }

如果我删除 spriteBach = new ... 它运行良好,但是当我初始化它时,更新/绘制功能游戏将退出...

4

2 回答 2

2

您不能使用GraphicsDevice(例如,通过SpriteBatch创建它所需的各种图形设备资源)直到LoadContent被调用,因为图形设备在此之前还没有准备好。

请参阅Game.GraphicsDeviceMSDN

在调用 LoadContent 之前不要访问此属性。

于 2011-06-22T11:10:39.613 回答
0

好的,我发现了问题所在。我基本上是在使用 Windows Phone 7 的到达 API 不喜欢的纹理包装时尝试绘制非 2 次幂纹理。我不确定为什么我没有为此引发异常(上次我做这样的事情时实际上引发了异常)。

我的问题应该更清楚,当我没有初始化 spritebatch 时,我也在保持绘制调用。

无论如何,这就是问题所在。

于 2011-06-22T11:38:04.803 回答