兩種壓縮方式: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()