728x90
반응형
문제점
- Enum을 String으로 바꿀 때마다 새로 함수를 작성하고 새로운 enum을 파라미터로 생성해야 하기 때문에 쓸 때마다 코드가 늘어난다.
해결
- static template function을 만들어서 헤더만 추가하면 쓸 수 있도록 한다.
추가
- typeid.name()을 하면 'enum EnumValue'으로 만들어지기 때문에 RemoveFromStart()를 이용하여 'enum '을 잘라준다.
- enum은 BlueprintType 이여야 한다.
코드
template<typename T>
static FString GetEnumDisplayNameToString(T EnumValue)
{
FString EnumString = FString::Printf(TEXT("%hs"),typeid(T).name());
EnumString.RemoveFromStart(TEXT("enum "));
const TCHAR* Name = *EnumString;
const UEnum* EnumPtr = FindObject<UEnum>(ANY_PACKAGE,Name,true);
if (EnumPtr == nullptr)
{
return FString("Invalid");
}
return EnumPtr->GetDisplayNameTextByIndex(static_cast<int32>(EnumValue)).ToString();
}
사용법
const FString EnumString = *GetEnumDisplayNameToString(Enum);
728x90
반응형
'언리얼 엔진 > C++' 카테고리의 다른 글
언리얼엔진 C++ 에디터 뷰포트에서 월드에 있는 액터 Focus (0) | 2022.12.05 |
---|---|
언리얼엔진 C++ Thread 만들기 (FRunnable) (0) | 2022.12.05 |
언리얼엔진 C++ BehaviorTree Tip (노드 설명 추가) (0) | 2022.07.04 |
언리얼엔진 C++ 클래스에 사용자 지정 섹션 만들기 (0) | 2022.06.07 |
언리얼엔진 C++ MovementYawOffset (0) | 2022.06.06 |