Unity通用框架搭建(二)——基于可寻址地址系统的资源加载

可寻址地址资源系统

Addressable AssetSystem 是Unity官方推出的可寻址地址系统,其底层还是用AssetBundle设计实现的,但这套系统已经封装好了资源更新(系统会自动检查出更新)、资源加载、资源卸载、引用计数等逻辑。不用程序设计时在去考虑这些底层的逻辑。使用时只需要传入资源地址就可轻易的实现资源的加载与卸载。本文是在Unity2019 LTS版本中使用的Addressable系统。
通过Window->Asset Management->Addressables->Groups可以查看资源分布的情况:
Addressable检视窗口

  • Addressable Name:资源地址名称,程序可以直接通过该名称加载资源
  • Path:资源实际路径,
  • Labels:资源标签,通过打标签的形式可以批量加载多个资源。这里一个坑:Addressable Name和Labels相同时会出现加载失败的情况,设计时尽量保证Addressable Name 和 Labels互相不重名。
  • Play Mode Script:
    1、Use Asset Database:使用本地资源最终是通过AssetDatabase来加载资源,加载速度快,适用于开发阶段。
    2、Simulate Groups:在不创建AssetBundles的情况下分析布局和依赖项的内容。asset 通过ResourceManager从assetDataBase加载,就假装它们是通过包加载的一样。
    3、Use Existing Build:使用打包部署的资源,
    打包设置
    Addressable设置每一组分组都会有这样的参数配置:
  • Content Update Restriction:是否支持动态更新,当资源在随包发布是这里需要设置为Cannot Change Post Release。不能动态更新自身,当该组资源有修改是,系统会自动将更新的资源重新划分成一个新的组。当设置为Can Change Post Release,资源不随包更新,需要联网在线更新。
  • Build Path:打包时资源存放位置,随包发布的资源一般设置为默认的LocalBuildPath,需要在线更新的资源则设置为RemotedPath.
  • LoadPath:自定义资源加载路径
  • Compression:AssetBundle打包压缩方式。视频文件需要单独分组,压缩过的视频资源将不能正常播放
  • Include In Build:只有默认勾选才会打包
  • Bundle Mode:AssetBundle打包合并方式。我设计时默认设计为Pack Together By Label
  • BundleNameing:包名设置,设计为Filename,更新后同名的会自动覆盖,这样可以避免老资源一直存在。

主要的API

  • Addressables.LoadAssetAsync< T >:加载单个资源
  • Addressables.LoadAssetsAsync< T >:批量加载资源
  • Addressables.GetDownloadSizeAsync:获取需要下载资源大小
  • Addressables.DownloadDependenciesAsync:下载资源及其依赖项
  • Addressables.Release:资源释放

Unity提供的API已经将AssetBundle中很多需要自己维护的东西全部封装好了,相对直接使用AssetBundle那套使用起来便捷了很多。但是Addressable有一个特别注意的地方:AssetBundle的加载同步异步都可,但是Addressable的资源加载全部时都是异步加载,在底层设计时需要考虑到资源的异步加载

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值