Unity中AssetBundle打包文件大致解读
本文只講述使用AssetBundle打包出來的幾種文件信息。如果想學習怎么打包資源的話,請挪步UnityAssetBundle打包
目錄
- 前提1:只有一個AssetBundle,打包資源數量為一個
- 打包成功后生成的文件
- 文件“AssetBundles”
- 文件“AssetBundles.manifest”
- 文件“wall.vvb”
- 文件“wall.vvb.manifest”
- 前提2:只有一個AssetBundle,打包資源數量為多個
- 打包成功后生成的文件
- 文件“AssetBundles”
- 文件“wall.vvb.manifest”
- 文件“wall.vvb”
- 文件“AssetBundles.manifest”
- 前提3:兩個AssetBundle
- 打包成功后生成的文件
- 文件“AssetBundles”
- 文件“AssetBundles.manifest”
- 文件“wall.vvb”
- 文件“wall.vvb.manifest”
- 文件“wall2.vvb”
- 文件“wall2.vvb.manifest”
- 總結:
前提1:只有一個AssetBundle,打包資源數量為一個
以打包一個cube預制體為例。cube預制體設置如下圖
打包成功后生成的文件
打包完成,會生成以下文件
文件“AssetBundles”
這個文件我也沒搞懂。不過應該是此目錄的一些配置文件吧。跟AssetBundle包的使用好像并無太大關聯。(知道的朋友可以留言說明一下)
文件“AssetBundles.manifest”
這個文件大家可以使用記事本打開,可以看到里面存儲的是ab包的信息。由于這里只有一個ab包,所以看不出來。實際上這里記錄著所有ab包。打開如下
文件“wall.vvb”
這個文件就是我們獲取資源時,需要讀取的文件。此文件才是真正包含著所有資源。你可把它當做Unity資源打包時,壓縮后的資源集合。
文件“wall.vvb.manifest”
這個文件包含了“wall.vvb”資源中打包了哪些信息。因為暫時只打包了一個wall,所以“Assets”字段只有一條記錄。而一來項“Dependencies”字段為空是因為我們并沒有設置一來ab包;具體有關AssetBundle依賴的問題就不在此詳述。打開如下
前提2:只有一個AssetBundle,打包資源數量為多個
將與cube相關的資源都進行打包,且打包到同一個AssetBundle包中。新增資源如下圖
打包成功后生成的文件
依然是四個文件。因為我們依然只有一個ab包。
文件“AssetBundles”
同上,不多做解釋。
文件“wall.vvb.manifest”
先打開看看:
很容易發現,除了CRC,其他均無變化。這是因為AssetBundleInfos中保存的是包數量的信息。我們因為只有一個包,所以沒變化。至于CRC,簡單來說就是你的資源放到服務器上,別人要下載時,可以通過這個進行文件完整性驗證。詳細內容大家可以去查閱官方文檔。
文件“wall.vvb”
大家應該發現這個文件變大了;這是因為我們加進去的資源變多了。所以這個資源“壓縮包”就變大了。
文件“AssetBundles.manifest”
打開先看看:
這里Assets多了幾條記錄,也就是我們新加進此AssetBundle的資源。然后CRC也發生了變化。
前提3:兩個AssetBundle
兩個AssetBundle同時打包出來,會發生什么呢?
首先,保持前提2,我們再將之前的cube進行賦值一份,但我們設置成兩個AssetBundle進行打包。如下圖:
下面是AssetBundle設置
打包成功后生成的文件
我們發現,比之前多了一個“wall2.vvb”和“wall2.vvb.manifest”
文件“AssetBundles”
同上,不贅述。
文件“AssetBundles.manifest”
先打開看看:
與之前相比,除CRC依然變化了之外,AssetBundleInfos也發生了變化。這是因為我們新增了一個名字為“wall2”的AssetBundle。
文件“wall.vvb”
與之前相同,大小也無變化。
因為我們對此AssetBundle沒做更改,既沒增也沒減。
文件“wall.vvb.manifest”
打開看:
我們發現,這個沒有發生任何變化。是因為記錄中并沒有新增嗎?這個大家可以嘗試刪除之前打包好的文件再重新打包一下,看看CRC是否是因為資源量沒變更而保持一致呢?
文件“wall2.vvb”
這個跟“wall1.vvb”作用一模一樣,就是相當于一個資源的集合。我們在程序代碼中引用的,也是這個。
文件“wall2.vvb.manifest”
我相信很多小伙伴已經才到里面的內容了。話不多說,來看看是否與你想的一樣呢。
沒錯,這個就跟前提1時的“wall1.vvb.manifest”一樣。
同時“Dependencies”也多了一條記錄。簡單說一下,由于我們在"wall.vvb"包中已經對材質和貼圖進行打包,而“Wall2.prefab”是從“Wall1.prefab”賦值過來的,也就是使用的資源在“wall.vvb”已經打包了,這樣Unity會自動生成一個依賴,而不至于再次進行打包。
這里還涉及到打包分組策略的一下知識。我也就不多說了。大伙兒可以自己通過文章開頭鏈接學習一下打包過程,自己多打包幾次,觀察一下打包大小還有manifest文件內容變化。
總結:
其實還有一種情況沒有說明,那就是在指定AssetBundle時,可以使用“AB/Scene/Wall”這種形式。系統會根據你的目錄結構查找,如果沒有文件則會創建文件。大家可以動手測試一下。
最后,如果有什么講錯的地方,希望大伙評論區指正。謝謝!
總結
以上是生活随笔為你收集整理的Unity中AssetBundle打包文件大致解读的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GO TO SHEN ZHEN
- 下一篇: python示波器 波形数据_通过示波器