Unity 热更新初步

此文为热更新学习笔记记录

AB包

AB包浏览器
AB包配置

  • LZ4 比标准压缩程度小,但对于内存的占用相对较小,在使用时无需全部解压(推荐使用
  • ETI 在资源包中不包含资源的类型信息
  • FR 重新打包时需要重新构建包和ClearFolders不同,它不会删除不存在的包。
  • ITTC 增量构建检查时,忽略类型数的更改
  • Append Hash 将文件哈希值附加到资源包名上
  • SM 严格模式,如果打包出错,则打包直接失败
  • DRB 运行时构建
打包

进过AB打包后,我们发现生成了如下的文件:
打包生成文件
其中包含我们的主包文件PC和我们的资源包文件model。
打包完成的资源包以二进制存储
manifest文件为对应资源的配置文件。
AB包资源浏览

加载资源

//加载AB包
var ab= AssetBundle.LoadFromFile(Application.streamingAssetsPath + "/model");
//加载资源
var asset= ab.LoadAsset<GameObject>("Cube");
Instantiate(asset);
//注意Ab包不能重复加载(否则会出错)
异步加载资源
/// <summary>
/// 异步加载资源
/// </summary>
/// <param name="abName"></param>
/// <param name="resName"></param>
/// <param name="callBack"></param>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
IEnumerator LoadAbResAsync<T>(string abName, string resName, UnityAction<AssetBundleRequest> callBack)
{
    var ab = AssetBundle.LoadFromFileAsync(Application.streamingAssetsPath + "/model");
	yield return ab;
	var res = ab.assetBundle.LoadAssetAsync<T>(resName);
	yield return res;
	callBack.Invoke(res);
	
	//卸载单个ab包
	ab.assetBundle.Unload(false);
	
	//卸载所有Ab包,选true会删除场景上通过ab包加载的资源
	AssetBundle.UnloadAllAssetBundles(false);
}
// 异步加载
StartCoroutine(LoadAbResAsync<GameObject>("model", "Cube", a =>
{
    Debug.Log("资源加载完成!");
    Instantiate(a.asset);
}));

资源依赖

如果一个资源被打包为ab包,那么这个资源使用的其他资源依赖会被默认打入资源包。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值