AB包

  • 什么是AB包—特定于平台的资产压缩包,类似于压缩文件。

其中资产包括-模型,贴图,纹理,预设体,音效,材质球...

  • AB包的作用—减少包体大小(压缩资源;减少初始包大小),热更新(资源热更新,脚本热更新)
  • 相对于Resources更好管理资源
  1. Resources打包时定死只读无法修改,随着打包一起被打包出去
  2. 而AB包储存位置可自定(可在网络上下载,也可以自定跟随打包出去),压缩方式自定义,后期可以动态更新。
  • 热更新基本规则:客户端本身带很少的默认资源-> 第一步去到服务器端获取资源服务器地址->第二布去到资源服务器下载对比文件,检测哪些资源需要跟新,哪些资源需要下载

 

  • 打包压缩方式:
  1. 不压缩,解压快,包体大
  2. LZMA—打包的体积非常小,解压时间长,并且我们需要其中一个资源,需要解压所有的包。
  3. LZ4—打包的体积比LZMA稍大,但是我们用什么解压什么,内存占用较少。(推荐)

打包得到的:一个主包(依赖关系); 各个包体AB包资源文件和该包体的配置文件(manifest文件-AB包文件信息和资源信息,依赖关系,版本信息...)。

  • AB包的加载:
  1. 不能只是用名字加载,会出现同命不同类型的资源分不清(加载出来是object),推荐泛型或Type指定类型
  2. AB包不能重复加载,否则会报错
  • AB包的卸载:
  1. AssetBundle.UnloadAllAssetBundles(bool)->卸载所有已加载的AB包(参数为True,不仅卸载所有加载的AB包,还卸载已经加载的AB包的资源)
  2. AssetBundle ab; ->ab.Unload(bool)->卸载该已经加载的AB包(参数为True,不仅卸掉该已经加载的包,还会卸载该包已经加载的资源)
  • AB包的依赖(利用主包的依赖关系)
  1. 加载主包(AssetBundle )
  2. 加载主包中的Manifest文件(AssetBundleManifest )
  3. 从Manifest得到依赖信息(AssetBundleManifest.GetAllDependencies(想要加载资源的那个包名) ->string[])
  4. 得到依赖包的名字并加载依赖包(AssetBundle )

posted on 2026-04-27 16:34  徐子箫  阅读(25)  评论(0)    收藏  举报

导航