信息
文章中可能会出现一些错误,希望大佬们可以在评论区指出错误,感谢支持!
05 - GAS中的Gameplay Tags
本文主要说明了UE5中Gameplay技能系统(Gameplay Ability System, GAS)中GameplayTags的相关内容。
概述
Gameplay Tag 是 UE5 提供的一套用来表达游戏语义的通用标记系统,可用于区分输入事件、能力、属性、伤害类型、Buff/Debuff、消息与数据等多种信息。一个 Gameplay Tag 使用 FGameplayTag 类型存储,其内部核心为 FName 类型的 TagName。所有 Tag 均由 Gameplay Tag Manager 统一注册和管理,并具有层级结构。多个 Tag 可以通过 FGameplayTagContainer 进行组合和查询。
在 GAS 中,主要通过实现了 IGameplayTagAssetInterface 的对象(如 Ability System Component)进行 Tag 的查询与操作。此外,其他 GAS 类型也与 Gameplay Tag 有紧密联系,例如 Gameplay Effect 可以向目标的 ASC 添加或移除 Tag,而 Gameplay Ability 则可以根据目标是否拥有某些 Tag 来决定是否能够被激活或应用。
常用操作
创建Gameplay Tag
有关如何通过编辑器中的项目设置、数据表格或C++脚本创建Gameplay Tag详见这篇文章,本文不再赘述。
给ASC添加Gameplay Tag
通过GE
可以通过GE对目标Actor的ASC添加Gameplay Tag。这需要在非立即生效的GE中添加Grant Tags to Target Actor组件,该组件可以为目标Actor的ASC添加或移除Gameplay Tag,需要配置的项目如下:
- Add to Inherited:要添加的Gameplay Tag;
- Remove from Inherited:要移除的Gameplay Tag;
- Combined Tags:Gameplay Tag的最终计算结果(继承的Tag - 移除的Tag + 添加的Tag);
此外,对于支持堆叠的GE,添加的Tag是唯一的;对于不支持堆叠的GE,添加的Tag是可重复的。
