그냥 게임개발자
언리얼 Enum DisplayName과 String으로 가져오는 방법 본문
Enum 클래스 새성
UENUM()
enum class ECharacterType : uint8
{
Player = 1 UMETA(DisplayName = "Player"),
Monster UMETA(DisplayName = "Monster"),
Npc UMETA(DisplayName = "Npc"),
};
Enum의 바이너리 값을 메타데이터 DisplayName의 값을 가져오는 방법
// 여기서 Enum의 메타데이터의 정보를 가져와서
// 1번, 2번, 3번이 아닌 메타의 DisplayName이라는 문자열을 출력해보자.
// 이것은 좀 복잡하지만 해보자.
// FindObject라는 API를 사용해서 UEnum을 가져온다.
// 언리얼에서 C++클래스는 Script라는 절대경로를 가짐
// /Script/모듈명(프로젝트 명).Enum명에서 UEnum의 클레스를 가져옴
// Outer의 매개변수는 굳이 필요없으니 nullptr
const UEnum* CharacterEnumType = FindObject<UEnum>(nullptr, TEXT("/Script/프로젝트명.ECharacterType"));
if (CharacterEnumType)
{
// CardEnumType이 존재하면
// GetDisplayNameTextByValue라는 함수를 불러 CardType이 uint8이지만 int64만 받기 때문에
// int64로 형변환을 시켜 그거에 FString으로 변환해 출력
FString CardMetData = CharacterEnumType->GetDisplayNameTextByValue((int64)ECharacterType::Monster).ToString();
UE_LOG(LogTemp, Log, TEXT("소유한 카드 종류 %s"), *CardMetData);
}
Enum의 직접 String을 가져오는 방법
// ECardType 변수의 메타데이터 말고 문자열로 나오게 하는 방법
// DisplayName이 아닌 Enum의 직접 String을 가져오는 방법이다.
FString CardStringData = UEnum::GetValueAsString(TEXT("프로젝트명.ECharacterType"), ECharacterType::Player);
if (*CardStringData)
{
UE_LOG(LogTemp, Log, TEXT("소유한 카드 종류 %s"), *CardStringData);
}
'Unreal스터디' 카테고리의 다른 글
컴포지션(Composition)이란? (0) | 2024.01.01 |
---|---|
인터페이스란? (0) | 2024.01.01 |
Assert(어썰트) (0) | 2024.01.01 |
언리얼 오브젝트 처리 (1) | 2024.01.01 |
리플렉션 시스템이란? (0) | 2024.01.01 |