UE4 GameplayTagが追加/削除されたときにイベントを受け取って処理をしたいときに見るメモ
目次
やあ
攻撃されて毒になったり、混乱状態になったりとしたいときに、GameplayTag
が追加されたらエフェクトをだして、GameplayTag
が削除されたらエフェクトを消したいぜって思ったので書きます。
環境
- UE4.25.0
実装?
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
にタグを登録すると適用した相手に自動的にタグを追加してくれます。
すごいですね。