はじめに
Unreal Engine (UE) Advent Calendar 2025 の8日目の記事です!
Gameplay Ability Blueprint を作成して Class Defaults を開くと、AssetTags (Default AbilityTags) や Cancel Abilities with Tag、Block Abilities with Tag などのタグを設定することができます。
この記事では Gameplay Ability で設定できる、これらのタグの種類について解説します。

この記事の環境は以下の通りです。
- Windows 11
- UE 5.7.1(ランチャー版)
UE 5.7.1 時点で設定できるタグの種類は以下の10個です。
- AssetTags (Default AbilityTags)
- Cancel Abilities with Tag
- Block Abilities with Tag
- Activation Owned Tags
- Activation Required Tags
- Activation Blocked Tags
- Source Required Tags
- Source Blocked Tags
- Target Required Tags
- Target Blocked Tags
GameplayAbility.h に書かれている各変数の表示名と、そのコメントを表にまとめてみました。
| プロパティ名 | コメント(原文) | コメント(和訳) |
|---|---|---|
| AssetTags (Default AbilityTags) | This ability has these tags | このアビリティはこれらのタグを持っています。 |
| Cancel Abilities with Tag | Abilities with these tags are cancelled when this ability is executed | これらのタグを持つアビリティはこのアビリティが実行されるとキャンセルされます。 |
| Block Abilities with Tag | Abilities with these tags are blocked while this ability is active | これらのタグを持つアビリティはこのアビリティが発動している間、ブロックされます。 |
| Activation Owned Tags | Tags to apply to activating owner while this ability is active. These are replicated if ReplicateActivationOwnedTags is enabled in AbilitySystemGlobals. | このアビリティが発動している間、発動所有者に適用するタグ。これらは AbilitySystemGlobals で ReplicateActivationOwnedTags が有効になっている場合にレプリケートされます。 |
| Activation Required Tags | This ability can only be activated if the activating actor/component has all of these tags | このアビリティは、発動しているアクター/コンポーネントがこれら全てのタグを持っている場合にのみ発動されることができます。 |
| Activation Blocked Tags | This ability is blocked if the activating actor/component has any of these tags | このアビリティは、発動しているアクター/コンポーネントがこれらのいずれかのタグを持っている場合にブロックされます。 |
| Source Required Tags | This ability can only be activated if the source actor/component has all of these tags | このアビリティはソースのアクター/コンポーネントがこれら全てのタグを持っている場合にのみ発動されることができます。 |
| Source Blocked Tags | This ability is blocked if the source actor/component has any of these tags | このアビリティはソースのアクタ/コンポーネントがこれらのいずれかのタグを持っている場合にブロックされます。 |
| Target Required Tags | This ability can only be activated if the target actor/component has all of these tags | このアビリティは対象のアクター/コンポーネントがこれら全てのタグを持っている場合にのみ発動されることができます。 |
| Target Blocked Tags | This ability is blocked if the target actor/component has any of these tags | このアビリティは対象のアクター/コンポーネントがこれらのいずれかのタグを持っている場合にブロックされます。 |
検証用のプロジェクト
今回作成した検証用のプロジェクトについて解説します。
まず、「Sample.SampleTag1」と「Sample.SampleTag2」、「Sample.SampleTag3」という3つの Gameplay Tag を定義しました。

次に AActor を親クラスとする「BP_SampleActor」というブループリントクラスを作成して、「AbilitySystem」という名前の Ability System Component をアタッチしました。
このアクタは初めからレベルに配置されています。

最後に UGameplayAbility を親クラスとする「GA_Sample」という Gameplay Ability Blueprint を作成しました。
GA_Sample::ActivateAbility() には、「Activated Sample Ability」と表示して End Ability を呼び出すという処理を追加しました。

ここからは実際の挙動を通じて各タグの意味とその役割を解説していきます。
基本的なタグ
まずは AssetTags と Cancel Abilities with Tag、Block Abilities with Tag という3つの基本的なタグから解説します。
AssetTags はそのアビリティ自体に設定できるタグですが、Cancel Abilities with Tag と Block Abilities with Tag は同じ所有者の持つ他のアビリティに対して影響を与えることができます。
AssetTags (Default AbilityTags)
まずは AssetTags についてです。
これは Gameplay Ability で設定できる最も基本的なタグで、そのアビリティ自体が所有しているタグのことです。
とりあえず、GA_Sample の AssetTags に「Sample.SampleTag1」を設定しました。

次に、この画像のような処理を BP_SampleActor::BeginPlay() に追加しました。

このブループリントで行っている処理は以下の通りです。
- Give Ability で BP_SampleActor::AbilitySystem に GA_Sample を与える。
- Make Gameplay Tag Container from Tag の SingleTag 引数に「Sample.SampleTag1」を渡して Gameplay Tag Container を作成する。
- Try Activate Abilities by Tag の GameplayTag Container 引数にその Gameplay Tag Container を渡して、タグ経由で間接的に GA_Sample を発動させる。
- GA_Sample の発動に成功したら「true」、失敗したら「false」と表示する。
この状態でゲームを実行すると、「Activated Sample Ability」と「true」と表示されました。
BP_SampleActor::AbilitySystem に与えた GA_Sample が正常に発動していることがわかります。

当然、Gameplay Tag Container を作成する時に渡すタグを「Sample.SampleTag2」や「Sample.SampleTag3」などの別のタグに変更すると、GA_Sample は発動せずに「false」と表示されます。
GA_Sample の AssetTags を別のタグに変えた場合も同様です。
AssetTags に複数のタグを設定した場合は、Gameplay Tag Container を作成する時にそれらのうちのいずれかのタグを渡してあげると GA_Sample が発動するようになります。

Cancel Abilities with Tag
次は Cancel Abilities with Tag についてです。
アビリティを発動した時に、この Cancel Abilities with Tag に設定されているいずれかのタグを持つ、発動中のアビリティはキャンセルされます。
とりあえず、UGameplayAbility を親クラスとする「GA_Sample2」という Gameplay Ability Blueprint を作成して、「Executing Sample2 Ability」と毎フレーム表示し続けるという処理を ActivateAbility() に追加しました。

GA_Sample2 の AssetTags には「Sample.SampleTag2」を設定しました。

GA_Sample だけではなく、GA_Sample2 も BP_SampleActor::AbilitySystem に与えて、その GA_Sample2 のみを発動するように BP_SampleActor::BeginPlay() を修正しました。

この状態でゲームを実行すると「Executing Sample2 Ability」と毎フレーム表示され続けます。
そして、GA_Sample の Cancel Abilities with Tag に「Sample.SampleTag2」を設定してみました。

BP_SampleActor には、Enter キーが押されたら GA_Sample を発動させるという処理を追加しました。

この状態でゲームを実行して Enter キーを押してみると、「Activated Sample Ability」と表示されてからは「Executing Sample2 Ability」と表示されなくなりました。

Cancel Abilities with Tag がしっかり機能していることがわかります。
試しに GA_Sample の Cancel Abilities with Tag から「Sample.SampleTag2」を外した状態で再度実行してみると、「Activated Sample Ability」と表示された後も「Executing Sample2 Ability」と表示され続けました。

先ほどは Cancel Abilities with Tag の効果で GA_Sample2 がキャンセルされたことがわかります。
Block Abilities with Tag
次は Block Abilities with Tag についてです。
アビリティ発動中、この Block Abilities with Tag に設定されているいずれかのタグを持つアビリティは発動できなくなります。
アビリティが発動したら「Activated Sample Ability」と表示して3秒間待機し、その後に「End Sample Ability」と表示して End Ability を呼び出すように GA_Sample::ActivateAbility() を修正しました。

GA_Sample2::ActivateAbility() は「Activated Sample2 Ability」と表示してすぐに End Ability を呼び出すように修正しました。

GA_Sample も GA_Sample2 も AssetTags のみ設定されていて、Cancel Abilities with Tag や Block Abilities with Tag などは空の状態です。
BP_SampleActor::BeginPlay() は、GA_Sample と GA_Sample2 を BP_SampleActor::AbilitySystem に与えた後に GA_Sample を発動するように修正しました。

また、Enter キーが押されたら GA_Sample2 を発動して、その結果を表示するようにも修正しました。

この状態でゲームを実行して GA_Sample の発動中と発動後の計2回、Enter キーを押してみると、どちらも「Activated Sample2 Ability」と「true」と表示されました。

GA_Sample の発動中かどうかに関わらず、GA_Sample2 を正常に発動できていることがわかります。
そして、GA_Sample の Block Abilities with Tag に「Sample.SampleTag2」を設定してみました。

この状態でゲームを実行して再び同じタイミングで2回、Enter キーを押してみると、1回目は「false」とだけ表示されて、2回目は「Activated Sample2 Ability」と「true」と表示されました。

GA_Sample の発動中は GA_Sample2 を発動できなくなっているのがわかります。
Activation~ 系のタグ
次は Activation Owned Tags と Activation Required Tags、Activation Blocked Tags という Activation~ 系のタグについて解説します。
Activation Owned Tags はそのアビリティの所有者に持たせることのできるタグのことですが、Activation Required Tags と Activation Blocked Tags はそのアビリティの所有者が保持しているタグに応じて、そのアビリティの挙動を変えることができます。
Activation Owned Tags
次は Activation Owned Tags についてです。
アビリティを発動中、この Activation Owned Tags に設定したタグがそのアビリティの所有者に適用されます。
とりあえず、アビリティが発動したら「Activated Sample Ability」と表示して1秒間待機し、その後に「End Sample Ability」と表示して End Ability を呼び出すように GA_Sample::ActivateAbility() を修正してみました。

GA_Sample には AssetTags のみ設定してあります。
Activation Owned Tags は空です。
また、GA_Sample を BP_SampleActor::AbilitySystem に与えた後、1秒間待ってから GA_Sample を発動するように BP_SampleActor::BeginPlay() を修正しました。

さらに BP_SampleActor::AbilitySystem が「Sample.SampleTag1」を持っているかどうかを「true」と「false」で毎フレーム表示するという処理を BP_SampleActor::Tick() に追加しました。

この状態でゲームを実行すると、以下のように GA_Sample の発動前も発動中も発動終了後も「false」と表示され続けました。
≀
LogBlueprintUserMessages: [BP_SampleActor_C_1] false
LogBlueprintUserMessages: [GA_Sample_C_0] Activated Sample Ability
LogBlueprintUserMessages: [BP_SampleActor_C_1] false
≀
LogBlueprintUserMessages: [BP_SampleActor_C_1] false
LogBlueprintUserMessages: [GA_Sample_C_0] End Sample Ability
LogBlueprintUserMessages: [BP_SampleActor_C_1] false
≀
つまり、この状態では BP_SampleActor::AbilitySystem はどのタイミングにおいても「Sample.SampleTag1」を持っていないということがわかります。
そして、GA_Sample の Activation Owned Tags に「Sample.SampleTag1」を設定してみました。

この状態でゲームを実行すると、以下のように GA_Sample の発動中のみ「true」と表示され、それ以外のタイミングでは「false」と表示されました。
≀
LogBlueprintUserMessages: [BP_SampleActor_C_1] false
LogBlueprintUserMessages: [GA_Sample_C_0] Activated Sample Ability
LogBlueprintUserMessages: [BP_SampleActor_C_1] true
≀
LogBlueprintUserMessages: [BP_SampleActor_C_1] true
LogBlueprintUserMessages: [GA_Sample_C_0] End Sample Ability
LogBlueprintUserMessages: [BP_SampleActor_C_1] false
≀
そのアビリティの発動中、Activation Owned Tags に設定したタグがその Ability System Component に適用されているのがわかります。
Activation Required Tags
次は Activation Required Tags についてです。
このアビリティの所有者が、Activation Required Tags に設定されている全てのタグを持っていないとこのアビリティを発動できなくなります。
つまり、Activation Required Tags では、このアビリティを発動するために所有者が保持しておくべきタグを設定することができます。
とりあえず、アビリティが発動したら「Activated Sample Ability」と表示してすぐに End Ability を呼び出すように GA_Sample::ActivateAbility() を修正しました。

GA_Sample には AssetTags のみ設定してあります。
Activation Required Tags は空です。
また、GA_Sample を BP_SampleActor::AbilitySystem に与えて GA_Sample を発動し、その結果を「true」か「false」で表示するように BP_SampleActor::BeginPlay() を修正しました。

この状態でゲームを実行すると、「Activated Sample Ability」と「true」と表示されて GA_Sample が正常に発動していることがわかります。

そして、GA_Sample の Activation Required Tags に「Sample.SampleTag1」を設定してみました。

この状態でゲームを実行すると「false」とだけ表示されて GA_Sample の発動に失敗していることがわかります。

GA_Sample の発動には「Sample.SampleTag1」が必要であるにも関わらず、BP_SampleActor が「Sample.SampleTag1」を持っていなかったため、このような結果になりました。
次に BP_SampleActor::BeginPlay() で GA_Sample を発動する前に Add Loose Gameplay Tags というノードを使って BP_SampleActor に「Sample.SampleTag1」を追加してみます。

この状態でゲームを実行すると、「Activated Sample Ability」と「true」と表示されて GA_Sample が正常に発動していることがわかります。

このように Activation Required Tags ではそのアビリティの発動に必要なタグ(そのアビリティの所有者が保持しておくべきタグ)を設定することができます。
Activation Required Tags は、アビリティの所有者がこれら『いずれか』のタグを持っている場合にそのアビリティを発動できるのではなく、これら『全て』のタグを持っている場合にそのアビリティを発動できるという点には注意が必要です。
例えば今回の例では GA_Sample の Activation Required Tags に「Sample.SampleTag1」と「Sample.SampleTag2」、「Sample.SampleTag3」という3つのタグを設定したとします。

この状態で先ほどのように、BP_SampleActor::BeginPlay() で GA_Sample を発動する前に「Sample.SampleTag1」のみを BP_SampleActor に追加すると、「false」とだけ表示されて GA_Sample の発動に失敗してしまいます。

この場合、今回の例では BP_SampleActor::BeginPlay() で Make Literal Gameplay Tag Container を使って「Sample.SampleTag1」と「Sample.SampleTag2」、「Sample.SampleTag3」の3つのタグを BP_SampleActor に追加すると GA_Sample を正常に発動できるようになります。

Activation Blocked Tags
次は Activation Blocked Tags についてです。
Activation Blocked Tags は先ほどの Activation Required Tags とは逆で、このアビリティの所有者が、Activation Blocked Tags に設定されているいずれかのタグを持っているとこのアビリティを発動できなくなります。
GA_Sample::ActivateAbility() の処理は先ほどと同じままで、GA_Sample の Activation Blocked Tags に「Sample.SampleTag1」を設定してみました。


BP_SampleActor::BeginPlay() は GA_Sample を BP_SampleActor::AbilitySystem に与えて GA_Sample を発動し、その結果を「true」か「false」で表示するようにしました。

この状態でゲームを実行すると、「Activated Sample Ability」と「true」と表示されて GA_Sample が正常に発動していることがわかります。

しかし、以下のように BP_SampleActor::BeginPlay() で GA_Sample を発動する前に「Sample.SampleTag1」を BP_SampleActor に追加してみると、「false」とだけ表示されて GA_Sample の発動に失敗してしまいます。


そのアビリティの所有者が Activation Blocked Tags に設定されている、いずれかのタグを持っていると、そのアビリティを発動できなくなっているのがわかります。
Source~ 系と Target~ 系のタグ
最後は Source Required Tags と Source Blocked Tags という Source~ 系のタグと、Target Required Tags と Target Blocked Tags という Target~ 系のタグについて解説します。
これらのタグはそのアビリティを Gameplay Event 経由で発動させる場合にのみ意味を持つタグです。
(たぶん)
Send Gamaplay Event to Actor や Send Gameplay Event などで Gameplay Event を送信する際、Gameplay Event Data という構造体を作成して Payload 引数に渡すことができます。
Source~ 系のタグは、この Gameplay Event Data を作成する時に設定できる「Instigator Tags」を、Target~ 系のタグは「Target Tags」を参照します。

Source Required Tags
まずは Source Required Tags についてです。
Gameplay Event 経由でこのアビリティを発動させる際、Source Required Tags に設定されている全てのタグが Instigator Tags に含まれていないと、このアビリティを発動できなくなります。
つまり、Source Required Tags では、Gameplay Event 経由でこのアビリティを発動するために Instigator Tags に設定されておくべきタグを設定することができます。
とりあえず、GA_Sample の Source Required Tags に「Sample.SampleTag2」を設定しました。
今回、GA_Sample は Gameplay Event 経由で発動させるので「Triggers > Ability Triggers」に要素を1つ追加して、Trigger Tag を「Sample.SampleTag1」に、Trigger Source を「On Gameplay Event」に変更しました。

また、これまでは GA_Sample::ActivateAbility() で「Activated Sample Ability」と表示していましたが、GA_Sample::ActivateAbilityFromEvent() でそれを表示するように修正しました。

BP_SampleActor::BeginPlay() は GA_Sample を BP_SampleActor::AbilitySystem に与えた後に Send Gamaplay Event to Actor で「Sample.SampleTag1」のイベントを送信するように修正しました。
Gameplay Event Data の Instigator Tags にはまだ何も設定していません。

GA_Sample の Source Required Tags には「Sample.SampleTag2」と設定されているにも関わらず、Gameplay Event Data の Instigator Tags にはそれが設定されていないため、この状態でゲームを実行しても「Activated Sample Ability」と表示されることはありません。
しかし、以下のように BP_SampleActor::BeginPlay() で Gameplay Event を送信する際、Gameplay Event Data の Instigator Tags に「Sample.SampleTag2」を設定すると、「Activated Sample Ability」と表示されて GA_Sample が正常に発動するようになります。


この Source Required Tags も Activation Required Tags のときのように、そこに設定した『全て』のタグが Instigator Tags に設定されているときのみ、そのアビリティを発動させることができます。
Source Blocked Tags
次は Source Blocked Tags についてです。
Source Blocked Tags は先ほどの Source Required Tags とは逆で、Gameplay Event 経由でそのアビリティを発動させる際、 Source Required Tags に設定されているいずれかのタグを Instigator Tags が含んでいないと、このアビリティを発動できなくなります。
とりあえず、GA_Sample の Source Blocked Tags に「Sample.SampleTag2」を設定してみました。
「Triggers > Ability Triggers」や GA_Sample::ActivateAbilityFromEvent() の内容は変更していません。

BP_SampleActor::BeginPlay() では Gameplay Event Data の Instigator Tags に何も設定せずに Send Gamaplay Event to Actor するようにしました。

この状態でゲームを実行すると、「Activated Sample Ability」と表示されて GA_Sample が正常に発動していることがわかります。

ところが、 Gameplay Event Data の Instigator Tags に「Sample.SampleTag2」を設定した状態でゲームを実行すると何も表示されず、GA_Sample が発動しませんでした。

Gameplay Event Data の Instigator Tags が、Source Required Tags に設定されているタグを含んでいると GA_Sample を発動できなくなっているのがわかります。
Target Required Tags / Target Blocked Tags
最後は Target Required Tags と Target Blocked Tags についてです。
Source Required Tags と Source Blocked Tags は Gameplay Event Data の Instigator Tags を参照していましたが、Target Required Tags と Target Blocked Tags はそれらの「Target Tags を参照するバージョン」です。
基本的な挙動は Source~ 系のタグと変わりません。
(たぶん)
最後に
参考記事
- 【UE5】GameplayAbilitySystem超入門編【GAS】
- Unreal Engine でのゲームプレイ アビリティの使用
- Gameplay Ability System のデバッグ HUD について
- GameplayAbilities and You
- GASDocumentation



