XNA ContentLoadException 在主项目中使用 DLL 中的 load 命令加载纹理时
本文关键字:load 中的 命令 加载 纹理 DLL ContentLoadException 项目 XNA | 更新日期: 2023-09-27 18:36:38
我刚刚尝试编写一个非常基本的游戏引擎,首先在XNA的2D世界中显示简单的瓷砖。这是我第一次编写DLL,一切都很顺利,直到我尝试为ContentManager编写LoadAll函数,这导致了我现在遇到的问题。我得到了一个ContentLoadException,即使文件显然存在,否则程序将无法进入内容加载阶段。
XNB 文件肯定存在,并且已经设置了 Content.RootDirectory。我已经经历了在这里和其他网站上可以找到的所有此类问题,但找不到任何解决方案。如果有人能帮忙,我将永远感激不尽。
public static Dictionary<String, T> LoadAll<T>(this ContentManager Content, string directory)
{
DirectoryInfo dir = new DirectoryInfo(Content.RootDirectory + "/" + directory);
if (!dir.Exists)
{
throw new DirectoryNotFoundException();
}
Dictionary<String, T> result = new Dictionary<string, T>();
FileInfo[] files = dir.GetFiles();
foreach (FileInfo file in files)
{
string key = Path.GetFileNameWithoutExtension(file.Name);
result[key] = Content.Load<T>(dir.ToString() + "/" + key);
}
return result;
}
显然,我在 Content.Load 方法上收到错误,我得到
"Error loading "Content'Tiles'bricktile". File not found."
我在这里找到了这段代码,但即使将其重写为列表形式,我也会遇到同样的错误。奇怪的部分是加载"文件路径"时出错显示肯定存在的 xnb 文件的正确路径。如果有人想要我的 DLL 的源代码,我可以轻松上传。
谢谢!
编辑:真的应该说我怎么称呼这个:
textures = Content.LoadAll<Texture2D>(tilesFolder);
将错误的路径传递给 Content.Load<>() 方法。 dir.ToString()
将返回完整路径(包括内容的根目录)。但是您需要没有根目录的路径:
result[key] = Content.Load<T>(directory + "/" + key);