用途:在 Unreal Engine 5.8 的 C++ 项目中定义、查询、复制 Gameplay Tags,并在各玩法系统间搭建解耦的事件消息。GameplayTags 是内置运行时模块而非插件,需在 Build.cs 的 PublicDependencyModuleNames 加入 "GameplayTags",并包含 GameplayTagContainer.h、NativeGameplayTags.h、GameplayTagsManager.h。
主要能力:标签来源有四类——原生宏(UE_DEFINE_GAMEPLAY_TAG*)、DefaultGameplayTags.ini、Config/Tags/*.ini(含插件配置目录)、FGameplayTagTableRow 数据表,共同汇入 UGameplayTagsManager 的全局字典。宏声明放头文件、定义放同模块唯一 .cpp;Comment 写裸字符串字面量,宏内部自行加 TEXT()。支持运行时通过 AddNativeGameplayTag 注册,并可用 CallOrRegister_OnAddNativeTagsDelegate / CallOrRegister_OnDoneAddingNativeTagsDelegate 处理时序。匹配语义区分父级与精确:MatchesTag、HasTag 含父级,MatchesTagExact、HasTagExact 仅精确;HasAny 空参数为 false、HasAll 空参数为 true。FGameplayTagQuery 可编译一次多次求值,提供 MakeQuery_MatchAnyTags 等快捷方式与表达式树,并可作为 UPROPERTY 供设计师编辑。标签驱动设计推荐实现 IGameplayTagAssetInterface 暴露标签,免费获得 HasMatchingGameplayTag 等接口;多来源授予同一标签时用 FGameplayTagCountContainer(GAS 插件,ASC 用于 OwnedTags)。另有 AsyncMessageSystem 插件实现解耦消息(5.8 中为 Experimental)。
使用方式与限制:标签层级化,注册 MyGame.State.Stunned 会隐式注册父级;重命名标签必须配置 GameplayTagRedirect,否则旧引用静默失效。性能上 RequestGameplayTag 每次查表,应解析一次后缓存;避免每帧调用。FastReplication 用网络索引复制,要求客户端与服务端字典一致,插件单侧加标签会破坏它;启动后调用 AddNativeGameplayTag 会使快速复制失效。标签变量每个二进制只能定义一次,在头文件定义会导致链接错误。资料未提供收费、价格与具体平台信息。