Addressables(2) ResourceLocation和AssetReference

IResourceLocation

在这里插入图片描述
var op = Addressables.LoadResourceLocationsAsync(key);
var result = op.WaitForCompletion();

把加载的Key塞进去,不难看出,IResourceLocation可以用来获得资源的详细信息
很适合用于更新分析,或者一些检查工具

AssetReference

https://docs.unity3d.com/Packages/com.unity.addressables@1.21/manual/asset-reference-intro.html
上一篇安装的时候有提到下载Samples中的PrefabSpawne
里面其实就是一个脚本,间隔一定时间创建物体再销毁
挂载到场景里,第一个字段,SpawnablePrefab就是拖放一个预制进去就可以看到效果

AssetReference跟平时使用的GameObject序列化有什么区别呢?

GameObjct
PrefabTest: {fileID: 1183552997314272029, guid: 4d2f6d3cdf3aa0c4d8198adf0fcc958a, type: 3}

AssetReference
SpawnablePrefab:
m_AssetGUID: 4d2f6d3cdf3aa0c4d8198adf0fcc958a
m_SubObjectName:
m_SubObjectType:
m_EditorAssetChanged: 0

AssetReference是资源引用,一定指向真正的资源
GameObject就不一定,它指向的是游戏对象,只是恰好是预制

但是何必再搞一个类呢?
场景里脚本用GameObject序列化预制,使用时可以直接Instantiate
换成AssetReference却要先加载,说明场景加载时,资源并没有一起加载。
我猜测可能这种序列化方式并不会产生资源依赖关系。
如果是真的,很多Assetbundle依赖关系就能解除,非常有利于分包更新。

验证的方法也简单,PrefabSpawne脚本序列化的资源换成一个不在场景中的。
在Project窗口右键这个场景 Select Dependencies可以看到所有依赖的资源
确实没有依赖!
它在编辑器能定位资源,在运行时可当静态配置数据加载资源,像一些不重要但是需要静态序列化的图片,就可以用这份信息,在显示的时候才加载,不显示的时候又不会加载到其他AB占用内存。

相关推荐

  1. Unity Addressable魔改

    2024-01-22 05:44:02       28 阅读
  2. android QtScrcpy 共享屏幕 获取本地Address

    2024-01-22 05:44:02       35 阅读
  3. boost::asio::ip::tcp::acceptor::reuse_address

    2024-01-22 05:44:02       29 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-22 05:44:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-22 05:44:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-22 05:44:02       87 阅读
  4. Python语言-面向对象

    2024-01-22 05:44:02       96 阅读

热门阅读

  1. Dart语言中的布尔类型详解及实例应用

    2024-01-22 05:44:02       50 阅读
  2. 【Element UI详细介绍】

    2024-01-22 05:44:02       47 阅读
  3. Hbase 与 ElasticSearch 的结合使用

    2024-01-22 05:44:02       55 阅读
  4. K8s常用命令

    2024-01-22 05:44:02       60 阅读
  5. Windows.h中的函数有哪些?

    2024-01-22 05:44:02       63 阅读