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

相关推荐
叶帆12 小时前
【YFIOs】用C#开发硬件之设备上云
开发语言·unity·c#
久数君13 小时前
AI三维建模工具“造形家”:地理场景三维化的高效解决方案
unity·glb·ai算法·ai三维建模工具·地图框选·造形家·城市建筑模型
会思考的猴子1 天前
Unity VFX 属性 Postion 和 TargetPostion
unity
hai3152475431 天前
九章编程法 · 猜数字游戏 (GW-BASIC 重构版) *
人工智能·microsoft·游戏引擎·游戏程序
心前阳光1 天前
Unity资源导入之自动化资源导入
unity·自动化·游戏引擎
心前阳光1 天前
Unity之2021.3.45f2c1发布安卓程序遇到的问题
android·unity·游戏引擎
纪纯1 天前
PicoVR Unity Integration SDK 3.4 常用交互API
unity·游戏引擎·vr·pico
龙智DevSecOps解决方案1 天前
3A 游戏优化技术栈:如何打通引擎级分析工具与 DevOps 持续集成管线?
unity·性能优化·游戏开发·技术美术·perforce·unrealengine
葛兰岱尔1 天前
从 SolidWorks 到 Three.js,从 Inventor 到 Unity——制造业CAD模型“几何-语义一体化“转换,不再是天方夜谭!
开发语言·javascript·unity
鼎艺创新科技2 天前
三维电子沙盘中OSGB倾斜摄影数据的加载与渲染
游戏引擎·cocos2d