UE4 GameplayEffectが適用された/削除されたときになにかしたいときに見るメモ

目次

やあ

GameplayEffectが適用された/削除されたときになにかしたいなーって思って。

環境

  • UE 4.25.0

内容

hoge.h

/* 自分にGameplayEffectが適用されたときに呼ばれる関数 */
UFUNCTION(BlueprintCallable)
    virtual void OnAppliedGameplayEffectToSelf(
        UAbilitySystemComponent* Source,
        const FGameplayEffectSpec& Spec,
        FActiveGameplayEffectHandle Handle
    );
/* GameplayEffectが削除されたときに呼ばれる関数 */
UFUNCTION(BlueprintCallable)
    virtual void OnGameplayEffectRemoved(
        const FActiveGameplayEffect& EffectRemoved
    );

hoge.cpp

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

    /* hoge.hで宣言した関数にバインドする */ 
    AbilitySystemComponent->OnGameplayEffectAppliedDelegateToSelf.AddUObject(
        this, &AHoge::OnAppliedGameplayEffectToSelf
    );
    AbilitySystemComponent->OnAnyGameplayEffectRemovedDelegate().AddUObject(
        this, &AHoge::OnGameplayEffectRemoved
    );
}

void AHoge::OnAppliedGameplayEffectToSelf(
    UAbilitySystemComponent* Source,
    const FGameplayEffectSpec& Spec,
    FActiveGameplayEffectHandle Handle
)
{
    /* なにかの処理 */ 
}

void AHoge::OnGameplayEffectRemoved(
    const FActiveGameplayEffect& EndedGameplayEffect
)
{
    /* なにかの処理 */
    /* 削除されたGameplayEffectのGameplayTagが欲しい時 */
    FGameplayTagContainer EndedGameplayEffectAssetTag;
    EndedGameplayEffect.Spec.GetAllAssetTag(EndedGameplayEffectAssetTag);
}