What would I enter for "TCHAR * EnumPath"

In many cases this path fits with the following template – “ClassName.EMyEnumType”. But in some cases it doesn’t work. For example:

UEnum::GetValueAsString(TEXT("MyGameMode.EModeExampleEnum"), EGameModeExampleEnum::FIRST)); //it works
    
UEnum::GetValueAsString(TEXT("MyPlayerController.EControllerExampleEnum"), EControllerExampleEnum::FIRST)); //it works
    
UEnum::GetValueAsString(TEXT("MyCharacter.ECharacterExampleEnum"), ECharacterExampleEnum::FIRST)); //it crashes

If you look inside the GetValueAsString method, you will see how it works:

UEnum* EnumClass = FindObject<UEnum>(nullptr, EnumPath);
UE_CLOG(!EnumClass, LogClass, Fatal, TEXT("Couldn't find enum '%s'"), EnumPath);
return EnumClass->GetEnumText(Value);

This way to find enum pointer isn’t good for any case. So the best way to find pointer and get enum value as string is:

const UEnum* EnumPtr = FindObject<UEnum>(ANY_PACKAGE, TEXT("ECharacterExampleEnum"), true);
    
if (EnumPtr)
{
	auto EnumName = EnumPtr->GetEnumName((int32)ECharacterExampleEnum::FIRST);
}

:wink:

Andrew