Unity资源管理框架Addressables总结

1.Addressables简介

Addressables 包提供了用于组织和打包应用程序内容的工具和脚本,以及用于在运行时加载和释放资产的 API。Addressables 系统构建于 Unity 的Asset Bundle,如果想在项目中使用AssetBundles而不需要编写自己的详细管理代码,应该使用Addressables。最佳实践是立即在新项目中开始使用 Addressables,以避免在开发后期进行不必要的代码重构和内容规划更改。

2.安装

使用包管理器安装 Addressables 包,:

  1. 打开包管理器(菜单:窗口 > 包管理器)。
  2. 设置包列表以显示Unity 注册表中的包。
  3. 在列表中选择Addressables 包。
  4. 单击**"安装"**(位于"包管理器"窗口的右侧底部)。

3.配置

Addressables 系统会创建一个名为 的文件夹AddressableAssetsData

4.将资源标记为可寻址资源

为了将资源使用Addr的API进行加载 以及 放入AB包,需要将资源标记为Addressable,标记后的资源会被添加到默认组中。可通过以下方式标记:

Inspector视图中 启用Addressable

将资产拖到Inspector中的 AssetReference 字段

将资源拖到Addressables Groups(Window->AssetManagement->Addressables->Groups)的组中:

若将Resources目录下的资源设为Addressable,需将资源移出资源文件夹

5.预制体实例化

实例化:

cs 复制代码
	using UnityEngine.AddressableAssets;

    public AssetReference baseCube;
	void Start () {
		baseCube.InstantiateAsync();
	}

销毁

cs 复制代码
    using UnityEngine.AddressableAssets;

    Addressables.ReleaseInstance(gameObject);

    
    private void OnDestroy()
    {
        if (reference != null && reference.IsValid())
            reference.ReleaseAsset();
    }

6.异步资源加载

Addressables 对需要加载的任务使用异步操作,这可以防止这些耗时操作使游戏卡顿。当调用如 LoadAssetAsync 方法时,它返回一个AsyncOperationHandle对象,称为异步操作句柄,可将其理解为【异步操作的遥控器/控制对象】

您可以使用以下技术来等待异步操作的结果,同时允许其他脚本继续处理:

6.1 等待带有事件的异步加载

10.Addr源码阅读与修改

项目文件夹/Library/PackageCache/com.unity.addressables@版本号/

可以浏览和阅读所有运行时(Runtime)和编辑器(Editor)的源代码

可通过以下步骤修改源码

  1. 复制源码 :将Library/PackageCache 下的 Addressables 包文件夹完整地复制出来。

  2. 粘贴到特定目录 :将复制好的文件夹粘贴到你项目的 Packages 根目录下。

  3. 移除原有包 :在 Package Manager 中卸载通过官方源安装的 Addressables 包。这一步很重要,可以避免未来与你在 Packages 目录下的修改版发生冲突-1

  4. 导入本地包 :在 Package Manager 中,选择"从本地磁盘安装"(Install package from disk...),然后找到并选中你刚刚粘贴到 Packages 目录下的包的 package.json 文件。

完成以上步骤后,就会以本地的副本为准,对 Packages/com.unity.addressables/ 下的任何代码修改都会生效。

修改后,未来升级 Addressables 版本时需要手动合并代码,维护成本会增加。

11 参考:

Addressables

Addressables-Sample

相关推荐
斯幽柏雷科技1 天前
[Unity]Inspector各种写法(持续更新中)
java·unity·游戏引擎
林鸿群1 天前
Cocos2d-x v4 官方文档学习总结
学习·游戏引擎·cocos2d
林鸿群1 天前
Cocos2d-x 官方仓库学习总结
学习·游戏引擎·cocos2d
毕竟秋山澪2 天前
unity Skill接入TraeAI操作步骤
unity·游戏引擎
XR-AI-JK2 天前
01-VR开发如何配置和搭建基础环境
unity·vr·vr基础教程·vr教程·vr实战教程·vr节奏游戏·unityvr教程
派葛穆2 天前
Unity-生成预制体1
unity
WarPigs2 天前
Unity CG着色器实战
unity·着色器
废嘉在线抓狂.2 天前
TimeLine如何自定义轨道
unity·c#·对话系统
ellis19702 天前
Unity资源管理框架Addressables[六] 内存管理
unity
派葛穆2 天前
Unity-鼠标悬停改变物体层级
unity·游戏引擎