天天看點

進擊的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擷取相應的腳本:

之後将擷取的項目内的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

繼續閱讀