【问题标题】:Windows Phone 7 XNA game quits on load, no error messagesWindows Phone 7 XNA 游戏在加载时退出,没有错误消息
【发布时间】:2011-06-22 19:49:57
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 我不确定我是否理解。当您在 update 或 draw 中创建 spritebatch 时,游戏会优雅退出?还是它会在 etc 处引发异常?
  • 在更新/绘制调用完成执行后抛出异常,然后我得到我的帖子中引用的异常,之后游戏就退出了。没有错误或警告,我无法“捕捉”异常,因为它发生在幕后......

标签: windows-phone-7 xna quit


【解决方案1】:

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

Game.GraphicsDevice on MSDN:

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

【讨论】:

  • 这也是我最初的怀疑(尽管它之前在 Initailize 中工作过)。当我将它移动到 LoadContent() 时它仍然无法工作,当我将它移动到运行 after loadcontent 函数完成执行时它仍然无法使用完全相同的错误..
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多