Legacy/EnumToString Macro

From UE4: Community Wiki
Jump to: navigation, search


This is an outdated, legacy guide. Recent UE4 versions come with static UEnum methods for getting human-friendly names, i.e. UEnum::GetDisplayValueAsText().


Overview

Macro that lets you quickly get an enum value as a FString for use in logging etc.
Caveat - only works with enumerators defined using UENUM() macro.

YourProject.h

#define GETENUMSTRING(etype, evalue) ( (FindObject<UEnum>(ANY_PACKAGE, TEXT(etype), true) != nullptr) ? FindObject<UEnum>(ANY_PACKAGE, TEXT(etype), true)->GetEnumName((int32)evalue) : FString("Invalid - are you sure enum uses UENUM() macro?") )

Usage

YourClass.h

UENUM()
enum class EUsesEnum : uint8
{
    UseEnum_Bad,
    UseEnum_Good,
    UseEnum_Nice,
    UseEnum_Naughty
};

YourClass.cpp

void AYourClass::SomeFunction()
{
    EUsesEnum UseEnumValue = EUsesEnum::UseEnum_Good;
    UE_LOG(LogSomething, Log, TEXT("UseEnumValue as string : %s"), *GETENUMSTRING("EUsesEnum", UseEnumValue));
}

Output:
LogYourCategory: UseEnumValue as string : UseEnum_Good