[Unity] System.Enum 활용

식혜드식혜·2025년 5월 11일

Unity

목록 보기
4/6

정식 정의

namespace System
{
    public abstract class Enum : ValueType
}

즉, 모든 enum 타입의 부모 클래스이다.
C#에서 열거형(enum)을 만들면 자동으로 System.Enum을 상속받는다.

예시

public enum ItemCategory
{
    Kitchen,
    Interior,
    Exterior
}

→ 이 타입은 내부적으로 System.Enum을 기반으로 만들어진 값 형식이다.
즉,

ItemCategory myCategory = ItemCategory.Kitchen;

System.Enum e = myCategory; 

요약

개념설명
System.Enum모든 enum 타입의 부모 타입 (abstract class)
역할enum을 일반화된 방식으로 다루기 위해 사용
쓰임새다양한 enum을 하나의 타입으로 받아서 다형적으로 사용하고 싶을 때

사용 예시(SubCategory)

이 줄은 추상 클래스에서:

public virtual System.Enum SubCategory => null;

이건 "이 아이템이 속한 하위 카테고리를 리턴하게 하고 싶다, 그런데 그 하위 카테고리는 아이템마다 enum이 다를 수도 있으니까, 그냥 Enum 타입으로 뭉뚱그리자"는 전략이다.

예시 시나리오

public enum KitchenSubCategory { Stove, Sink, Refrigerator }
public enum InteriorSubCategory { Table, Chair, Lamp }

public class KitchenItemData : ItemData
{
    public KitchenSubCategory subCategory;
    public override ItemCategory Category => ItemCategory.Kitchen;
    public override System.Enum SubCategory => subCategory;
}

public class InteriorItemData : ItemData
{
    public InteriorSubCategory subCategory;
    public override ItemCategory Category => ItemCategory.Interior;
    public override System.Enum SubCategory => subCategory;
}

이러면 서브카테고리 enum 타입이 다 다르지만,
부모 클래스에서는 공통적으로 Enum 타입으로 처리할 수 있다!

주의할 점

  • System.Enum은 abstract class라서 직접 인스턴스를 만들 수 없다
    따라서 실제 값은 반드시 enum 형식 중 하나여야 한다.
profile
안녕하세요! 유니티 공부 중인 고3 학생입니다

0개의 댓글