作用:針對不同的運行時環境,使用不同的內容。
一、變體
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壓縮、未壓縮資源。