[UE5] Enum

vector·2025년 5월 7일

1. 기본 C++ enum 선언

  • 일반적인 C++ enum이므로 Unreal 리플렉션 시스템이나 Blueprint에서는 사용이 불가능
// 간단한 enum 정의
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);
      }
profile
게임 클라이언트 프로그래머 준비중 (공부 및 기록용)

0개의 댓글