0. 개요
이제 게임플레이 이펙트가 GAS 액터(AuraCharacter, AuraEnemy)에 적용되면 EffectApplied 함수가 호출될 것이다.
해당 함수가 호출되면 캐릭터가 보유하고 있는 모든 태그를 출력하도록 해보자.
1. 코드
(1) AuraAbilitySystemComponent
void UAuraAbilitySystemComponent::EffectApplied(UAbilitySystemComponent *AbilitySystemComponent, const FGameplayEffectSpec &EffectSpec, FActiveGameplayEffectHandle ActiveEffectHandle)
{
// 이펙트 적용 시 무엇을 BroadCast 할 것인가??
// Tag가 적절
FGameplayTagContainer TagContainer;
EffectSpec.GetAllAssetTags(TagContainer);
for (const FGameplayTag& Tag : TagContainer)
{
// TODO : Widget Controller에 태그를 전달
const FString Msg = FString::Printf(TEXT("GE Tag: %s"), *Tag.ToString());
GEngine->AddOnScreenDebugMessage(-1, 8.f, FColor::Blue, Msg);
}
}
EffectSpec 내에 정의된 GetAllAssetTags 함수는 FGameplayTagContainer의 참조를 반환한다.
태그 컨테이너를 저장할 변수를 만들고 for문에서 순회하여 액터가 보유한 모든 태그를 출력하도록 한다.
(2) 콜백 함수의 장점
- 콜백 함수를 이용하면 Duration Effect 뿐 아니라 Instant Effect 일 때도 태그를 부여할 수 있다.
- 하나의 이펙트가 여러개의 태그를 가질 수 있는데, 이 함수는 모든 태그를 순회하기 때문에 확장성이 뛰어나다.
-> 각 태그 상태를 UI에 적용하거나, 추가 효과를 발동하는 등의 동작이 가능
'UE 5 스터디 > Gameplay Ability System(GAS)' 카테고리의 다른 글
5-8. UI - (1) 위젯에 데이터 전달하기 - 데이터 테이블 (0) | 2024.09.02 |
---|---|
5-7. 에셋 태그를 위젯 컨트롤러로 전달(Broadcast)하기 (1) | 2024.09.02 |
5-5. 게임플레이 이펙트 - (3) 델리게이트 (0) | 2024.08.30 |
5-4. 게임플레이 이펙트 - (2) 게임플레이 태그 적용하기 (0) | 2024.08.30 |
5-3. 게임플레이 태그 생성하기 - (2) 데이터 테이블에서 생성하기 (0) | 2024.08.30 |