Unity Addressables之Build资源、热更、加载

Unity Addressables之Build资源、热更、加载

介绍

Unity大家经常听说Addressables的好处,但是没有完成的例子。 下面讲述Addressables如何使用:
一. Build Addressables资源
二. 发布热更资源
三. Editor上测试热更
四. 加载资源

于是我写了一个完整的例子(Addressables Version 1.20.0 - May 04, 2022)贡献给大家。
gitee地址:https://gitee.com/chasing2moro/addressables
有问题可以查阅官网:https://docs.unity3d.com/Packages/com.unity.addressables@1.20/manual/index.html
如果解决不了,可以联系邮箱:chasing2moro@qq.com

准备工作(无需手动修改,工程已设置好):
  1. Assets\AddressableAssetsData 目录下 右击创建 CacheInitializationSettings
    图片
  2. 将CacheInitializationSettings作为AddressableAssetSettings 的 Initialization Objects之一
    图片
    注意上面✓上的两个选项,意图是:游戏启动的时候不自动更新Catalog;而是在Loading界面更新这个Catalog,根据它获取并下载我们需要下载的资源
  3. Cache Directory Override这一栏填上{UnityEngine.Application.persistentDataPath}
    图片
    (感谢这位CSDN作者文章的贡献:https://blog.csdn.net/qq_33805569/article/details/123035205 ,所以用了一张作者的图片)
    前面3步,意图是自定义本地路径来存放资源,这样可以方便我们管理资源,否则Addressables会将资源下载到另外一个缓存文件夹里
  4. 这一步的设置,是为了和2. 前后呼应
    图片
一. Build Addressables资源
  1. 打开XAddressables/Build窗口
    图片
  2. 点击Mark Address按钮,给ResUpdate目录下所有资源加地址
    图片
    加完地址后,你打开Window/Asset Management/Addressables/Groups窗口,会见到资源对应的地址
    图片
    我们的资源地址是全局命名,不包含路径,这是方便以后资源移动路径。
  3. 点击Build Content按钮,生成资源(Build Addressables Asset,简称Build AA)
    图片
  4. Editor运行游戏方式
    4.1 本地资源运行:Window/Asset Management/Addressables/Groups窗口,选择Use Asset Database
    图片
    4.2 Build完的资源运行:Window/Asset Management/Addressables/Groups窗口,选择Use Existing Build
    图片
  5. 到此为止你就可以打包客户端了。
二. 发布热更资源
  1. 资源变更后:比如随便改个图片(pic_Hero.jpeg)
  2. 打开XAddressables/Package窗口
    图片
  3. 按照窗口如下步骤操作,就可以完成热更打包流程了。
    图片
  4. 去 “工程路径/ServerData/平台/版本号”路劲下,把所有文件拷贝到服务器(修改服务器地址见下面),就可以热更了:
    图片
    图片
  5. 服务器地址修改方法如下图:
    图片
入口场景为:Assets/Scenes/SceneLoading.unity
三. Editor上测试热更
  1. Window/Asset Management/Addressables/Groups窗口,选择Use Existing Build
    图片
  2. 按照窗口如下步骤点击:
    图片
    因为选了Use Existing Build,所以需要找到第一次打包时的bundle(就是你所想的:存在apk里无法修改的bundle)来运行游戏。于是需要按“Restore bundle”。
    直接运行,会用工程最新的Catalog,即使热更资源下载失败,也能加载变化后的bundle运行,无法判断热更是否成功。于是需要按“Restore catalog”,用第一次打包时的Catalog测试热更。
  3. Editor上开启热更检测并下载:
    图片
四. 加载资源
  • 实例化GameObject:
1. XFactory.Instance.CreateInstanceAsync(string key); //不使用孵化器
2. XFactory.Instance.CreateInstanceAsync(string key, XIncubator incubator, Action<GameObject> callBack)//使用孵化器
  • 销毁GameObject:
    XGameObject.Destroy(GameObject obj);
    一定要调用上面方法销毁GameObject,才不会泄漏内存。
    如果需要在Editor上销毁GameObject,需要右击点击XDestroy,才能保证不会泄露内存。(千万不要直接选中GameObject,然后按Delete键)
    图片
  • 加载资源(Texture、Audio、Material…):
    1.类 继承 XObjBase
    2.调用this.LoadAssetAsync<T>(string key, Action<T> callback)方法,让底层管理释放(因为Addressables需要Load*和Release成对出现,才不会泄漏内存)。意思是:如果不想调用Release方法或者不知道啥时候调用Release方法释放资源,就调用这个推荐方法加载。事实上,整个游戏开发,都建议这样做。下面以Texture为例:
  this.LoadAssetAsync<Texture>(key, (texture) =>
    {
        meshRenderer.material.mainTexture = texture;
    });
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity Addressables 在 WebGL 平台加载缓慢的原因有多个方面。 首先,WebGL 平台是基于浏览器的运行环境,相比于本地平台,存在网络传输和解析字节码的延迟。这会导致加载和解析资源的时间增加,从而使 Unity Addressables加载速度变慢。 其次,WebGL 平台受到浏览器的安全限制和网络环境的影响,可能会导致网络通信速度减慢。尤其是当需要从远程服务器获取资源时,网络延迟和带宽限制可能会增加资源加载的时间。 此外,WebGL 平台的硬件设备和浏览器版本碎片化也会影响 Addressables加载速度。不同的硬件设备和浏览器版本对于资源加载和渲染效率可能有所差异,因此可能需要额外的适配和优化工作。 为了缓解 Unity Addressables 在 WebGL 平台的加载缓慢问题,可以考虑以下几个方面的优化: 1. 减少资源的大小和数量,避免不必要的资源加载和解析时间。 2. 使用压缩格式的资源,以减小资源文件的大小,并加快网络传输速度。 3. 尽量避免远程加载资源,可以将资源预先打包到 WebGL 构建中,减少网络传输时间。 4. 在资源加载之前,展示加载中的提示信息或动画,让用户意识到加载需要一定的时间,提高用户体验。 5. 针对 WebGL 平台进行性能优化,如使用适当的渲染技术、减少渲染批次等,提高整体性能。 需要注意的是,不同的项目和情况可能需要针对性的优化方法,可以综合考虑以上建议并结合具体情况进行优化工作,以提高 Unity Addressables 在 WebGL 平台的加载速度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值