Assetbundle的記憶體處理

2021-07-10 13:21:09 字數 1821 閱讀 3474

那麼下面就舉乙個assetbundle的例子:

assetbundle的記憶體處理 1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

ienumerator downloadandcache ()// memory is freed from the web stream (www.dispose() gets called implicitly)

}

}

記憶體分配的三個部分匹夫已經在**中標識了出來:

web stream

:包括了壓縮的檔案,解壓所需的快取,以及解壓後的檔案。

assetbundle

:web stream中的檔案的對映,或者說引用。

例項化之後的物件:就是引擎的各種資源檔案了,會在記憶體中建立出來。

那就分別解析一下:

1

www www = www.loadfromcacheordownload (bundleurl, version)

將壓縮的檔案讀入記憶體中

建立解壓所需的快取

將檔案解壓,解壓後的檔案進入記憶體

關閉掉為解壓建立的快取 1

assetbundle bundle = www.assetbundle;

assetbundle此時相當於乙個橋梁,從web stream解壓後的檔案到最後例項化建立的物件之間的橋梁。

所以assetbundle實質上是web stream解壓後的檔案中各個物件的對映。而非真實的物件。

實際的資源還存在web stream中,所以此時要保留web stream。 1

instantiate(bundle.mainasset);

通過assetbundle獲取資源,例項化物件

最後各位可能看到了官網中的這個例子使用了:

1

2

using(www www = www.loadfromcacheordownload (bundleurl, version))

這種using的用法。這種用法其實就是為了在使用完web stream之後,將記憶體釋放掉的。因為www也繼承了idispose的介面,所以可以使用using的這種用法。其實相當於最後執行了:

1

2

//刪除web stream

www.dispose();

ok,web stream被刪除掉了。那還有誰呢?對assetbundle。那麼使用

1

2

//刪除assetbundle

bundle.unload(false);

ok,寫到這裡就先打住啦。寫的有點超了。有點趕也有點臨時,日後在補充編輯。

Unity 匯出Assetbundle的指令碼

今天檢視了一下如何打包資源assetbundle 的東西 現在粘上 分開打包 把project 檢視中包含的資源一一打包 打包為乙個資源包 打包pc平台的資源包檔案 menuitem assets build assetbundle from selection to buildtarget is ...

AssetBundle載入資源的過程

參考 1 載入總manifest檔案 2 獲取相關依賴檔案列表 3 載入所有相關依賴檔案 4 載入目標資源 5 解除安裝所有相關依賴檔案。ienumerator loadasset else 載入我們需要的檔案 www www new www bundleurl cube.unity3d yield...

Unity之AssetBundle的實際應用

assetbundle是unity一種特有的資源格式,其他的專案我不了解,從入行到現在經歷的所有的unity遊戲專案,所需的資源都是打成bundle的形式供專案使用。assetbundle的優點總結為以下幾點 1.資源壓縮,可以減小安裝包的大小。安裝包大小其實對於一些中小cp來說是必須要控制的,或者...