この記事は Unreal Engine (UE) Advent Calendar 2025 のシリーズ1、6日目の記事です
なにか軽く、かつそれなりに役立つ話題ということで
今回は GameplayTag の活用について書きます
GameplayTag とは?
GameplayTagとは、階層構造を持つラベルとして機能するユーザー定義文字列 です
詳しくは 公式ドキュメント を見るのが手っ取り早いのですが
Character.Enemy.Zombie
Character.Enemy.Skeleton
のように、 . で区切った階層構造を表すことができます
Editor上では、画像のようになっており、UIから選択できる定数として扱えます
Gameplay Ability System で使うやつだ!
と思う人もいるかと思いますが、それだけにとどまらず、汎用的に使える便利なやつです
文字列定数は String とか Name を使いがちですが、GameplayTagなら定義済みから選ぶのでタイプミスもありません
個別にコメントも付けられるので、マジックナンバー化することも防げます
さらに……「このタグどこで使ってたっけ……?」となった場合も、ReferenceViewerから検索することができます
これはStringやNameではできない明確な利点ですね

とても便利なので、文字列を渡してSwitchとかEqualで分岐させてる処理あたりから差し替えてみましょう

TypedGameplayTagsはいいぞ
GameplayTagは便利なのですが、BP内で変数として定義する場合、メタ情報を設定できないので、フィルタリングをすることができません
なので、Tagを選択する際に関係ない全てのタグから、欲しいタグを探す必要が出てきます
そこで、 Typed Gameplay Tags をおすすめします
記事時点でUE5.5のみの対応ですが、UE5.6以降でも使用できます
実のところ、これもC++は必要なのですが、実質5行ぐらい書けばその後がかなり快適になるので、チャレンジしてみましょう
USTRUCT(meta = (GameplayTagFilter = "Character.Enemy", PresentAsType = "GameplayTag"))
struct FMyEnemyTag : public FGameplayTag
{
GENERATED_BODY()
END_TYPED_TAG_DECL(FMyEnemyTag, TEXT("Character.Enemy"))
};
これをビルドすると、GameplayTag と同じように MyEnemyTag という型が選べるようになります
型として扱えるので、プログラム内での扱いがよりわかりやすくなるでしょう
あると便利なヘルパー関数
せっかくなので、もうちょっとだけ頑張って、簡単なヘルパー関数を用意しておくとよいです
この BlueprintAutoCast を設定した関数があれば、GameplayTagからTypedTagへ繋いだときに自動的に変換ノードが挟まるので、利便性がかなり向上します
UCLASS()
class TT_API MyTypedTagConvertLibrary : public UBlueprintFunctionLibrary
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintPure, Category = "TypedTag", meta = (CompactNodeTitle = "To EnemyTag", BlueprintAutoCast))
static FMyEnemyTag Conv_NativeTagToMyEnemyTag(FGameplayTag NativeTag)
{
return FMyEnemyTag::TryConvert(NativeTag);
}
}
リンク
Gameplay Tagの概要
Fab: Typed Gameplay Tag



