Assetbundle包的依賴關系與加載方式的深入


兩種壓縮方式:Lzma (默認的), Lz4

四種加載方法:

1,從內存中加載:LoadfromMemory()內存

2,從本地加載:LoadFromFile

3,從本地或服務器加載www(下面會提到)

4,從服務器端加載unityWebRequest

加載依賴資源包

1,獲得總的依賴配置(streamingAssets)

2,根據名稱找到目標加載資源的所有依賴

3,加載所有的依賴資源

加Lua腳本Lua格式改為bytes后綴文件

資源路徑:

Application.datapath;

Application.streamingAssetsPath(只讀不可寫)

Application.persistentDataPats(特殊 可讀可寫 運行時!)

Application.temporarycachePath

1,Windows.manifest(總的配置文件)

依賴關系:一個東西要完整的顯示出來,必須要另外一個東西。

2,單個Assetbundle包配置文件:里面記錄的是

(1)單個Assetbundle里面的資源

(2)記錄單個Asssetbundle的依賴關系

bundle包的依賴關系加載:

 

 (哈哈哈 機智如我 上圖是舉例 )

第一個的:

加載A需要做些什么事情那?

1,加載B和C

2,加載A

卸載A?

1,先卸載B,C依賴關系

2,判斷B,C是否有依賴 B,C卸載

第二個:

加載A?

1,判斷依賴關系A判斷B,C  |B,C判斷D

卸載B?

1,只能卸載B,D關系

卸載C?

1,卸載C,D關系

2,卸載D

插個小話題

引用計數:

Gc機制也是存在引用計數的關系: 被誰引用(List<>) 引用的誰(List<>)

下面是bundle包三塊內存存放與加載方式

 

 1,bundle包放在網絡用WWW加載然后加載到本地,bundle包在本地用Assetbundle.LoadFromFile方法加載(內存鏡像)

釋放內存:Assetbundle.Unload(false)

2,解壓Assetbundle:Assetbundle.Load()將鏡像里的zip包解壓出來

釋放內存:Resource.Unloadasset(obj)只能卸載obj類型 shader 網格 材質 貼圖都不能卸載 而Resource.Unloadunusedasset()用這個API釋放 shader 網格 材質 貼圖

3,GameObjece.instance使用解壓出來的資釋

釋放內存:Destroy()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM