1. 기본 C++ enum 선언
- 일반적인 C++ enum이므로 Unreal 리플렉션 시스템이나 Blueprint에서는 사용이 불가능
enum EGameState
{
EGameState_Menu,
EGameState_Playing,
EGameState_GameOver
};
2. UENUM을 이용한 Unreal 스타일 enum 선언
UENUM(BlueprintType) : 해당 enum을 Blueprint에서도 사용할 수 있도록 허용
enum class : 사용 시 이름 충돌을 피할 수 있고, 타입 안정성이 높아짐
UMETA(DisplayName = "...") : Blueprint에서 표시되는 이름을 지정
uint8을 기반 타입으로 사용하는 것이 권좡되며, 메모리 최적화에 유리
UENUM(BlueprintType)
enum class EGameState : uint8
{
Menu UMETA(DisplayName = "Main Menu"),
Playing UMETA(DisplayName = "In Game"),
GameOver UMETA(DisplayName = "Game Over")
};
3. Enum을 String, FName으로 변환
- Enum -> FString
- FString으로 변환하는 함수 만들기
FString UPOE_WeaponComponent::GetEStateAsString(EWeapon EnumValue)
{
const UEnum* enumPtr = FindObject<UEnum>(ANY_PACKAGE, TEXT("EWeapon"), true);
if (!enumPtr)
{
return FString("Invalid");
}
return enumPtr->GetNameStringByIndex((int32)EnumValue);
}