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 사용하기
`public GameState currentState;` 와 같이 지정했다면,
Unity에서는 사진처럼 인스펙터 상에서 Enum의 값들을 드롭다운 형식으로 선택할 수 있다.
'게임개발 > Unity·C#' 카테고리의 다른 글
[유니티/C#] 씬(Scene) 이동하기 (0) | 2025.03.24 |
---|---|
[유니티/C#] 이벤트(event) 사용하기 (0) | 2025.03.23 |
[C#] 포맷 텍스트(Format Text) 소개 (string.Format, ToString, $ 문자열 보간법) (0) | 2025.02.15 |
[유니티/C#] Scriptable Object(스크립터블 오브젝트) 활용하기 (0) | 2025.01.26 |
[유니티/C#] 간단한 조건문 축약해서 작성하기: 삼항 연산자(Conditional Operator) (1) | 2024.12.04 |