那麼下面就舉乙個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來說是必須要控制的,或者...