본문 바로가기
게임개발/Unity·C#

[유니티/C#] Enum(열거형) 사용하기

by 은성 (Euni) 2025. 3. 22.

Enum 사용하기

 

Enum이란?

Enum(열거형)이란 Enumeration 의 약자로, 정수형 값에 이름을 부여한 것이다.
Enum을 사용하면 코드의 가독성을 높일 수 있고, 더 나아가 유지보수를 쉽게 할 수 있다.

Enum은 다양한 선택지를 다뤄야 할 때나 상태 관리가 필요할 때 유용하게 사용된다.
예를 들어 우리가 {타이틀 화면, 게임 플레이 중, 일시 정지, 게임 오버} 라는 네 가지 게임 상태를 가질 수 있다고 해보자.
만약 이 값들을 일반적인 string으로 사용한다면 다음과 같을 것이다.

 

string currentState = "";

void Function()
{
    if (currentState == "Title")
    {
    }
    elseif (currentState == "Playing")
    {
    }
    // (...)
}


하지만 이렇게 할 경우 만약 오타가 날 경우 디버깅이 어렵고 (ex. "Title"을 "Tilte" 처럼 입력)
특정 상태를 스크립트 상에서 검색하여 추적할 때 불편함이 있을 수 있다.

이런 상황에서 Enum을 쓰면 상태를 더 이해하기 쉽고 간결하게 정의하면서 동시에 안정성을 높일 수 있다.


Enum 정의하기

Enum은 `enum` 키워드를 통해 정의할 수 있다.
각 항목에 값을 할당해주지 않는다면 기본적으로 0부터 시작하는 정수 값을 가진다.

public enum GameState
{
    Title, // 0
    Playing, // 1
    Paused, // 2
    GameOver // 3
}

 

아래와 같이 각 항목에 원하는 값을 할당해줄 수도 있다.

public enum GameState
{
    Title = 0,
    Playing = 100,
    Paused = 500,
    GameOver = 900
}

 

Enum 사용하기

enum을 정의했다면, 정의한 Enum 값을 타입으로 지정하여 변수를 선언하고 값을 할당해줄 수 있다.

public GameState currentState;

void Start()
{
    currentState = GameState.Title; // 초기 상태를 Title로 설정
}

void Function()
{
    if (currentState == GameState.Title)
    {
    }
    // (...)
}

void SwitchFunction() // switch문과 함께 사용하면 유용하다.
{
    switch (currentState)
    {
    	case GameState.Title:
    	    break;
        case GameState.Playing:
            break;
        // (...)
        default:
            break;
    }
}

 


다음과 같이 string 값을 입력하여 이에 해당하는 enum 값을 받아올 수도 있다.
(Enum 시스템을 사용하려면 `using System` 이 필요하니 참고하자.)

using System;

void SetGameState(string stateName)
{
    currentState = (GameState)Enum.Parse(typeof(GameState), stateName);
}

 

 

Unity에서 Enum 사용하기

Inspector에서 Enum 지정하기


`public GameState currentState;` 와 같이 지정했다면,
Unity에서는 사진처럼 인스펙터 상에서 Enum의 값들을 드롭다운 형식으로 선택할 수 있다.