728x90
728x90
언리얼 엔진 5에서 FGameplayTag를 사용할 때, "Character.Status.Dead"와 같은 태그 문자열에서 "Dead"라는 **세그먼트(단어)**가 포함되어 있는지를 확인하고 싶은 경우가 종종 있습니다.
이번 포스팅에서는 Unreal Engine 5에서 FGameplayTag의 내장 함수만을 활용한 방법과, 안전한 문자열 기반 방법까지 두 가지를 소개해드립니다.
✅ 목표
예를 들어, FGameplayTag 값이 다음과 같다고 가정합니다.
Character.Status.Dead
이때 "Dead"라는 단어가 이 태그에 포함되어 있는지를 확인하고 싶은 상황입니다.
✅ 방법 1. MatchesTag() 함수 사용 (전제 조건 있음)
FGameplayTag는 자체적으로 계층 구조 기반 비교를 지원합니다.
MatchesTag() 함수를 이용하면, 자식 태그가 부모 태그를 포함하는지를 확인할 수 있습니다.
📌 코드 예시
FGameplayTag FullTag = FGameplayTag::RequestGameplayTag(FName("Character.Status.Dead"));
FGameplayTag WordTag = FGameplayTag::RequestGameplayTag(FName("Dead")); // 확인할 단어
bool bContainsWord = FullTag.MatchesTag(WordTag);
✅ 장점
- FGameplayTag의 내장 함수만 사용함
- 성능이 뛰어남
⚠️ 단점
- "Dead"라는 단어가 등록된 GameplayTag여야 함 (DefaultGameplayTags.ini 또는 에디터에서 추가 필요)
✅ 방법 2. 문자열로 분리하여 직접 단어 확인 (보다 유연한 방법)
태그 내부 구조를 문자열로 바꿔서 "." 기준으로 나눈 후, 각 세그먼트(단어)를 직접 비교하는 방식입니다.
📌 코드 예시
bool DoesTagContainWord(const FGameplayTag& Tag, const FString& Word)
{
TArray<FString> Segments;
Tag.ToString().ParseIntoArray(Segments, TEXT("."));
for (const FString& Segment : Segments)
{
if (Segment.Equals(Word, ESearchCase::IgnoreCase))
{
return true;
}
}
return false;
}
✅ 사용 예시
FGameplayTag Tag = FGameplayTag::RequestGameplayTag(FName("Character.Status.Dead"));
if (DoesTagContainWord(Tag, TEXT("Dead")))
{
UE_LOG(LogTemp, Log, TEXT("태그에 'Dead'가 포함되어 있습니다."));
}
✅ 장점
- "Dead"가 등록된 태그가 아니어도 사용 가능
- 유연하고 실용적
⚠️ 단점
- 문자열 변환이 필요하므로 약간의 성능 손실이 있을 수 있음
✅ 최종 정리
방법
|
장점
|
단점
|
MatchesTag()
|
빠르고, 멤버 함수만 사용
|
단어가 등록된 태그여야 함
|
ToString() + 문자열 비교
|
등록 여부 상관없이 비교 가능
|
문자열 처리 필요
|
✍️ 마무리
FGameplayTag를 사용할 때, 단순한 태그 포함 여부만 확인할 게 아니라 세그먼트 단위의 확인이 필요할 경우도 많습니다. 위 방법 중 상황에 맞게 선택하시면 됩니다.
728x90
반응형
'프로그래밍' 카테고리의 다른 글
언리얼 엔진 5: Sweep과 Trace 완전 정복 – 차이점, 성능, 실전 예제까지! (0) | 2025.05.26 |
---|---|
C++ 개발 생산성 극대화! 기본값을 지원하는 Getter/Setter 자동 생성 매크로 (수정 및 개선) (0) | 2025.05.22 |
🎮 [Unreal Engine 5] 액터의 상대 위치를 월드 위치로 변환하는 방법 (0) | 2025.05.13 |
🎮 언리얼 엔진5에서 특정 클래스의 액터 찾기 (C++ ) (1) | 2025.05.09 |
🎮 [언리얼 엔진 5] UWorldSubsystem에서 파라미터 복제(Replicate) 구현 방법! (0) | 2025.05.08 |