1.Addressables简介
Addressables 包提供了用于组织和打包应用程序内容的工具和脚本,以及用于在运行时加载和释放资产的 API。Addressables 系统构建于 Unity 的Asset Bundle,如果想在项目中使用AssetBundles而不需要编写自己的详细管理代码,应该使用Addressables。最佳实践是立即在新项目中开始使用 Addressables,以避免在开发后期进行不必要的代码重构和内容规划更改。
2.安装
使用包管理器安装 Addressables 包,:
- 打开包管理器(菜单:窗口 > 包管理器)。
- 设置包列表以显示Unity 注册表中的包。
- 在列表中选择Addressables 包。
- 单击**"安装"**(位于"包管理器"窗口的右侧底部)。
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)的源代码
可通过以下步骤修改源码
-
复制源码 :将
Library/PackageCache下的 Addressables 包文件夹完整地复制出来。 -
粘贴到特定目录 :将复制好的文件夹粘贴到你项目的
Packages根目录下。 -
移除原有包 :在 Package Manager 中卸载通过官方源安装的 Addressables 包。这一步很重要,可以避免未来与你在
Packages目录下的修改版发生冲突-1。 -
导入本地包 :在 Package Manager 中,选择"从本地磁盘安装"(Install package from disk...),然后找到并选中你刚刚粘贴到
Packages目录下的包的package.json文件。
完成以上步骤后,就会以本地的副本为准,对 Packages/com.unity.addressables/ 下的任何代码修改都会生效。
修改后,未来升级 Addressables 版本时需要手动合并代码,维护成本会增加。
