【Unity優化】資源管理系列06:AssetBundle 變體與壓縮


作用:針對不同的運行時環境,使用不同的內容。

一、變體

1、使用舉例

1)不同目標平台,簡化對應AB加載

舉例:一個AB包含用於PC平台的高清紋理,另一個AB包含用於安卓手機的低清紋理,但是他們使用相同的AB名和資源名,只有變體名不同。於是在運行時,不需要更改加載代碼,就可以加載對應的AB變體。

2)相同目標平台,根據不同硬件規格,加載不同AB

舉例:不同的硬件規格包括性能差異、屏幕寬高比、分辨率等。

2、限制

1)不同的變體必須對應不同的資源

舉例:就算一張紋理的兩個變體只有壓縮方式不同,這張紋理也必須復制兩份,各自單獨設置變體名。

缺點:增加大型項目的資源管理復雜度;如果要更新,所有版本的資源都要更新,unity 沒有提供直接的解決方案。

2)自己實現AB變體

① 通過給資源名添加有意義的后綴,來識別特定的AB變體。

② 通過程序,根據后綴更改導入器的設置,或者更改預設上所掛載組件的參數。

二、是否壓縮

1、是否壓縮的對比

① 加載時間:從內存加載AB時,加載未壓縮的比壓縮的快。

② 打包時間:使用LZMA和LZ4格式壓縮文件很慢;而Unity又是連續壓縮AB,如果AB很多,壓縮處理會占用很長時間。

③ 應用大小:壓縮AB包將減少應用包大小。

④ 內存占用:使用LZ4壓縮格式,或未壓縮,內寸占用相對較少。

⑤ 下載時間:如果AB包較大,或用戶網絡帶寬較小,建議壓縮;如果AB包只有小幾十兆,且用戶網絡帶寬大,比如面向PC平台,則可以不壓縮。

2、Crunch 壓縮

如果AB中大部分是采用 Crunch 壓縮算法壓縮過的DXT紋理資源,則打包時不應該再被壓縮(該算法應該也支持ETC格式,優點是壓縮比高,缺點是壓縮時間長)。

三、AB 與 WebGL

1、因為 WebGL 不支持工作線程,因此解壓縮工作發生在主線程。

2、建議使用小尺寸AB包,緩解性能壓力。

3、WebGL 只支持 LZ4壓縮、未壓縮資源。


免責聲明!

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



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