GameplayTag는 GAS 뿐만이 아닌 다른 경우에서도 매우 유용하게 사용할 수 있습니다.
GameplayTag는 열거형이지만, 훨씬 더 체계화되고 정교해진 열거형이라고 생각하시면 됩니다.
GAS에서 GameplayTag는
GameplayTag Container안에 저장되고, GameplayTag Manager에 의해 관리됩니다.
뿐만 아니라
GameplayTag는 블루 프린트가 아닌 C++ 단계에서도 사용이 가능한데
인터페이스인 IGameplayTagAssetInterface로 사용할 수 있습니다.
사용가능한 메서드는 대표적으로
- GetOwnedGameplayTags - 갖고 있는 GameplayTag를 가져옴
- HasMatchingGameplayTag - 지정한 특정 GameplayTag를 갖고 있는지 확인
- HasAllMatchingGameplayTags - 지정한 GameplayTag를 모두 갖고 있는지 확인
- HasAnyMatchingGameplayTags - 지정한 GameplayTag 중에서 하나라도 갖고 있는지 확인
위와 같습니다.
언리얼 엔진에서는 GameplayTag를 만드는 여러가지 방법이 존재합니다.
그 중에서 2가지를 한번 다뤄보겠습니다.
1) 언리얼 에디터에서 수행
Project Settings - GameplayTags에서 수행합니다.
AddGameplayTags로 추가하거나 또는 ManageGameplayTags로 수정/삭제할 수 있습니다.
2) Data Table을 만들고 만든 Data Table에서 수행
언리얼 에디터에서 우클릭 Miscelleanous - Data Table - GameplayTagTableRow을 선택하고
Add를 통해 GameplayTag를 추가할 수 있습니다.
또한 만든 Data Table은 Project Settings - GameplayTags에서 Gameplay Tag Table List에 설정해야 합니다.
3) GE를 통해 Actor에게 GameplayTag 설정하기
GameplayTag를 설정하는 방법은 여러가지가 존재하는데 우선 GE를 통해 부여하는 것이 가능합니다.
GameplayEffect의 Components 패널에서 Tag를 설정하는 방법을 결정할 수 있습니다.
이때 GE의 경우를 3가지로 분류하여 구성할 수 있습니다.
3 - 1) Stacking이 되어 중복적용되는 GE
중복적용되는 동안 TargetActor에게 부여된 GameplayTag는 중복되어 설정되지 않습니다.
즉, Stacking이 3이 적용된 GE를 3번 중복하여 적용하는 경우
첫번째로 설정된 GameplayTag 이후로 다시 설정되지 않습니다.
3 - 2) Stacking이 되어 있지 않아 독자적으로 적용되는 GE
이 경우에는 TargetActor에게 부여된 GameplayTag가 중복되어 설정됩니다.
즉, 동일한 GE를 3번 적용하는 경우
첫 번째 GameplayTag가 설정되고 이어서 두 번째, 세 번째 Tag가 설정됩니다.
3 - 3) Instant GE
이 경우에는 TargetActor에게 GameplayTag를 부여할 수 없습니다.
실제 Instant GE를 대상으로 GameplayTag를 부여하도록 설정하면 다음과 같은 결과를 얻습니다.
그러나 델리게이트를 통해 GE가 부여되는 순간의 이벤트를 통해 콜백 함수를 호출하여
Target Actor에게 GameplayTag를 설정하는 것이 가능합니다.
이 처럼 GameplayTag는 설정하는 방법이 무궁무진하고 다양합니다.
'언리얼 > 게임 프로젝트' 카테고리의 다른 글
Lyra 클론코딩 - (4) ExperienceList3D (0) | 2024.12.27 |
---|---|
Lyra 클론코딩 - (3) Experience (0) | 2024.12.27 |
Lyra 클론코딩 - (2) Asset Manager (0) | 2024.12.22 |
Lyra 클론코딩 - (1) 모듈 + 커스텀 로그 (0) | 2024.12.22 |
GameplayAbilitySystem을 이용한 RPG 프로젝트 - (21) Attribute에 Clamp를 적용하고 기존의 GE에 Curve Table 적용 (0) | 2024.12.16 |