열거형이란?
열거형 형식은 기본 정수 형식의 명명된 상수 집합에 의해 정의된 값 형식입니다.
쉽게 말해 열거형의 값은 정수형이지만 뜻이 있는 이름을 붙여준다 생각하면 됩니다.
열거형 사용법
enum 키워드를 통해 열거형을 생성할 수 있습니다.
아래에서 생성한 PlayerState 타입의 열거형을 보시면 총 6개의 상태가 있습니다.
각 상태들은 사실 0 ~ 5의 값을 가지고 있지만 이해하기 쉽게 상태 이름을 붙여놓은 것입니다.
//열거형 생성
enum PlayerState
{
Idle, // 0
Walk, // 1
Run, // 2
Jump, // 3
Attack = 20, // 이렇게 직접 정수값을 정해줄 수 있음, 뒤의 멤버들도 20부터 증가
Dead // 21
}
열거형은 보통 상태를 제어하거나 몬스터의 타입을 정의해 주는 등의 상황에서 유용하게 쓰입니다.
PlayerState를 직접 생성하고 바꾸고 싶은 타이밍에 직접 상태를 대입해 주면 됩니다.
PlayerState state; //PlayerState 생성
state = PlayerState.Run; //state를 Run 상태로 변경
state = (PlayerState)3; //숫자로도 변경 가능
예제. 플레이어 상태 입력하기
게임을 개발할 때 필수적인 요소인 플레이어의 상태에 따라 제어해주는 코드를 예제로 만들어보겠습니다.
간단한 예제를 위해서 switch문을 통해 작성하였으나 실제 개발 과정에선 인터페이스 등을 이용하여 상속을 통해 상태를 제어하시는게 훨씬 좋습니다.
더보기
더보기
< 열거형 예제 >
//PlayerState 타입 열거형
enum PlayerState
{
Idle, // 0
Walk, // 1
Run, // 2
Jump, // 3
Attack, // 4
Dead // 5
}
static void Main(string[] args)
{
PlayerState state; //PlayerState 타입의 state 변수 선언
Console.Write("상태를 입력해주세요: ");
string input = Console.ReadLine(); //input 변수에 사용자 입력값을 받음
Enum.TryParse(input, true, out state); //입력받은 문자열을 Enum형으로 변환 후 state에 대입
switch(state) //입력값에 따라 case문 출력
{
case PlayerState.Idle:
Console.WriteLine("상태: 서있기");
break;
case PlayerState.Walk:
Console.WriteLine("상태: 걷기");
break;
case PlayerState.Run:
Console.WriteLine("상태: 달리기");
break;
case PlayerState.Jump:
Console.WriteLine("상태: 점프");
break;
case PlayerState.Attack:
Console.WriteLine("상태: 공격");
break;
case PlayerState.Dead:
Console.WriteLine("상태: 사망");
break;
default:
Console.WriteLine("잘못된 입력입니다.");
break;
}
}
먼저 플레이어의 상태 멤버를 정할 PlayerState 타입의 열거형을 만듭니다.
enum PlayerState
{
Idle,
Walk,
Run,
Jump,
Attack,
Dead
}
PlayerState 타입의 변수 state를 선언합니다.
PlayerState state;
string 변수를 선언 후 사용자 입력을 받은 후 Enum 타입으로 캐스팅 하여 위에서 선언한 state 변수에 할당합니다.
Console.Write("상태를 입력해주세요: ");
string input = Console.ReadLine();
Enum.TryParse(input, true, out state); // input 문자열을 Enum형으로 변환 후 state에 할당
// 두 번째 매개변수는 대소문자 구분을 할 것인지에 대한 것
// true => 대소문자 구분 X / false => 대소문자 구분 O
switch문을 이용해 state 변수의 값에 따라 명령을 수행합니다.
switch(state)
{
case PlayerState.Idle:
Console.WriteLine("상태: 서있기");
break;
case PlayerState.Walk:
Console.WriteLine("상태: 걷기");
break;
case PlayerState.Run:
Console.WriteLine("상태: 달리기");
break;
case PlayerState.Jump:
Console.WriteLine("상태: 점프");
break;
case PlayerState.Attack:
Console.WriteLine("상태: 공격");
break;
case PlayerState.Dead:
Console.WriteLine("상태: 사망");
break;
default:
Console.WriteLine("잘못된 입력");
break;
}'개발, IT > C#' 카테고리의 다른 글
| [유니티 / C#] 객체 지향 프로그래밍과 SOLID 원칙 (0) | 2025.09.15 |
|---|---|
| [유니티 / C#] 구조체, 구조체 클래스 차이점 (0) | 2025.09.12 |
| [유니티 / C#] 함수 (0) | 2025.09.12 |
| [유니티 / C#] 배열 (0) | 2025.09.12 |
| [유니티 / C#] 반복문 for, while, foreach (0) | 2025.09.11 |