簡體   English   中英

構建后Unity3D加載資源

[英]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文件夾在Re​​sources文件夾中。

但是在構建項目后,對於 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM