AssetBundleBuilder
将AssetBundleEditor编辑的资源和ab生成各平台、各类型(单机、热更、Packed)的ab包
压缩方式
BuildAssetBundleOptions.None:默认压缩方式,LZMA 压缩格式,压缩后最小,解压时间较长,使用前需要先解压 ,使用 UnityWebRequestAssetBundle加载,会自动重新压缩为LZ4,
BuildAssetBundleOptions.UncompressedAssetBundle:不压缩,文件最大,加载最快
BuildAssetBundleOptions.ChunkBasedCompression:LZ4,比LZMA大,“分块”解压,加载速度与未压缩相当,还可以减少硬盘占用。
UGF采用LZ4压缩,然后再次zip压缩
打包流程
GetBuildMap
将AssetBundle和Asset转换为AssetBundleData、AssetData
再转换为AssetBundleBuild数组
BuildPipeline.BuildAssetBundles
根据各个平台生成ab文件到各自平台的workingPath
ProcessAssetBundle
将各个平台workingPath的ab进行加密、压缩、添加后缀等处理,添加到各个类型的Path
加密方式
LoadFromMemoryAndDecrypt
LoadFromMemoryAndQuickDecrypt
采用异或加密,区别在于LoadFromMemoryAndQuickDecrypt只加密前220位
OutputFull:多一步zip压缩,减少更新流量消耗
资源信息解析
ProcessPackageList:生成单机ab包的version.dat,对应ResourceManagerResourceIniter.ParsePackageList
ProcessVersionList:生成热更ab包的version.dat,对应ResourceManager.ResourceChecker.ParseVersionList
ProcessReadOnlyList:Packed包的list.dat,对应ResourceManager.ResourceChecker.ParseReadOnlyList
ProcessVersionList 包含非Packed和Packed的asset信息 所以ProcessReadOnlyList不包含Packed的asset信息