1、Addressables中的资源标识类
- AssetReference 通用资源标识类 可以用来加载任意类型资源
- AssetReferenceAtlasedSprite 图集资源标识类
- AssetReferenceGameObject 游戏对象资源标识类
- AssetReferenceSprite 精灵图片资源标识类
- AssetReferenceTexture 贴图资源标识类
- AssetReferenceTexture2D
- AssetReferenceTexture3D
- AssetReferenceT<> 指定类型标识类
通过不同类型标识类对象的申明 我们可以在Inspector窗口中筛选关联的资源对象
2、加载资源
注意:所有Addressables加载相关都使用异步加载
需要引用命名空间:using UnityEngine.ResourceManagement.AsyncOperations;
AsyncOperationHandle<GameObject> handle = assetReference.LoadAssetAsync<GameObject>();
handle.Completed += CompleteFunc;
加载成功后使用
- 通过事件函数传入的参数判断加载是否成功并且创建(handle.Status)
- 通过资源标识类对象判断 并且创建(assetReference.IsDone)
3、加载场景
sceneReference.LoadSceneAsync().Completed += (handle) =>{};
4、释放资源
assetReference.ReleaseAsset();
一定要资源加载过后,使用完成后再去释放
- 释放资源方法后,资源标识类中的资源 (assetReference.Asset) 会置空,但是AsyncOperationHandle类中的对象 (handle.Result) 不为空
- 释放资源不会影响场景中被实例化出来的对象,但是会影响使用的资源,比如加载了一个预制件,然后释放资源,那么实例出来的预制件不会有影响,但是如果在预制件生成后再加载一个材质球并赋值给刚刚加载的预制件,然后再释放材质球的资源,那么预制件的材质球会丢失(Play Mode Script 需要是 Use Exsiting Build 才有可能生效)
5、直接实例化对象
AssetReferenceGameObject 的 InstantiateAsync 方法
6、自定义标识类(老版)
自定义类,比如继承AssetReferenceT<Material>类 即可自定义一个指定类型的标识类
该功能主要用于Unity2020.1之前,因为之前的版本不能直接使用AssetReferenceT泛型字段