ue3dEZAddresser一个用于自动化可寻址地址设置工具

EZAddresser一个用于自动化可寻址地址设置工具

分类:
ue3d - EZAddresser一个用于自动化可寻址地址设置工具

EZAddresser是一款Unity自动化Addressables资产系统地址设置的工具。

什么是EZAddresser?

EZAddresser是一个在Unity的可寻址资产系统中自动分配地址的工具。安装后,可以通过以下两个步骤轻松加载资源。

  1. 将要加载的资源放入Addressables文件夹中
  2. Addressables.LoadAssetAsync(“[此处的资产名称]”)
ue3d - EZAddresser一个用于自动化可寻址地址设置工具

版本要求

支持Unity版本2020.1或更高版本(因为它使用Generic类型序列化)。

安装

  1. 从Unity窗口 → 包管理器 → 打开包管理器
  2. 点击+按钮 → 从git URL添加包
  3. 进入:https://github.com/Haruma-K/EZAddresser.git?path=/Packages/com.harumak.ezaddresser
ue3d - 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按照以下过程读取资产。

  1. 创建一个名为Addressables的文件夹
  2. 将要读取的资源存放在1中的文件夹中。
  3. 使用Addressables.LoadAssetAsync(filename)读取

此时,地址和组将根据以下规则创建。

  1. 地址与不带扩展名的文件名匹配(可以更改,见下文)
  2. 可以创建和嵌套多个Addressables文件夹
  3. AssetBundle被划分为每个Addressables文件夹(可更改,稍后描述)

全局设置

可以从unity窗口 → EZAddresser → 设置 → 编辑全局设置。

ue3d - EZAddresser一个用于自动化可寻址地址设置工具

各设置项说明如下:

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

如果更改这些设置项目,将显示以下对话框并更新所有地址和组。

ue3d - EZAddresser一个用于自动化可寻址地址设置工具

请注意,当更改组模板时,所有组将被删除一次,并且每个组的设置将被重置。

每个资产的设置

可以从Window菜单EZAddresser → Entry Rule Editor编辑每个资产的设置。

ue3d - EZAddresser一个用于自动化可寻址地址设置工具

每个规则都可以通过工具栏上的创建按钮创建,各规则的各设定项目的说明如下。

项目名解释
可寻址路径规则表示目标资源的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的组中。

如果更改这些设置项目,将显示以下对话框并更新所有地址和组。

ue3d - EZAddresser一个用于自动化可寻址地址设置工具

假设的工作流程

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用于自动化可寻址地址设置的工具的全部内容,如果你有任何反馈,请随时在本页面下方留言。

相关信息

  • 类型:知识
  • 字数:1162
  • 字符:4842
  • 适用软件:Unity
  • 说明:无
  • 编号:165580

热门内容

提示:3D天堂作为服务提供者,尊重网络版权及知识产权,对某些行为的发生不具备充分的监控能力,若无意间侵犯到您的权利,请 联系我们,我们会在收到信息后尽快给予处理。

本站文章版权归本站自创作者所有,未经允许不得转载!