日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Unity读取内部、外部资源详解

發布時間:2023/12/9 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Unity读取内部、外部资源详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Unity讀取內部、外部資源詳解

unity讀取資源大概分為兩部分:一部分為內部資源,什么是內部資源,就是導入unity中的資源,我們稱之為Asset,這部分資源unity有現成的管理方法。另外一部分是外部資源,沒有導入unity,也不是打包的AssetBundle資源,比方說就是一個txt、png、lua等資源,需要自己去實現讀取以及資源的管理。下面具體介紹:

內部資源

先說下個平臺路徑問題:

  • IOS平臺

    Application.dataPath : Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/xxx.app/Data 可讀Application.streamingAssetsPath : Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/xxx.app/Data/Raw 可讀Application.persistentDataPath : Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Documents 可讀可寫Application.temporaryCachePath : Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Library/Caches 可讀可寫

    dataPath是app程序包安裝路徑,app本身就在這里,此目錄是只讀的。streamingAssetsPath是dataPath下的Raw目錄。

    app的獨立數據存儲目錄下有三個文件夾:Documents,Library和tmp。

    Documents目錄,存儲需要長期保存的數據,如熱更新內容,iCloud會自動備份此目錄。

    Library目錄,這個目錄下有兩個子目錄,Caches和Preferences。
    ?? ?Caches是一個相對臨時的目錄,適合存放下載緩存的臨時文件,空間不足時可能會被系統清除,Application.temporaryCachePath返回的就是此路徑。我把熱更新 的臨時文件寫在這里,等一個版本的所有內容更新完全后,再把內容轉移到Documents目錄。
    ??? Preferences用于應用存儲偏好設置,用NSUserDefaults讀取或設置。

    tmp目錄,臨時目錄,存放應用運行時臨時使用的數據。

  • Android

    Application.dataPath : /data/app/xxx.xxx.xxx.apk Application.streamingAssetsPath : jar:file:///data/app/xxx.xxx.xxx.apk/!/assets Application.persistentDataPath : /data/data/xxx.xxx.xxx/files Application.temporaryCachePath : /data/data/xxx.xxx.xxx/cache

    Android這幾個路徑讀取權限和IOS一樣,需要注意的就是Application.streamingAssetsPath目錄是jar包協議,在unity中需要用www去加載文件,其他的路徑可以直接用文件流去讀取。

  • Editor

    這個就不說了。。。通用的。。。
  • 關于資源的釋放問題,已經有小伙伴詳細的解答了,就不啰嗦了,點傳送門。
    傳送門

    外部資源

    再來說說外部資源,外部資源需要遵循ftp 、jar、http、https等協議,具體的拼接需要注意多一個或者少一個“/”的問題,然后用www去加載就行。讀取外部資源大部分用到pc上,android、ios等還是扔到persistentDataPath 路徑里。具體例子如下:

    public Texture2D LoadTexture2D(string path) {string dataPath = "file:///" + path; WWW www = new WWW(dataPath);while (!www.isDone) //同步等待,當然你可以采用協程,自己決定就好{}if (www.error != null)return null;Texture2D texture = new Texture2D(4, 4, TextureFormat.ARGB32, false); //初始大小隨便設置,只要大于1就好,false是不開啟mipamapstexture.LoadImage(www.bytes);//你可以設置一些Texture相關屬性,www加載的texture2d是默認的屬性texture.wrapMode = TextureWrapMode.Clamp;www.Dispose(); //斷開連接,如果不斷開的話,下次就會提示還在占用連接return texture; }需要注意的就是釋放資源,直接用GameObject.DestroyImmediate(texture)或者GameObject.Destroy(texture),這樣才能卸載掉內存,外部資源不是一個Asset,unity不會去幫你管理的,這時需要注意內存泄漏問題。

    資源釋放傳送門

    個人實踐,如有錯誤歡迎留言交流。

    總結

    以上是生活随笔為你收集整理的Unity读取内部、外部资源详解的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。