欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

AssetBundle壓縮與解壓方式是什么

這篇文章主要介紹了AssetBundle壓縮與解壓方式是什么的相關知識,內(nèi)容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇AssetBundle壓縮與解壓方式是什么文章都會有所收獲,下面我們一起來看看吧。

婺城ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!

一、AssetBundle的壓縮方式

 Unity支持三種AssetBundle打包的壓縮方式:LZMA, LZ4, 以及不壓縮。

    1、LZMA壓縮方式

 是一種默認的壓縮形式,這種標準壓縮格式是一個單一LZMA流序列化數(shù)據(jù)文件,并且在使用前需要解壓縮整個包體。LZMA壓縮是比較流行的壓縮格式,能使壓縮后文件達到最小,但是解壓相對緩慢,導致加載時需要較長的解壓時間。

 2、LZ4壓縮方式

 Unity支持LZ4壓縮,能使得壓縮量更大,而且在使用資源包前不需要解壓整個包體。LZ4壓縮是一種“Chunk-based”算法,因此當對象從LZ4壓縮包中加載時,只有這個對象的對應模塊被解壓即可,這速度更快,意味著不需要等待解壓整個包體。LZ4壓縮格式是在Unity5.3版本中開始引入的,之前的版本不可用。

 3、不壓縮的方式

 不壓縮的方式打包后包體會很大,,導致很占用空間,但是一旦下載Assetbundle,訪問非??臁2煌扑]這種方式打包,因為現(xiàn)在的加載功能做的很友好了,完全可以用加載界面來進行后臺加載資源,而且時間也不長。

二、壓縮包的緩存

    WWW.LoadFromCacheOrDownload函數(shù)能下載和緩存資源包到磁盤中,從而能大大加快以后的加載。從Unity5.3開始,緩存數(shù)據(jù)也可以用LZ4算法壓縮,相對于不壓縮緩存數(shù)據(jù),這能節(jié)省40%——60%的的空間。在下載期間進行壓縮,因此用戶幾乎是感覺不到的。從套接字(Socket)接收的數(shù)據(jù),Unity將對它進行解壓并且用LZ4格式壓縮它。這種壓縮發(fā)生在以流的形式下載過程中,這意味著一旦足夠的數(shù)據(jù)被下載了,緩存遍開始壓縮,并且這樣一致持續(xù)到下載完成。之后在需要使用的時候,數(shù)據(jù)從緩存中通過飛速解壓的方式讀取出來。

  緩存壓縮是默認啟用的,它是由Caching.compressionEnabled屬性控制的,它能影響到在磁盤中保存的資源包以及緩存在內(nèi)存中的資源包。

三、AssetBundle加載API概述

 以下這張表是當使用不同的壓縮方式和不同的加載方法時,內(nèi)存和性能的開銷情況比較:


 不壓縮 LZ4壓縮LZMA壓縮 
 WWW加載內(nèi)存:未壓縮資源包的大小(+當WWW未被Disposed時未壓縮資源包的大小)
性能:沒有額外的處理過程
 內(nèi)存:LZ4高壓縮包的大小(+當WWW未被Disposed時LZ4高壓縮包的大小)
性能:沒有額外的處理過程
內(nèi)存:LZ4壓縮包的大小(+當WWW未被Disposed時LZMA壓縮包的大小)
性能:當下載的時候,LZMA解壓過程+LZ4壓縮過程
 LoadFromCacheOrDownload加載內(nèi)存:沒有額外內(nèi)存占用
性能:從磁盤讀取的過程
內(nèi)存: 沒有額外內(nèi)存占用
性能:從磁盤讀取的過程
內(nèi)存:沒有額外內(nèi)存占用
性能:從磁盤讀取的過程
LoadFromMemory (異步)加載 內(nèi)存:未壓縮的資源包大小
性能:沒有額外的處理過程
內(nèi)存:LZ4高壓縮資源包的大小
性能:沒有額外的處理過程
內(nèi)存:沒有額外內(nèi)存占用
性能:從磁盤讀取的過程
LoadFromFile(異步)加載內(nèi)存:沒有額外內(nèi)存占用
性能:從磁盤讀取的過程
內(nèi)存:沒有額外內(nèi)存占用
性能:從磁盤讀取的過程
內(nèi)存:LZ4壓縮包的大小
性能:從磁盤讀取+LZMA解壓+LZ4壓縮 的過程
WebRequest (也需要緩存)加載 內(nèi)存:未壓縮的資源包大小
性能:沒有額外處理過程[+如果緩存則從磁盤中讀取的過程]
 內(nèi)存:LZ4高壓縮包的大小
性能:沒有額外處理過程[+如果緩存則從磁盤中讀取的過程]
內(nèi)存:LZ4壓縮包的大小
性能:當下載的時候,LZMA解壓過程+LZ4壓縮過程[+如果緩存則從磁盤中讀取的過程]

*當使用WWW方式下載資源包的時候,WebRequest還有一個8*64kb的疊加緩存用來保存來自Socket的數(shù)據(jù)

總結(jié)——在游戲里使用低級加載的API時,有以下建議:

1、把資源包部署在StreamingAssets中——用BuildAssetBundleOptions.ChunkBasedCompression方式打包并用AssetBundle.LoadFromFileAsync來加載它,這提供了數(shù)據(jù)壓縮和最快加載的性能,并且內(nèi)存開銷等于讀取緩沖器。

2、下載資源包時,使用默認的打包選項(LZMA壓縮),并且用LoadFromCacheOrDownload/WebRequest來下載和緩存它。這樣為了進一步加載,會有最好的壓縮比和AssetBundle.LoadFromFile加載性能。

3、加密包——使用BuildAssetBundleOptions.ChunkBasedCompression選項打包,并且用LoadFromMemoryAsync加載。(這基本是唯一使用LoadFromMemoryAsync加載的情況)

4、自定義壓縮——使用BuildAssetBundleOptions.UncompressedAssetBundle選項來打包,并且在用自定義的壓縮方式解壓資源包后,使用AssetBundle.LoadFromFileAsync來加載。

 

通常應該選擇異步的方式進行加載,因為這樣不會阻塞主線程,并且能對加載操作有效的排序,千萬不要在同一時間里調(diào)用同步和異步函數(shù),這可能會引起主線程的停頓。

 

四、兼容性問題

  為了支持新的壓縮類型,AssetBundle資源包包含的格式改變了,并且為進一步的改善提供了基礎。Unity5版本仍然支持Unity4版本打包的資源,但是不支持2.x和3.x版本的打包資源了。

關于“AssetBundle壓縮與解壓方式是什么”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“AssetBundle壓縮與解壓方式是什么”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)頁標題:AssetBundle壓縮與解壓方式是什么
網(wǎng)址分享:http://chinadenli.net/article42/jdjhhc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣網(wǎng)站維護、ChatGPT、做網(wǎng)站、域名注冊、網(wǎng)站設計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名