Using function from [this guide][1] to convert enum values to strings:
template<typename TEnum>
FString GetEnumValueAsString(const FString& Name, TEnum Value)
{
const UEnum* enumPtr = FindObject<UEnum>(ANY_PACKAGE, *Name, true);
if (!enumPtr)
{
return FString("Invalid");
}
return enumPtr->GetEnumName((int32)Value);
}
The enum is:
UENUM(BlueprintType)
enum class ETestEnum : uint8
{
Unknown UMETA(Hidden),
Value1 UMETA(DisplayName = "Value1"),
Value2 UMETA(DisplayName = "Value2"),
Value3 = 20 UMETA(DisplayName = "Value3"),
Value4 UMETA(DisplayName = "Value4"),
MAX UMETA(Hidden),
};
Using following to output on the screen:
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, FString::Printf(TEXT("[%s] [%s] [%s] [%s] [%s]")
, *GetEnumValueAsString<ETestEnum>("ETestEnum", ETestEnum::Unknown)
, *GetEnumValueAsString<ETestEnum>("ETestEnum", ETestEnum::Value1)
, *GetEnumValueAsString<ETestEnum>("ETestEnum", ETestEnum::Value2)
, *GetEnumValueAsString<ETestEnum>("ETestEnum", ETestEnum::Value3)
, *GetEnumValueAsString<ETestEnum>("ETestEnum", ETestEnum::Value4)
));
The result is:
Is this known issue or am I doing something wrong?