進擊的AssetBundles和它的工具們

0x00 前言

週末的時候在家看了下去年的Unite16 LA的視頻。其中一個session頗有趣,是AssetBundles開發團隊Reichert的一個「總結過往,暢想將來」的名爲《Future of Asset Bundles》的session 。
QQ截圖20170709175749.pnghtml

簡而言之是過去的AssetBundles有不少問題,之後AssetBundles的API可能又會有一些很大的變化。固然,一個好消息是unity顯然和微軟同樣,這兩年已經意識到啦開源的意義 一部分代碼(高層c#部分的代碼)在GitHub上已經開源:
AssetBundles-Browser
AssetBundles-BuildPipeline
在開源社區內經過高頻度的交流反饋推動項目的進度,而不是花幾個月時間捂出來一個實驗室裏的怪胎,顯然前者讓人更有信心。
不過本文想要聊到主要內容並不是AssetBundle,而是一個輔助工具——AssetBundles-Browser。git

0x01 過去的不足

在這個session 中Reichert總結了若干過去AssetBundle的不足,拋開各類各類和性能或底層機制相關的不足不談,我很認同的一點就是Editor內AssetBundle工具的缺位。
QQ截圖20170709181515.png
固然,Reichert羅列的問題還不止這些,他們甚至還組建了新的Asset Bundle & Build Pipelin團隊來處理解決這些已有的問題同時開發新的功能。其中固然包括了爲咱們這些開發者提供更多的Editor工具來處理AssetBundle的相關問題。github

QQ截圖20170710154045.png
這其中包括一個叫作AssetBundles-Browser的工具,我感受仍是挺實用,所以在此和你們分享一下。算法

0x02 AssetBundles-Browser

AssetBundles-Browser-1.png
雖然AssetBundles-Browser是unity開發的一個工具,可是並無包括在正式發佈的Unity版本中。若是想要使用則必須保證Unity的版本在5.6+,而且去GitHub獲取相應的腳本:
AssetBundles-Browser編程

QQ截圖20170710155823.png

以後將獲取的項目內的Editor文件夾拷貝到咱們已有的項目中,就能夠在Editor的Window菜單欄裏找到AssetBundle Browser了。
由於個人示例項目內沒有Assetbundles,所以AssetBundle Browser窗口內空空如也。(場景以及模型資源來自:Japanese Matsuri Cityc#

QQ截圖20170710160850.png

此時咱們既能夠像以往同樣設置目標資源的Asset Labels,也能夠直接將資源拖拽到AssetBundle Browser的Bundle列表區域。
例如,我能夠直接將場景文件sample拖到AssetBundle Browser的Bundle列表區域。這樣一個Bundle就建立好了,它的Asset Labels也會被自動設置。在AssetBundle Browser的右側——Asset列表區域羅列了這個Bundle所包含的Asset。session

QQ截圖20170710162814.png

咱們能夠很方便的定位目標Asset或者是按照體積對Asset進行排序,甚至檢視是否有一些問題發生,好比某個資源是否被重複打包了。編輯器

因此接下來咱們能夠再次向Bundle列表區域拖拽一個須要被製做成Bundle的資源。此次咱們發現,在Bundle列表和Asset列表都出現了一個黃色的提示——有四個資源被重複打包了。ide

forcefield223345678933633.gif
那麼怎麼處理這種被重複引用的資源呢?我想各位在製做本身的AssetBundles時確定都有各類各樣的策略,不過在AssetBundle Browser中處理這種依賴問題卻很簡單——無非是被重複引用的資源單獨打包——建立一個新的Bundle用來存放那些重複引用的資源。工具

forcefield22334567893363391.gif

固然,除了能往Bundle列表中拖拽來建立新的Bundle,那麼咱們可否直接在Asset列表中操做Bundle內的Asset呢?這一樣是能夠的。咱們既能夠直接將別的Asset拖入到某個Bundle內,也能夠直接刪除某個Bundle內的Asset。

forcefield2233456789336339.gif

0x03 Build

當AssetBundle的內容設置完成以後,咱們就能夠構建咱們的Bundle文件了。我相信以前你們也是經過拓展編輯器來調用相應的BuildPipline的代碼來構建Bundle文件,可是有了AssetBundle Browser以後,咱們能夠很方便的在AssetBundle Browser的窗口內構建Bundle文件。
forcefield22334567893363391.gif

勾選適合本身使用的選項,選擇適合本身的壓縮算法均可以實現。
以後,咱們就能看到生成的AssetBundles文件了。

是否是比以前方便了不少?

ref:

【1】AssetBundles-Browser Manual

slide能夠到這裏到這裏下載:UniteLA-AssetBundles.pdf
各位若是以爲有趣的話,歡迎點個贊。

-華麗的分割線-
最後打個廣告,歡迎支持個人書《Unity 3D腳本編程》

歡迎你們關注個人公衆號慕容的遊戲編程:chenjd01

相關文章
相關標籤/搜索