AssetBundle詳解
Asset(資源)Bundle(捆綁),顧名思義AssetBundle是一種用于存儲資源的壓縮格式打包后的合計,它可以存儲如模型,紋理圖,音頻,甚至場景等等資源(不包括C#腳本),可以在游戲運行時被加載,主要作用有減少安裝包體大小,實現(xiàn)可加載內(nèi)容(DLC),減少運行時內(nèi)存壓力等等。
結(jié)合上一節(jié)UI管理器中的OpenWindow方法中需要傳入窗口的Path地址,這里的地址實際上就是去AssetBundle中取得存儲的預(yù)制,返回給UImanger后在進(jìn)行實例化。這里需要實現(xiàn)一個AseetBundleManager來實現(xiàn)對于AB包的加載,卸載,以及讀取便于統(tǒng)一管理等等。
AssetBundle Browser
AssetBundleBrowser是一個打包AseetBundle的便捷插件,可以瀏覽不同AB包中的內(nèi)容以及壓縮方式等等。這里簡單略過,主要學(xué)習(xí)代碼打包的流程。

通過添加Asset Labels的方式給資源分配到不同的AssetBundle中,同屬一個Labels的資源會被打包到一起,不同的包中可能存在依賴關(guān)系,現(xiàn)在版本的處理方式是存在依賴關(guān)系的資源會被自動加入到所屬包中,但是這樣可能導(dǎo)致A包和B包都依賴于C包,那么C包會被分別加入到A包和B包中造成一定的浪費。

寫一個拓展編輯器腳本用來打包AssetBundle,AssetBundle Browser插件可以直接實現(xiàn)類似的效果。(編輯器拓展腳本必須放在Asset的Editor文件夾下,沒有得話自己新建一個)

把AB包打包到我們指定輸出的路徑下面,"Assets/BuildABs",這里測試打包了BuildABs以及prefab,接下來我們需要寫一個資源管理器用于從AssetsBundle中取得對應(yīng)的資源,期望可以通過資源路徑來加載對應(yīng)的資源。
? 資源管理器
通過資源管理器,我們可以通過AssetBundle路徑位置+資源名字的方式返回到存儲的資源,例如在上一章中的UImanager的OpenWindow方法實現(xiàn)打開一個存儲好的窗口預(yù)制。
路徑存儲
對于一些需要經(jīng)常使用過的路徑,例如資源的位置,AssetBundle的位置,可以寫一個專門的Path靜態(tài)類用來存儲,當(dāng)需要修改這些路徑時,只需要修改Path靜態(tài)類中的值即可,不影響其他調(diào)用的部分。