
EZAddresser是一款Unity自动化Addressables资产系统地址设置的工具。
什么是EZAddresser?
EZAddresser是一个在Unity的可寻址资产系统中自动分配地址的工具。安装后,可以通过以下两个步骤轻松加载资源。
- 将要加载的资源放入Addressables文件夹中
- Addressables.LoadAssetAsync(“[此处的资产名称]”)

版本要求
支持Unity版本2020.1或更高版本(因为它使用Generic类型序列化)。
安装
- 从Unity窗口 → 包管理器 → 打开包管理器
- 点击+按钮 → 从git URL添加包
- 进入:https://github.com/Haruma-K/EZAddresser.git?path=/Packages/com.harumak.ezaddresser

或者打开Packages/manifest.json并将以下内容添加到依赖项块中:
{
"dependencies": {
"com.harumak.ezaddresser": "https://github.com/Haruma-K/EZAddresser.git?path=/Packages/com.harumak.ezaddresser"
}
}
如果要指定版本,则如下写。
https://github.com/Haruma-K/EZAddresser.git?path=/Packages/com.harumak.ezaddresser#0.1.0
基本用法
EZAddresser按照以下过程读取资产。
- 创建一个名为Addressables的文件夹
- 将要读取的资源存放在1中的文件夹中。
- 使用Addressables.LoadAssetAsync(filename)读取
此时,地址和组将根据以下规则创建。
- 地址与不带扩展名的文件名匹配(可以更改,见下文)
- 可以创建和嵌套多个Addressables文件夹
- AssetBundle被划分为每个Addressables文件夹(可更改,稍后描述)
全局设置
可以从unity窗口 → EZAddresser → 设置 → 编辑全局设置。

各设置项说明如下:
项目名 | 解释 |
基础包装模式 | 按可寻址方式打包文件夹:AssetBundle按Addressables文件夹划分。 打包在一起:所有资源都存储在同一个AssetBundle中。 |
基址模式 | 资产名称:以扩展名作为地址的文件名。 不带扩展名的资产名称:使用不带扩展名的文件名作为地址。 可寻址路径:使用Addressables文件夹中带有扩展名的相对路径作为地址。 不带扩展名的可寻址路径:使用Addressables文件夹中不带扩展名的相对路径作为地址。 |
组模板 | 如果未设置创建组时使用的模板,则将使用AddressableAssetSettings中设置的第一个模板。 |
如果更改这些设置项目,将显示以下对话框并更新所有地址和组。

请注意,当更改组模板时,所有组将被删除一次,并且每个组的设置将被重置。
每个资产的设置
可以从Window菜单EZAddresser → Entry Rule Editor编辑每个资产的设置。

每个规则都可以通过工具栏上的创建按钮创建,各规则的各设定项目的说明如下。
项目名 | 解释 |
可寻址路径规则 | 表示目标资源的Addressables文件夹的相对路径的正则表达式。 |
地址模式 | 应用于目标资产的寻址模式。 |
组名规则 | 存储目标资产的组名称Regex .Replace([Addressable Path], [Addressable Path Rule], [Group Name Rule])提示输入实际组名称。 但是,在这种情况下,/ 会被替换为 – 。 |
标签规则 | 实际标签名称是目标资产所附加的标签Regex .Replace([Addressable Path], [Addressable Path Rule], [Label Rule]) 所需要的。 可以通过用逗号分隔来指定多个选项。 标签名称中不允许有空格。 |
例如,如果可寻址路径规则设置为prefab_sample_(?[0-9]{3}).prefab,
prefab_sample_001.prefab和prefab_sample_002.prefab均受此规则约束。
另外,如果该规则的Group Name Rule为Prefab${prefab_id},则上述Prefab将分别存储在名为Prefab001和Prefab002的组中。
如果更改这些设置项目,将显示以下对话框并更新所有地址和组。

假设的工作流程
EZAddresser的设计考虑了以下工作流程,首先考虑原型或项目的早期阶段。
此时,将所有资源内置到应用程序中就足够了,甚至不必担心AssetBundle划分单元。所以不用担心细节,只需将要加载的资源放入Addressables文件夹中即可。
不过最好只决定与读取接口相关的部分,即Settings中的Base Addressing Mode。随着项目的进展,将准备资源分发服务器,并可以下载资源。
此时,将使用Addressalbe资产系统的功能为每个组设置内容打包和加载,如果还想更改群组的模板,现在是这样做的好时机。
而随着项目接近完成,AssetBundle的划分单元经常被提出作为一个问题。大多数时候,需要将太大的AssetBundle分解为适当的粒度。
此时,使用Entry Rule Editor将适当的Assets放入适当的AssetBundle中。
从脚本进行操作
全局和每个资产的设置可以通过脚本进行操作。
首先,全局设置操作如下:
var settingsService = new SettingsService(new SettingsRepository());
settingsService.UpdateSetting(packingMode, addressingMode, groupTemplateGuid);
settingsService.Save();
各资产的设置操作如下:
var entryRulesService = new EntryRulesService(new EntryRulesRepository());
// 获取所有规则.
var allRules = entryRulesService.GetState();
// 获取第一条规则.
var firstRule = allRules.First();
// 更新第一条规则.
entryRulesService.UpdateRule(firstRule.Id, new EntryRuleUpdateCommand(addressablePathRule, addressingMode, groupNameRule));
// 添加规则.
entryRulesService.AddRule(new EntryRuleUpdateCommand(addressablePathRule, addressingMode, groupNameRule));
// 删除规则.
entryRulesService.RemoveRule(firstRule.Id);
// 保存更改.
entryRulesService.Save();
…
以上是关于EZAddresser用于自动化可寻址地址设置的工具的全部内容,如果你有任何反馈,请随时在本页面下方留言。