AB包
- 什么是AB包—特定于平台的资产压缩包,类似于压缩文件。
其中资产包括-模型,贴图,纹理,预设体,音效,材质球...
- AB包的作用—减少包体大小(压缩资源;减少初始包大小),热更新(资源热更新,脚本热更新)
- 相对于Resources更好管理资源
- Resources打包时定死只读无法修改,随着打包一起被打包出去
- 而AB包储存位置可自定(可在网络上下载,也可以自定跟随打包出去),压缩方式自定义,后期可以动态更新。
- 热更新基本规则:客户端本身带很少的默认资源-> 第一步去到服务器端获取资源服务器地址->第二布去到资源服务器下载对比文件,检测哪些资源需要跟新,哪些资源需要下载
- 打包压缩方式:
- 不压缩,解压快,包体大
- LZMA—打包的体积非常小,解压时间长,并且我们需要其中一个资源,需要解压所有的包。
- LZ4—打包的体积比LZMA稍大,但是我们用什么解压什么,内存占用较少。(推荐)
打包得到的:一个主包(依赖关系); 各个包体AB包资源文件和该包体的配置文件(manifest文件-AB包文件信息和资源信息,依赖关系,版本信息...)。
- AB包的加载:
- 不能只是用名字加载,会出现同命不同类型的资源分不清(加载出来是object),推荐泛型或Type指定类型
- AB包不能重复加载,否则会报错
- AB包的卸载:
- AssetBundle.UnloadAllAssetBundles(bool)->卸载所有已加载的AB包(参数为True,不仅卸载所有加载的AB包,还卸载已经加载的AB包的资源)
- AssetBundle ab; ->ab.Unload(bool)->卸载该已经加载的AB包(参数为True,不仅卸掉该已经加载的包,还会卸载该包已经加载的资源)
- AB包的依赖(利用主包的依赖关系)
- 加载主包(AssetBundle )
- 加载主包中的Manifest文件(AssetBundleManifest )
- 从Manifest得到依赖信息(AssetBundleManifest.GetAllDependencies(想要加载资源的那个包名) ->string[])
- 得到依赖包的名字并加载依赖包(AssetBundle )
浙公网安备 33010602011771号