【问题标题】:ContentLoadException problem内容加载异常问题
【发布时间】:2013-01-29 07:09:54
【问题描述】:

我对 XNA 很陌生。实际上我有 kurt jaegers 的XNA 4.0 书,所以我安装了 VS 2010 和 XNA 4.0 并编写了我的第一个程序。但是那个程序没有成功运行,它一直显示ContentLoadException文件未找到。所以我在网上做了一些研究,发现 XNA 4.0 存在一些问题。所以我卸载了 VS 2010 & XNA 4.0 并安装了 VS 2008(express edition) & XNA 3.0 。然后我在上面编译了我的第一个程序,我运行成功了。

但是,现在我的新项目再次面临同样的问题。我已经尝试了两种语法:

xx = this.Content.Load<Texture2D>("TitleScreen");
xx = Content.Load<Texture2D>(@"TitleScreen");

并且不存在拼写不匹配的问题。请Mods指导我。请告诉我为什么我一次又一次地遇到这个问题。

System Specs :
XP sp3,i3,2gb RAM.

【问题讨论】:

  • 您的内容应该包含在您的资源项目中。确保您已先将其导入那里。您不能只是神奇地“弹出”内容,必须先将其编译到您的资源应用程序中。

标签: xna


【解决方案1】:

您要通过 ContentManager 加载的内容需要在内容项目中。假装它看起来像这样

Mygame.Content > SomeFolder > textureName

您可以使用content.Load&lt;Texture2D&gt;("SomeFolder/textureName") 来获取它。如果它位于 Content 项目的根目录,content.Load&lt;Texture2D&gt;("textureName") 将起作用。如果(并且因为)它不存在,则需要检查两件事

  1. 右键单击纹理并转到属性。查看 AssetName 属性。这是您用来通过内容管理器加载它的内容。尝试使用此名称。
  2. Content Manager 查找的根目录是“Content”。看看Content.RootDirectory 看看它是什么。如果不是“内容”,请将其更改为该内容。这也可以。

【讨论】:

    【解决方案2】:

    为了正确加载内容,您需要使用泛型方法

    ContentManager.Load<T>
    

    例如,如果您尝试加载 Texture2D 元素,请使用以下语法:

    Texture2D texture = Content.Load<Texture2D>("textureName");
    

    阅读更多关于在this link中加载内容的信息。

    【讨论】:

    • 你的项目输出路径中是否有 TitleScreen.xnb (默认)?
    • 我应该在哪里找到那个文件,我在这里有点新所以不知道所有的细微差别。
    【解决方案3】:

    ContentManagers 由默认 Game 对象构造函数以外的任何对象实例化存在一个已知问题,这会导致您遇到的问题。

    如果您确实使用的 ContentManager 对象不是 Game 对象上提供的对象,则解决方案是:

    当你实例化 ContentManager 时,你应该将它的 RootDirectory 属性设置为

    @“内容”

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-12
      • 1970-01-01
      • 2013-05-21
      • 2020-07-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多