Unity 热更新之AB 包 简述

了解AB包是什么

特定于平台的资产压缩包,有点类似压缩文件
资产包括:模型、贴图、预设体、音效、材质球等等

了解AB包有什么作用

相对Resources下的资源AB包更好管理资源

1.减小包体大小
  1. 压缩资源(节约硬盘空间)
  2. 减少初始包大小(缩小首包大小,进入游戏后再下载)
2.热更新
  1. 资源热更新(添加资源)
  2. 脚本热更新(更新Lua脚本)
    image

生成AB包资源文件

1. Unity编辑器开发,自定义打包工具

这个没做过所以略

2. 官方提供好的打包工具:Asset Bundle Browser

对于高版本unity 中,已经不能通过包管理器下载(原因:高版本Unity 用Addressables 功能封装了AB包功能)
解决方法,个人是从github 上导入unity包中的,或者也可以将工程拖入unity 的 Editor文件夹中,这个是文件夹是需要自己创建的。
github 文件链接跳转 https://github.com/Unity-Technologies/AssetBundles-Browser

3.AssetBundleBrowser重要参数相关

image

4.AB包生成的文件

image
image
其中除了自定义的AB外,而外生成了一个主包,赋值存放AB 包的依赖关系
主包名由路径的最后名字为标准

使用AB包资源文件

Unity 提供的API

AB包同步加载
//同步加载

//AB包不能重复加载否则会报错

//加载AB包资源 用ab变成存储 文件夹里面的要加载的AB包路径

AssetBundle ab= AssetBundle.LoadFromFile("路径");

// 获得AB 包里面的 预制体资源

GameObject obj =ab.LoadAsset<GameObject>("资源名");

// 生成预制体

Instantiate(obj)
AB包异步加载
//异步加载

//加载AB包资源 用ab变成存储 文件夹里面的要加载的AB包路径

//AB包不能重复加载否则会报错

//一般用携程写,因为需要语法糖yile 来判断是否加载完成 再进行下一步操作

AssetBundleCreateRequest ab= AssetBundle.LoadFromFileAsync("路径");

// 获得AB 包里面的 预制体资源

AssetBundleRequest obj = ab.assetBundle.LoadAssetAsync<GameObject>("包里的资源名");

// 生成预制体

Instantiate(obj.asset as GameObject);
卸载全部AB包
//ture 卸载所有加载的AB以及场景上所有引用的资源会丢失  false 只卸载AB包

// 例如 某UI或模型使用了 AB里的资源贴图 卸载后 会出现 无图片 模型缺少贴图

AssetBundle.UnloadAllAssetBundles(False);

卸载单个AB包
//ture 卸载所有加载的AB以及场景上所有引用的资源会丢失  false 只卸载AB包

// 例如 某UI或模型使用了 AB里的资源贴图 卸载后 会出现 无图片 模型缺少贴图

AB包对象.Unload(false);

//类如 ab.unload(false);

AssetBundelManifest(AB包依赖)
///  加载总包
AssetBundle AbMain = AssetBundle.LoadFromFile("路径"+ "/总包名");

//获得总包文件信息

//字符串里的"AssetBundleManifest" 是固定的

AssetBundleManifest assetBundleManifest = AbMain.LoadAsset<AssetBundleManifest>("AssetBundleManifest");

//通过AB包名获得所有依赖包名
string[] s = assetBundleManifest.GetAllDependencies("需要查询的包");

AB包资源加载管理器

AB包文件

里面存放的是资源文件

Manifest文件
  1. AB包文件信息
  2. 资源信息,依赖关系,版本信息等等
关键AB包(和目录名一样的包)
  1. 主包
  2. AB包依赖关键信息

文献参考 https://www.cnblogs.com/TonyCode/p/18169831

posted @   BaiLuoXi  阅读(113)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示