UE4 GameplayTagが追加/削除されたときにイベントを受け取って処理をしたいときに見るメモ

目次

やあ

攻撃されて毒になったり、混乱状態になったりとしたいときに、GameplayTagが追加されたらエフェクトをだして、GameplayTagが削除されたらエフェクトを消したいぜって思ったので書きます。

環境

実装?

Hoge.h

/* このタグが追加/削除されたときにイベントを受け取る */
UPROPERTY(EditAnywhere, BlueprintReadOnly)
    FGameplayTag StunTag;
/* イベントを受け取った時に呼び出される関数 */
virtual void StunTagChanged(const FGameplayTag CallBackTag, int32 NewCount);

Hoge.cpp

void AHoge::BeginPlay()
{
    Super::BeginPlay();

    /* タグの追加/削除イベントに関数をバインド */
    AbilitySystemComponent->RegisterGameplayTagEvent(StunTag, EGameplayTagEventType::NewOrRemoved).AddUObject(this, &ACharacterBase::StunTagChanged);
}

void AHoge::StunTagChanged(const FGameplayTag CallBackTag, int32 NewCount)
{
    UE_LOG(LogTemp, Log, TEXT("StunTagChanged %s %d"), *CallBackTag.GetTagName().ToString(), NewCount);

    if (NewCount > 0)
    {
        /* DoStun */
    }
    else
    {
        /* StopStun */
    }
}

おまけ(GameplayEffectを適用したときに適用した相手にタグを追加したい)

GrantedTagsにタグを登録すると適用した相手に自動的にタグを追加してくれます。
すごいですね。
f:id:pto8913:20201026111424p:plain