GAS - Gameplay Tag


Gameplay tag在GAS中是很重要的标记,与Ability、Event和Effect关联紧密,用来表示各种状态。Cooldown(技能冷却)也是利用tag完成的。Tags可以有层级,用“.”隔开,如"Family.Genus.Species",则父级为"Family.Genus",再往上为"Family"。通常一个游戏对象会有许多个tags,因此,引擎提供了Gameplay Tag Container来处理tag的问询(tag query)。Gameplay tag可用于任意项目,作用是识别、匹配、分组、过滤游戏对象。

Gameplay Tag Not Component Tag

现在Gameplay Tag插件在引擎中是默认开启的,但要注意gameplay tag和component tag的区别。

Gameplay Tag Setting

Gameplay Tag的设置界面在project settings中:


创建Gameplay Tags

创建(删除)gameplay tags的三种方法:

  • 在gameplay tags设置界面手动添加和删除。默认的tags信息会保存到 Config/DefaultGameplayTag.ini文件里。


    勾选Import Tags from Config会加载Config/DefaultGameplayTag.iniConfig/Tags/xxx.ini中的信息。

  • 直接编辑.ini文件

    ActionRPG的DefaultGameplayTag.ini

  • 使用Data Table Assets
    编辑行类型为 GameplayTagTableRow的DataTable,然后添加到设置界面的GameplayTagTableList中 。

管理Gameplay Tags


如图可以对tags进行重命名,删除,查找引用等操作。

设置编辑限制(Editing Restriction)

可以禁用对特定标签的编辑,用的不多,详见官方文档。
https://docs.unrealengine.com/en-us/Gameplay/Tags

Gameplay Tag Test Operation(标签的检测操作)

标签之间可以进行匹配。操作对象为gameplay taggameplay tag container。表中{}表示tag container

操作一览

蓝图例子

Gameplay Tag Queries(标签问询)

可以创建tag query对象,使得匹配更有效率。





Using Gameplay Tags In Your Game

说了那么多,如何使用gameplay tags呢?很简单,给对象添加gameplay tags(FGameplayTag)或Gameplay Tag Containers(FGameplayTagContainer)变量即可。
如果使用GAS,则gameplay tag会被ability,effect等使用,不必手动添加gameplay tag和tag container对象。

Quickly Accessing Gameplay Tags in C++

引擎提供了IGameplayTagAssetInterface接口,通过重写该接口的GetOwnedGameplayTags函数,可以方便地在不同类的对象中使用相同接口获得gameplay tags。

你可能感兴趣的:(GAS - Gameplay Tag)