「翻譯」Unity中的AssetBundle詳解(三)

構(gòu)建AssetBundles

AssetBundle工作流程的文檔中,我們有一個(gè)示例代碼蜀漆,它將三個(gè)參數(shù)傳遞給BuildPipeline.BuildAssetBundles函數(shù)诱贿。讓我們更深入地了解我們實(shí)際上在說(shuō)什么莫瞬。
Assets/AssetBundles:這是AssetBundles將被輸出到的目錄逼争。您可以將其更改為所需的任何輸出目錄熄驼,只需在嘗試構(gòu)建之前確保文件夾實(shí)際存在。

BuildAssetBundleOptions

有多種不同的BuildAssetBundleOptions選項(xiàng)可以選擇烘豹。相關(guān)的各個(gè)選項(xiàng)可以參閱腳本API文檔中的關(guān)于BuildAssetBundleOptions的內(nèi)容瓜贾。
雖然隨著需求的變化和增加,您可以自由組合BuildAssetBundleOptions選項(xiàng)携悯,但有三個(gè)特定的BuildAssetBundleOptions是用來(lái)處理AssetBundle壓縮:

  • BuildAssetBundleOptions.None:此bundle選項(xiàng)使用LZMA格式壓縮祭芦,這種壓縮是序列化的數(shù)據(jù)文件的單一壓縮的LZMA流。 LZMA壓縮的文件在使用前需要對(duì)整個(gè)bundle解壓縮憔鬼。這導(dǎo)致最小的文件大小和由于解壓縮而稍微增加的加載時(shí)間龟劲。值得注意的是,當(dāng)使用此BuildAssetBundleOptions時(shí)轴或,為了使用捆綁包中的任何資源昌跌,必須首先解壓縮整個(gè)捆綁包。一旦bundle解壓縮后照雁,將使用LZ4在磁盤上重新壓縮蚕愤,LZ4壓縮在使用bundle中的資產(chǎn)時(shí),不需要提前對(duì)整個(gè)bundle進(jìn)行解壓縮。這最適合用于bundle中的資產(chǎn)萍诱,以便從bundle中使用一個(gè)資產(chǎn)將意味著所有資產(chǎn)將被加載悬嗓。打包角色或場(chǎng)景的所有資源都是可能使用的捆綁包的一些示例。由于較小的初始文件大小裕坊,利用LZMA壓縮僅推薦用于從異地主機(jī)下載資源包包竹。一旦文件被下載,它會(huì)緩存為lz4壓縮包籍凝。
  • BuildAssetBundleOptions.UncompressedAssetBundle: 此bundle選項(xiàng)以數(shù)據(jù)完全未壓縮的方式構(gòu)建bundle周瞎。未壓縮的缺點(diǎn)是較大的文件下載大小。但是静浴,一旦下載的加載時(shí)間會(huì)更快堰氓。
  • BuildAssetBundleOptions.ChunkBasedCompression: 此bundle選項(xiàng)使用稱為L(zhǎng)Z4的壓縮方法,這導(dǎo)致比LZMA更大的壓縮文件大小苹享,但不像LZMA那樣在使用之前不需要整個(gè)捆綁包解壓縮双絮。 LZ4使用基于塊的算法,允許將AssetBundle以切片(pieces)或“塊”(chunks)的形式加載得问。解壓縮單個(gè)塊允許使用包含的資產(chǎn)囤攀,即使AssetBundle的其他塊未被解壓縮。

使用ChunkBasedCompression與未壓縮的bundle具有可比較的加載時(shí)間宫纬,還具有減小磁盤大小的附加優(yōu)勢(shì)焚挠。

BuildTarget

BuildTarget.Standalone: 在這里,我們正在告訴構(gòu)建管道漓骚,我們將使用這些AssetBundles的目標(biāo)平臺(tái)蝌衔。
您可以在BuildTarget的API的腳本參考文檔中找到可用的顯式構(gòu)建目標(biāo)的列表。但是蝌蹂,如果您不希望在構(gòu)建目標(biāo)中進(jìn)行硬編碼噩斟,則可以隨時(shí)利用EditorUserBuildSettings.activeBuildTarget,這將自動(dòng)找到你目前的設(shè)置構(gòu)建和構(gòu)建AssetBundles基于的目標(biāo) 平臺(tái)孤个。
一旦正確設(shè)置了構(gòu)建腳本剃允,就可以構(gòu)建bundles了。如果您按照上述腳本示例齐鲤,請(qǐng)單擊Assets > Build AssetBundles以啟動(dòng)該過(guò)程斥废。
現(xiàn)在你已經(jīng)成功構(gòu)建了AssetBundles,你可能會(huì)注意到你的AssetBundles目錄有可能比你預(yù)期更多的文件给郊。確切地說(shuō)牡肉,是2 *(n + 1)個(gè)文件。讓我們花一點(diǎn)時(shí)間來(lái)看看BuildPipeline.BuildAssetBundles的產(chǎn)量丑罪。

對(duì)于你在編輯器中指定的每個(gè)AssetBundle荚板,你將注意到一個(gè)包含AssetBundle nameAssetBundle name +.manifest的文件凤壁。

將會(huì)有一個(gè)額外的bundle和manifest,它不會(huì)與您創(chuàng)建的任何AssetBundle共享一個(gè)名稱跪另。而是以它位于的目錄(AssetBundles構(gòu)建到的目錄)命名拧抖。這是Manifest Bundle。我們將在以后討論更多的內(nèi)容以及如何使用它免绿。

The AssetBundle File

這是缺少.manifest擴(kuò)展名的文件唧席,以及你在運(yùn)行時(shí)加載的內(nèi)容,以加載你的資產(chǎn)嘲驾。
AssetBundle文件是一個(gè)在內(nèi)部包含多個(gè)文件的存檔淌哟。此存檔的結(jié)構(gòu)可能會(huì)稍有變化,具體取決于它是AssetBundle還是場(chǎng)景AssetBundle辽故。這是一個(gè)正常的AssetBundle的結(jié)構(gòu):


ArchiveFileSystem

場(chǎng)景AssetBundle更改自標(biāo)準(zhǔn)的AssetBundles徒仓,因?yàn)樗槍?duì)場(chǎng)景及其內(nèi)容的流加載進(jìn)行了優(yōu)化。該圖像顯示場(chǎng)景bundle的內(nèi)部結(jié)構(gòu):

The Manifest File

對(duì)于生成的每個(gè)包誊垢,包括附加的清單包掉弛,都會(huì)生成關(guān)聯(lián)的清單文件。清單文件可以使用任何文本編輯器打開喂走,并且包含諸如循環(huán)冗余校驗(yàn)(CRC)數(shù)據(jù)和包的依賴性數(shù)據(jù)的信息殃饿。對(duì)于正常的AssetBundles,他們的清單文件將如下所示:

ManifestFileVersion: 0
CRC: 2422268106
Hashes:
  AssetFileHash:
    serializedVersion: 2
    Hash: 8b6db55a2344f068cf8a9be0a662ba15
  TypeTreeHash:
    serializedVersion: 2
    Hash: 37ad974993dbaa77485dd2a0c38f347a
HashAppended: 0
ClassTypes:
- Class: 91
  Script: {instanceID: 0}
Assets:
  Asset_0: Assets/Mecanim/StateMachine.controller
Dependencies: {}

Which shows the contained assets, dependencies, and other information.

The Manifest Bundle that was generated will have a manifest, but it’ll look more like this:

ManifestFileVersion: 0
AssetBundleManifest:
  AssetBundleInfos:
    Info_0:
      Name: scene1assetbundle
      Dependencies: {}

這將顯示AssetBundles如何關(guān)聯(lián)以及它們的依賴關(guān)系∮蟪Γ現(xiàn)在乎芳,只要明白這個(gè)bundle包含了AssetBundleManifest對(duì)象,這對(duì)于找出在運(yùn)行時(shí)加載哪個(gè)bundle依賴是非常有用的帖池。要了解有關(guān)如何使用此bundle和manifest對(duì)象的更多信息奈惑,請(qǐng)參閱使用本地AssetBundles的文檔。

原文鏈接:
Building AssetBundles


同系列文章

「翻譯」Unity中的AssetBundle詳解(一)

「翻譯」Unity中的AssetBundle詳解(二)

「翻譯」Unity中的AssetBundle詳解(三)

「翻譯」Unity中的AssetBundle詳解(四)


本文作者: Sheh偉偉
本文鏈接: http://davidsheh.github.io/2017/08/21/「翻譯」Unity中的AssetBundle詳解(三)/
版權(quán)聲明: 本博客所有文章除特別聲明外睡汹,均采用 CC BY-NC-SA 3.0 許可協(xié)議携取。轉(zhuǎn)載請(qǐng)注明出處!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末帮孔,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子不撑,更是在濱河造成了極大的恐慌文兢,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件焕檬,死亡現(xiàn)場(chǎng)離奇詭異姆坚,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)实愚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門兼呵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)兔辅,“玉大人,你說(shuō)我怎么就攤上這事击喂∥Γ” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵懂昂,是天一觀的道長(zhǎng)介时。 經(jīng)常有香客問(wèn)我,道長(zhǎng)凌彬,這世上最難降的妖魔是什么沸柔? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮铲敛,結(jié)果婚禮上褐澎,老公的妹妹穿的比我還像新娘。我一直安慰自己伐蒋,他們只是感情好工三,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著咽弦,像睡著了一般徒蟆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上型型,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天段审,我揣著相機(jī)與錄音,去河邊找鬼闹蒜。 笑死寺枉,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的绷落。 我是一名探鬼主播姥闪,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼砌烁!你這毒婦竟也來(lái)了筐喳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤函喉,失蹤者是張志新(化名)和其女友劉穎避归,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體管呵,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡梳毙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了捐下。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片账锹。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡萌业,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出奸柬,到底是詐尸還是另有隱情生年,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布鸟缕,位于F島的核電站晶框,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏懂从。R本人自食惡果不足惜授段,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望番甩。 院中可真熱鬧侵贵,春花似錦、人聲如沸缘薛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)宴胧。三九已至漱抓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間恕齐,已是汗流浹背乞娄。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留显歧,地道東北人仪或。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像士骤,于是被迫代替她去往敵國(guó)和親范删。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 這部分主要討論了AssetBundle的如下知識(shí): AssetBundle的基礎(chǔ)知識(shí) 使用AssetBundle的...
    Wenchao閱讀 1,611評(píng)論 0 5
  • AssetBundles AssetBundle是一個(gè)存檔文件拷肌,其中包含平臺(tái)在運(yùn)行時(shí)加載的特定資產(chǎn)(模型到旦,紋理,預(yù)...
    Sheh偉偉閱讀 1,776評(píng)論 0 2
  • 翻譯:莫銘原文地址:AssetBundle usage patterns 本系列中的上一篇文章覆蓋了AssetBu...
    莫銘閱讀 5,261評(píng)論 1 12
  • 這一章來(lái)說(shuō)說(shuō)AssetBundles巨缘,介紹下它的基礎(chǔ)系統(tǒng)厢绝,還有一些和AssetBundles進(jìn)行交互的核心API。...
    莫銘閱讀 2,842評(píng)論 6 10
  • 【每日拔拔草】:三次思維空性带猴;7/26 1.看見顧客臉上露出微笑表達(dá)非常喜歡今天的療程源于我曾經(jīng)支持和信任他人的服...
    敏樂(lè)麻麻閱讀 344評(píng)論 2 0