Addressable使用指南

Addressable使用指南

安装过程跳过

测试工程地址:https://gitee.com/164989730/addressable.git

远程更新配置设置

Disable Catalog Update on Startup : 关闭启动时,自动更新Catalog文件
Build Remote Catalog 开启远程构建模式,勾选之后就会出现 Build & Load Paths 选项了
Build & Load Paths 选择Profile的地方,选Remote 或者自定义的Profile
在这里插入图片描述

Build选项说明

New Build 打首包的,重新打包
Update a Previous Build 在首包基础上打增量包
Clear Build 一些清除打包缓存等的选项
在这里插入图片描述

编辑器运行选项说明

Use Asset Database(fastest)直接使用本地资源,不用创建 AB包就能直接运行
Simulate Groups(advanced) 模拟Group 分组,可以分析资源依赖问题,不用创建 AB 包
Use Existing Build(requires built groups)从 AB 包加载资源,要构建AB 包
在这里插入图片描述

几个路径的说明

Remote.LoadPath:cdn资源路径
Remote.BuildPath: 打包时资源导出路径
Library/com.unity.addressables 编辑器下 首包打完之后存放在这里
更新后的catalog.hash和catalog.json 存放路径 : Application.persistentDataPath
更新后的资源本地缓存路径:
Library/com.unity.addressables/aa/{AddressablesPlatform}/aa/{RuntimePlatform}/xxx.bundle

本地资源变化

1、点下 New Build (重新构建,打首包)

Remote.BuildPath 目录下,产生首包的文件

hash值为 540b446608f157ce50afa467132cc3d7
在这里插入图片描述

Library目录下,生成首包相关文件

这个Bundle 是首包资源??
在这里插入图片描述

Application.persistentDataPath路径下为空的在这里插入图片描述

2、不复制Remote.BuildPath的文件到 Remote.LoadPath下,首包直接运行

加载两个物体,红色是方块,蓝色是球

编辑器下加载成功

在这里插入图片描述

非编辑器下会直接报错,无法加载

在这里插入图片描述

3、复制Remote.BuildPath下的文件到Remote.LoadPath下,再次运行

加载成功了

在这里插入图片描述

4、修改红方块也变成球,然后直接运行

还是方块,也侧面说明用的不是原始资源了
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/27ef1e06aac3475381b26423d993231d.png)

5、打增量更新包之后,目录变化

Remote.BuildPath目录下多出来一个prefab的bundle,因为我们只改变了prefab,所以只有一个新的bundle,大小都是3kb

hash值也发生了变化 3003e440e70efff1409f460f2a80a2fe
在这里插入图片描述

其他目录没变化

6、直接运行

编辑器下直接报错,在Remote.LoadPath找不到这个资源

在这里插入图片描述

非编辑器下,刚才首包导出的工程,加载出了旧的资源

在这里插入图片描述

目录没有变化

7、复制替换Remote.BuildPath下的文件到Remote.LoadPath下,再次运行

直接加载资源,由于我们勾选了Disable Catalog Update on Startup,所以运行之后是不会自动检测更新的

在这里插入图片描述

在这里插入图片描述

8、检查更新

CheckForCatalogUpdates 进行检测Catalog文件是否发生变化,对比hash值
    async Task CheckUpdate()
    {
        catalogs.Clear();
        var check = Addressables.CheckForCatalogUpdates(false);
        await check.Task;
        if (check.Status == UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationStatus.Succeeded)
        {
            catalogs.AddRange(check.Result);
            if (catalogs != null && catalogs.Count > 0)
            {
                Debug.Log("有更新");
            }
            else
            {
                Debug.Log("没有更新");
            }
        }
        Addressables.Release(check);
    }

编辑器下直接就生效了,红色变小球了

在这里插入图片描述

非编辑器下,没有发生变化

在这里插入图片描述

Application.persistentDataPath路径下,依然为空

在这里插入图片描述

9、更新catalogs

执行Addressables.UpdateCatalogs,对catalogs文件进行更新
    async Task UpdateCatalogs(List<string> catalogs)
    {
        updateList.Clear();
        if (catalogs.Count > 0)
        {
            var updateCatalogs = Addressables.UpdateCatalogs(catalogs, false);
            await updateCatalogs.Task;
            Debug.Log("更新数量:" + updateCatalogs.Result.Count);
            if (updateCatalogs.Result != null && updateCatalogs.Result.Count > 0)
            {
                foreach (var locator in updateCatalogs.Result)
                {
                    foreach (var key in locator.Keys)
                    {
                        updateList.Add(key);
                        Debug.Log("更新内容:" + key);
                    }
                }
            }
            Addressables.Release(updateCatalogs);
        }
    }
编辑器下更新内容

在这里插入图片描述

也还是红色小球

在这里插入图片描述

Application.persistentDataPath路径下,出现了catalog.hash 合 catalog.json文件

hash值为 3003e440e70efff1409f460f2a80a2fe 就是远程目录更新后的文件
在这里插入图片描述

非编辑器下,我们先删掉编辑器缓存的hash文件,然后更新
更新内容

在这里插入图片描述

成功创建出红色小球

在这里插入图片描述

Application.persistentDataPath路径下,也出现了catalog.hash 和 catalog.json文件

hash值为 3003e440e70efff1409f460f2a80a2fe 就是远程目录更新后的文件
在这里插入图片描述

10、现在已经更新完毕了,删掉远程资源会怎么样

移除远程资源之后,重启程序,编辑器下,依然可以正常加载红色小球

在这里插入图片描述

非编辑器下,也可以成功加载小球

在这里插入图片描述

因为我们已经更新完毕了,本地已经存在了一份资源

11、怎么回退到之前的版本

还有一个目录是用来保存缓存的资源的

这些就是本地缓存的资源,下图是非编辑器的,编辑器是 Cache/Unity/com.xxx.xxxx

在这里插入图片描述

非编辑器下,加载失败了

在这里插入图片描述

13、删掉缓存,恢复首包的远程文件

红球变成方块了。回退到上个版本了

在这里插入图片描述

14、再次删掉缓存,远程文件使用增量之后的红球版本

也成功加载出了红球
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/35fa1f02f1034841823696bd0528b2ac.png)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值