一:什么是?
Asset(資源) + (捆綁) = (資源打包),一個就是一組資源的集合,簡稱為AB包。
二:為什么要使用
1.將可以下載的內容放在里面,在游戲運行時再被加載,可以減少安裝包(安卓的的APK)的大小
2.可以實現資源的熱更新
三:的依賴關系
例如A和B都使用了同一個材質unity加載本地圖片,材質設置的AB包屬性為,貼圖設置的AB包屬性為,那么打包完成后,A和B的包中就不會包含材質資源
四:解讀AB包中的文件
例如打包一個名字叫cube,后綴名是的包。打包后發現文件夾下卻出現四個文件,那么它們都是什么呢?
——打包成功后,會為當前目錄生成一個與目錄名同名的二進制文件和一個與目錄名同名的文件,與目錄名同名的二進制文件()沒有可讀性,與目錄名同名的文件(.)是一個文本文件可以查看。
——cube.的大小為27kb,它是我們打包的資源
——剩下最后一個是cube..,每打包一個就會生成一個對應的文件,記錄了這個文件依賴了哪些包
當前目錄的主文件:(記錄的都是AB包中的路徑)
CRC:校驗碼。
Info:記錄每個打的AB包的AB包路徑以及每個AB包自身依賴的AB包路徑
單獨AB包的文件:
CRC:校驗碼
:記錄了當前包中每個資源的真實路徑(Unity中的路徑)
:記錄了當前包中資源的依賴關系(AB包中的路徑)
關于文件校驗:
CRC,MD5,SHA1
相同點:它們都是通過對數據進行計算,生成一個校驗值,該校驗值用來校驗數據的完整性
不同點:
1.算法不同
CRC采用多項式除法unity加載本地圖片,MD5和SHA1使用的是替換,輪換等方法
2.校驗值的長度不同
CRC校驗值的長度跟多項式有關系,一般為16位或32位。MD5是16個字節(128位),SHA1是20個字節(160位)
3.校驗值的稱呼不同
CRC一般叫做CRC值,MD5和SHA1一般叫做哈希值(Hash)或散列值
4.安全性不同
CRC與MD5和SHA1比安全性要弱很多,SHA1的安全性最高
5.效率不同
CRC的計算效率最高,MD5和SHA1比較慢
6.用途不同
CRC一般用于通信數據的校驗,MD5和SHA1用于安全領域,比如文件校驗,數字簽名等
五:分組策略
——邏輯實體分組
一個UI界面或者所有UI界面一個包(這個界面里面的貼圖和布局信息一個包)
一個角色或者所有角色一個包(這個角色里面的模型和動畫一個包)
所有場景所共享的部分一個包(包括貼圖和模型)
——按照類型分組
所有聲音資源一個包,所有一個包,所有模型一個包,所有材質一個包.....
——按照使用分組
把在某一個時間內使用的所有資源打成一個包
可以按照關卡分,一個關卡所需要的所有資源包括角色,貼圖,聲音等打成一個包
也可以按照場景分,一個場景所需要的資源打成一個包
——把經常更新的資源放在同一個包中,不經常更新的資源與它分離
假如我們有A,B兩個資源,每個資源都是100MB,A經常更新,B不經常更新
如果把A和B打成一個包,那么更新了A資源之后還是需要下載整個包,則為200MB
如果將經常更新的A資源與B資源分別打包,則當更新了A資源之后只需要下載更新的A資源包就可以,則為100MB
——把需要同時加載的資源放在同一個包里
假如我們有A,B兩個資源,它們是需要同時使用的,則把A資源和B資源打成一個包會更方便
——把其他包共享的資源放在一個單獨的包里面。
假如我們有A,B,C三個資源。A和B是預制體,C是一個材質,A和B共享了C的材質。
如果不把材質單獨打包的話,打包時會把A和B依賴的資源同時打進各自的包中,那么包中的資源會出現重復,增加包的大小。
如果把材質單獨打包的話,A和B去引用C的材質,這樣會避免資源重復打包,減小包的大小
——把一些需要同時加載的小資源打包成一個包
——如果對于同一個資源有兩個版本,可以通過用后綴名來區分(后綴加上v1,v2.....)