Enums For Both C++ and BP
This wiki article was written by Rama.
Last updated
Was this helpful?
Was this helpful?
UENUM(BlueprintType)
enum class EVictory : uint8 {
VE_Dance UMETA(DisplayName="Dance"),
VE_Rain UMETA(DisplayName="Rain"),
VE_Song UMETA(DisplayName="Song"),
};UCLASS()
class YourClass : public YourSuperClass {
GENERATED_BODY()
public:
UPROPERTY(EditAnywhere, BlueprintReadWrite)
EVictory VictoryEnum;
};if (EVictory == EVictory::VE_Dance) {
EVictory = EVictory::VE_Song;
} else {
EVictory = EVictory::VE_Rain;
};FString GetVictoryEnumAsString(EVictory::Type EnumValue) {
const UEnum* EnumPtr = FindObject<UEnum>(ANY_PACKAGE, TEXT("EVictoryEnum"), true);
if (!EnumPtr) return FString("Invalid");
return EnumPtr->GetNameByValue((int64)EnumValue); // for EnumValue == VE_Dance returns "VE_Dance"
}
}// Example usage GetEnumValueAsString<EVictoryEnum>("EVictoryEnum", VictoryEnum)));
template<typename TEnum>
static FORCEINLINE FString GetEnumValueAsString(const FString& Name, TEnum Value) {
const UEnum* enumPtr = FindObject<UEnum>(ANY_PACKAGE, *Name, true);
if (!enumPtr) return FString("Invalid");
return enumPtr->GetNameByValue((int64)Value).ToString();
} return enumPtr->GetNameByValue((int64)Value).ToString();FString EnumString = EnumToString(EVictoryEnum, EVictoryEnum::VE_Dance);template <typename EnumType>
static FORCEINLINE EnumType GetEnumValueFromString(const FString& EnumName, const FString& String) {
UEnum* Enum = FindObject<UEnum>(ANY_PACKAGE, *EnumName, true);
if(!Enum) {
return EnumType(0);
}
return (EnumType)Enum->FindEnumIndex(FName(*String));
}
//Sample Usage FString ParseLine = GetEnumValueAsString<EChallenge>("EChallenge", VictoryEnumValue))); //To String EChallenge Challenge = GetEnumValueFromString<EChallenge>("EChallenge", ParseLine); //Back From String!