如何解决XNA:从子文件夹加载到Content
| 尝试简化XNA纹理加载时遇到了很多麻烦。我已经放弃了从指定目录动态加载纹理的操作,因此现在我只是尝试使用解决方案内容中的文件夹的有组织集合。我正在尝试使用以下代码行:Content.Load<Texture2D>(\".\\\\Graphics\\\\Characters\\\\Char1\");
\“ Char1 \”是正确的资产名称,并且存储在我的解决方案资源管理器中“内容”下的“ \ Graphics \\ Characters \”中,但仍会引发“找不到文件”错误。我在这里做错了什么?
编辑:原来调试bin文件夹创建了错误的目录结构:\\ Graphics \\ Characters \\ Characters。谢谢您的帮助!
解决方法
尝试删除斜杠。例如,
Content.Load<Texture2D>(\"Graphics\\\\Characters\\\\Char1\");
您是否正在为这些资产使用内容项目?您可以设置\'Content Root \'目录,并且资产均位于该目录的相对路径中。
查看此msdn条目,希望对您有所帮助。祝好运。
, 用您的话说,该文件位于\'Content \'中,请确保在加载任何内容之前执行此操作:
Content.RootDirectory = \"Content\"
并摆脱\'。\\\'部分。
, 您可以将“ 4”中的“ 3”属性设置为内容文件的根位置。这将使您的路径正常工作。
另外,不需要单点“ 5”
, 您的工作目录是什么?通常,它是bin \\ Debug(生成的exe的位置),除非您告诉Visual Studio将内容文件复制到此目录,否则它们就不会位于该目录中。
解决此问题的几种方法
您可以将内容文件添加到Visual Studio,并将它们设置为Copy
的Deploy模式。
您可以手动复制一次
您可以检查当前目录是否包含特定文件,如果不包含该文件,则可以向上两个级别查看
您可以使用常量来定义基本目录并根据您是否要调试来对其进行伸缩。
这是一个例子3
private string BaseDirectory = \".\";
if (!Directory.Exists(\".\\Graphics\"))
{
BaseDirectory = @\"..\\..\";
}
...
Content.Load<Texture2D>(BaseDirectory + @\"\\Graphics\\Characters\\Char1\");
这是4的示例,请注意,如果您在发布模式下运行,它将无法顺利进行。
#if DEBUG
private const string BaseDirectory = @\"..\\..\";
#else
private const string BaseDirectory = @\".\";
#endif
...
Content.Load<Texture2D>(BaseDirectory + @\"\\Graphics\\Characters\\Char1\");
另请注意,以@
开头的字符串不允许\\
转义,因此更易于使用来定义目录。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。