文章目录
偏文字相关和细节方面,不是很重要
自定义更新目录和下载AB包
知识点一:目录的作用
-
Json文件
- 加载AB包、图集、资源、场景、实例化对象所用的脚本(会通过反射去加载他们来使用)
- AB包中所有资源类型对应的类(会通过反射去加载他们来使用)
- AB包对应路径
- 资源的path名
-
Hash文件(发布远程才有)
-
记录什么
目录文件对应hash码(每一个文件都有一个唯一码,用来判断文件是否变化)
-
作用
更新时本地的文件hash码会和远端目录的hash码进行对比
如果发现不一样就会更新目录文件
-
补充
当我们使用远端发布内容时,在资源服务器也会有一个目录文件
Addressables会在运行时自动管理目录
如果远端目录发生变化了(他会通过hash文件里面存储的数据判断是否是新目录)
它会自动下载新版本并将其加载到内存中
-
知识点二:手动更新目录
-
如果要手动更新目录 建议在设置中关闭自动更新
-
自动检查所有目录是否由更新,并更新目录API
Addressables.UpdateCatalogs().Completed += (obj) => { Debug.Log(obj.DebugName); Addressables.Release(obj); };
-
获取目录列表,再更新目录
// 参数bool就是加载结束后,不会自动释放异步加载得句柄 Addressables.CheckForCatalogUpdates(true).Completed += (obj) => { // 如果列表里面内容大于0,证明可以更新得目录 if (obj.Result.Count > 0) { Debug.Log(obj.DebugName); // 根据别列表更新目录 Addressables.UpdateCatalogs(obj.Result, true).Completed += (handle) => { Debug.Log(obj.DebugName); // 自动释放 //Addressables.Release(handle); //Addressables.Release(obj); }; } };
知识点三:预加载包
IEnumerator LoadAsset()
{
//1.首先获取下载包的大小
AsyncOperationHandle<long> handleSize = Addressables