2012-06-08 32 views
0

我剛剛嘗試編寫非常基本的遊戲引擎,首先在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); 

回答

1

您傳遞了錯誤的路徑Content.Load <>()方法。 dir.ToString()將返回完整路徑(包括內容的根目錄)。但你需要的路徑沒有根目錄:

result[key] = Content.Load<T>(directory + "/" + key); 
+0

謝謝,一直在鑽研這個多年。菜鳥錯誤! – DaJobat