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

相关推荐
yj爆裂鼓手2 小时前
unity编辑器下ab包模式下textMeshPro文本不显示材质是紫色的异常,真机无异常的问题
unity·编辑器·材质
郭逍遥3 小时前
[Godot] 通过AABB包围盒和射线法检测碰撞
算法·游戏引擎·godot
风痕天际3 小时前
Godot扫雷游戏制作记录4——计算周围地雷数并显示
游戏·游戏引擎·godot
EQ-雪梨蛋花汤3 小时前
【踩坑记录】使用 Layui 框架时解决 Unity WebGL 渲染在 Tab 切换时黑屏问题
unity·layui·webgl
风痕天际13 小时前
Godot扫雷游戏制作记录3——随机埋雷
游戏·游戏引擎·godot
淡海水2 天前
【节点】[EvaluateTipThickness节点]原理解析与实际应用
unity·游戏引擎·shadergraph·图形·evaluate·thickness
小贺儿开发2 天前
Unity3D 木胎雕刻
科技·unity·人机交互·互动·雕刻
HY小海2 天前
【Unity游戏创作】常见的设计模式
unity·设计模式·c#·游戏程序
淡海水4 天前
【节点】[EvaluateSimulationAdditionalData节点]原理解析与实际应用
unity·游戏引擎·shadergraph·图形·simulation·evaluate