我剛剛嘗試編寫非常基本的遊戲引擎,首先在XNA的2D世界中顯示簡單的圖塊。這是我第一次編寫一個DLL,直到我試圖爲ContentManager編寫一個LoadAll函數,這導致了我現在遇到的問題,這一切都進展順利。即使文件明顯存在,我也會得到ContentLoadException,否則程序將無法進入內容加載階段。XNA ContentLoadException當使用DLL中的加載命令加載主項目中的紋理時
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."
我發現這個代碼here,但即使它改寫成列表形式,我得到了同樣的錯誤。奇怪的是,錯誤加載「文件路徑」顯示了一個確實存在的xnb文件的正確路徑。如果有人想要我的DLL的源代碼,我可以輕鬆地上傳它。
謝謝!
編輯:要真有說我怎麼稱呼這個:
textures = Content.LoadAll<Texture2D>(tilesFolder);
謝謝,一直在鑽研這個多年。菜鳥錯誤! – DaJobat