언리얼 엔진에서 Enum 은 다음과 같이 작성하도록 되어있습니다.
UENUM()
enum class EThing : uint8
{
Thing1,
Thing2
}
그러나 코드를 둘러보다 보면 간혹 namespace 를 사용한 enum 을 종종 발견할 수 있습니다.
UENUM()
namespace EThing
{
enum Type
{
Thing1,
Thing2
};
}
처음에는 사용 목적에 따른 차이인 줄 알았는데 namespace 를 쓰는 방식이 구식 방식으로 그 잔재가 남아있는 것이었습니다.
반드시 새로운 방식을 따르도록 합시다.
참고로 EDrawDebugTrace::Type 처럼 구식 Enum 을 블루프린트에 노출하고 싶을 때는 TEnumAsByte<TEnum> 을 사용하면 됩니다.
// 옛 프로퍼티
UPROPERTY()
TEnumAsByte<EThing::Type> MyProperty;
// 새 프로퍼티
UPROPERTY()
EThing MyProperty;