[英]Unity3D loading resources after build
我有很多組圖像 (PNG) 放置在項目資產的Resources
文件夾內的不同子文件夾中。 在編輯器上工作時,我可以毫無問題地從不同的子文件夾加載圖像,只需使用Resources.Load()
命令並提供我嘗試加載的特定圖像的路徑,例如:
firstLeftCC = Resources.Load("Case2/Left/CC/IMG-0004-00001", typeof(Texture2D)) as Texture2D;
在這個例子中,圖像“IMG-0004-00001”被放置在CC文件夾中,CC文件夾在Left文件夾中,Left文件夾在Case2文件夾中,最后Case2文件夾在Resources文件夾中。
但是在構建項目后,對於 Windows 應用程序,當我運行.exe
文件時,它不會加載任何這些圖像。 經過一些研究,似乎問題與資源中存在子文件夾有關,因為在構建中不存在提供給 Resources.Load() 函數以加載圖像的路徑。
我想知道是否有人知道此問題的解決方案,或者是否可以從給定文件夾加載圖像而不是嘗試從 Resources 文件夾加載它們。
在此先感謝您的幫助。
在運行時加載 PNG 文件的可選方法。 您可以在開發過程中將Case2留在 Asset 文件夾中。 為 Windows 構建后,轉到exe構建文件所在的文件夾。 讓我們假設它被稱為Game.exe 。 在Game.exe可執行文件所在的目錄中會有一個名為Game_Data的文件夾。
將Case2文件夾復制到Game_Data文件夾。
它現在應該是這樣的...... Game_Data/Case2/Left/CC/IMG-0004-00001.PNG
現在使用下面的代碼,您可以使用以下代碼輕松讀取您的png文件:
Texture2D firstLeftCC = null;
byte[] imageBytes;
string imagePath = Application.dataPath + "/Case2/Left/CC/IMG-0004-00001.PNG";
if (File.Exists(imagePath))
{
Debug.Log("Exist");
imageBytes = File.ReadAllBytes(imagePath);
firstLeftCC = new Texture2D(10, 10);
firstLeftCC.LoadImage(imageBytes);
}
現在你可以自由地使用 firstLeftCC 作為 Texture2D
注意:Unity 為Assets目錄中的每個文件/文件夾創建 .meta文件/文件夾。 當您復制目錄時, IMG-0004-00001.PNG將有另一個名為IMG-0004-00001.PNG.meta 的文件。 在開發過程中,您不應該將Case2文件夾放在 Assets 文件夾中,否則您必須自己刪除這些文件夾。
包括using System.IO;
除了 Resources.Load,您還可以使用 WWW 類從給定文件夾加載圖像。 為此,URL 必須使用 file:// 協議並根據您的操作系統包含文件的路徑。
http://docs.unity3d.com/ScriptReference/WWW.html
http://answers.unity3d.com/questions/517414/how-to-use-www-to-load-local-files.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.