進擊的AssetBundles和它的工具們

0x00 前言

週末的時候在家看了下去年的Unite16 LA的視頻。其中一個session很有趣,是AssetBundles開發團隊Reichert的一個“總結過往,暢想未來”的名爲《Future of Asset Bundles》的session 。

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

0x01 過去的不足

在這個session 中Reichert總結了若干過去AssetBundle的不足,拋開各種各種和性能或底層機制相關的不足不談,我很認同的一點就是Editor內AssetBundle工具的缺位。

當然,Reichert羅列的問題還不止這些,他們甚至還組建了新的Asset Bundle & Build Pipelin團隊來處理解決這些已有的問題同時開發新的功能。其中當然包括了爲我們這些開發者提供更多的Editor工具來處理AssetBundle的相關問題。


這其中包括一個叫做AssetBundles-Browser的工具,我感覺還是挺實用,因此在此和大家分享一下。

0x02 AssetBundles-Browser


雖然AssetBundles-Browser是unity開發的一個工具,但是並沒有包括在正式發佈的Unity版本中。如果想要使用則必須保證Unity的版本在5.6+,並且去GitHub獲取相應的腳本:
AssetBundles-Browser

之後將獲取的項目內的Editor文件夾拷貝到我們已有的項目中,就可以在Editor的Window菜單欄裏找到AssetBundle Browser了。
因爲我的示例項目內沒有Assetbundles,因此AssetBundle Browser窗口內空空如也。(場景以及模型資源來自:Japanese Matsuri City)

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

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

所以接下來我們可以再次向Bundle列表區域拖拽一個需要被製作成Bundle的資源。這次我們發現,在Bundle列表和Asset列表都出現了一個黃色的提示——有四個資源被重複打包了。


那麼怎麼處理這種被重複引用的資源呢?我想各位在製作自己的AssetBundles時肯定都有各種各樣的策略,不過在AssetBundle Browser中處理這種依賴問題卻很簡單——無非是被重複引用的資源單獨打包——創建一個新的Bundle用來存放那些重複引用的資源。

當然,除了能往Bundle列表中拖拽來創建新的Bundle,那麼我們能否直接在Asset列表中操作Bundle內的Asset呢?這同樣是可以的。我們既可以直接將別的Asset拖入到某個Bundle內,也可以直接刪除某個Bundle內的Asset。

0x03 Build

當AssetBundle的內容設置完成之後,我們就可以構建我們的Bundle文件了。我相信之前大家也是通過拓展編輯器來調用相應的BuildPipline的代碼來構建Bundle文件,但是有了AssetBundle Browser之後,我們可以很方便的在AssetBundle Browser的窗口內構建Bundle文件。

勾選適合自己使用的選項,選擇適合自己的壓縮算法都可以實現。
之後,我們就能看到生成的AssetBundles文件了。

是不是比之前方便了很多?


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章