Unity5.x新的AssetBundle機制02——壓縮

前言

unity_cover.png

書接上文。本節(jié)來講講Unity5新的AssetBundle機制中的壓縮。
你可以不對你的AssetBundles進行壓縮,這樣雖然文件很大,但是一旦下載好之后訪問是最快的。
通常都會進行壓縮。并且Unity的AssetBundles支持LZMA和LZ4兩種格式的壓縮。

LZMA(Ziv–Markov chain algorithm)格式。

這是Unity打包成AssetBundle時的默認格式,會將序列化數(shù)據(jù)壓縮成一個LZMA流,使用時需要整體解包。優(yōu)點是打包后體積小,缺點是解包時間長導致加載時間長。

LZ4格式

相較LZMA會生成更大的壓縮文件,但優(yōu)點是使用時不需要整體解壓。LZ4是一種基于chunk的算法,加載對象時只有相應(yīng)的chunk會被解壓。該格式需要unity5.3以上的版本,以前的版本并不支持。
如果你對使用不同的壓縮格式和不同的加載API對內(nèi)存開銷及性能的影響感興趣,可以參考這張表:

compression_table.png

如果你不敢興趣,那遵循以下規(guī)則好了:
1.將AssetBundles作為StreamAssets中的內(nèi)容一同發(fā)布。
打包AssetBundles時使用BuildAssetBundleOptions.ChunkBasedCompression選項,加載資源時使用AssetBundle.LoadFromFileAsync接口。這樣做可以達到數(shù)據(jù)壓縮的效果又能使加載資源的效率如同讀取緩存一般。

2.將AssetBundles作為DLCs下載。
打包AssetBundles時使用默認的壓縮格式(LZMA),使用 LoadFromCacheOrDownload/WebRequest來下載和緩存。這樣你將有最大的壓縮率。

3.加密
打包AssetBundles時使用BuildAssetBundleOptions.ChunkBasedCompression選項,加載資源時使用LoadFromMemoryAsync接口(這可能是該接口及其同步版本唯一應(yīng)該使用到的地方)。

4.自定義壓縮
打包AssetBundles時使用BuildAssetBundleOptions.UncompressedAssetBundle選項,使用自己的算法壓縮,加載資源時用相應(yīng)算法解壓后使用LoadFromFileAsync接口。

你應(yīng)該盡量使用異步的接口。


[參考鏈接][1]http://docs.unity3d.com/Manual/AssetBundleCompression.html


上一篇:Unity5.x新的AssetBundle機制01——構(gòu)建
下一篇:Unity5.x新的AssetBundle機制03——下載與使用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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