進擊的AssetBundles和它的工具們


0x00 前言

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

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

0x01 過去的不足

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

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 City

QQ截圖20170710160850.png

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

QQ截圖20170710162814.png

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

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM