跳到主要内容
信息
文章中可能会出现一些错误,希望大佬们可以在评论区指出错误,感谢支持!

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是可重复的。

Grant Tags to Target Actor组件

参考资料