IN THIS ARTICLE
使用文件标记系统包含或排除资源
O3DE 使用文件标记系统在处理的各个阶段包含或排除文件。此系统使用文件标签规则来选择与指定模式匹配的文件。文件标签与每个规则相关联,以用作文件标签查询中的键。这是通过使用 O3DE FileTag API 完成的。您可以使用 O3DE 资产编辑器创建自己的自定义文件标签规则。当您需要对在处理步骤中应包含或排除哪些文件时进行额外控制时,这非常有用。例如,作为资产捆绑的一部分,消除在使用 Missing Dependency Scanner 后发现的“误报”非常有用。
主题
创建文件标签规则
使用 O3DE 资产编辑器将自定义文件标签规则添加到exclude.filetag 或 include.filetag,具体取决于您是排除还是包含资产文件。这两个.filetag文件都位于dev\Engine目录中。文件标记规则由两个必需部分组成:
- File Pattern 定义与此规则匹配的文件。支持的模式包括:
- Exact \(例如, `readme.txt`\)
- Wildcard \(例如, `*.cfxb`\)
- Regex \(例如, `.*/gems?/?.*/gem.json`\)
- O3DE 或您自己的代码用作键的一个或多个 File Tags ,用于引用此规则定义的文件模式匹配。
您可以使用 Comment 字段添加有关文件标记规则的更多信息,例如记录其使用情况。
Note:某些文件标签在 O3DE 中具有指定的用途。各种工具可能要求您使用特定的标签,例如editoronly和shader。可以在dev\Code\Framework\AzFramework\AzFramework\FileTag\FileTag.h中的FileTagsIndex枚举中找到常用标记的完整列表。
如何创建文件标签规则
在 O3DE 编辑器中,选择Tools, Asset Editor.
选择 File, Open, 并从
Engine目录选择exclude.filetag或include.filetag。打开 Definition, 找到标记为 File Tag Map的行,点击 ‘+’ 按钮添加新的子元素。

- 在 New Key 字段中输入所需的文件匹配模式。

从列表中打开您的新文件模式键,然后选择相应的 File Pattern 类型。
添加一个或多个 File Tags 以与您的新文件模式关联。

- 选择 File, Save 以保存新的 File 标签规则。
使用 FileTag API
您可以使用 C++ FileTag API 编写自己的逻辑来确定是包含还是排除文件。以下示例使用文件标记系统忽略与ignore 和 shader标记关联的模式匹配的文件。
bool IsIgnored(const char* szPath)
{
using namespace AzFramework::FileTag;
AZStd::vector<AZStd::string> tags{ "ignore", "shader" };
bool shouldIgnore = false;
QueryFileTagsEventBus::EventResult(shouldIgnore, FileTagType::exclude, &QueryFileTagsEventBus::Events::Match, szPath, tags);
return shouldIgnore;
}
Note:在前面的示例中,它显示了对 IDFileTagType::exclude的QueryFileTagsEventBus的查询。这意味着此查询正在使用exclude.filetag文件中指定的文件标记规则。
您可以在dev\Code\Framework\AzFramework\AzFramework\FileTag目录中找到 FileTag API。在该目录中,FileTag.h 声明了上一个示例中使用的 Match 方法。还有其他方法,例如 GetTags,您可以使用它们编写更复杂的逻辑。您可能会发现使用 FileTagComponent.h 中的 excludeFileComponent 辅助类很有用。此组件类会自动为您加载默认排除文件,将文件标记类型设置为FileTagType::exclude,并在激活时连接到 QueryFileTagsEventBus。