열거형의 개념
- 열거형(Enum)은 관련된 상수 집합을 한 곳에 묶어 관리하는 데이터 타입입니다.
- 게임 개발에서 주로 캐릭터의 상태(Idle, Moving, Attack)나 방향(Direction), 요일(Days of the Week) 등을 표현하는 데 사용됩니다.
왜 열거형을 사용하는가?
- 가독성 향상:
- 정수 값을 사용하는 대신, 의미를 명확히 하기 위해 문자형 이름을 사용.
- 예:
Idle
, Moving
vs. 0
, 1
.
- 코드 유지보수:
- 상수값이 많아져도 열거형으로 관리하면 하드코딩을 방지.
- 관련 상수들을 하나의 열거형으로 묶어 관리하기 쉽습니다.
- 타입 안정성:
- 특정 열거형 값만 사용하도록 강제해 실수를 방지.
Enum 파일 생성 및 설정
-
파일 생성:
- 콘텐츠 브라우저에서 우클릭 -> Blueprints -> Enumeration.
- 파일 이름 규칙: 보통 대문자 E를 접두사로 사용 (예:
EState
).
-
상태 값 설정:
- 생성한 Enum 파일을 더블 클릭하여 상태값을 추가.
- 상태값 예시:
Idle
: 0 (대기 상태)
Moving
: 1 (이동 상태)
Attack
: 2 (공격 상태)
-
저장 및 컴파일:
- 설정 후 저장 -> 블루프린트로 돌아와 열거형을 변수로 추가.
열거형 사용 방법
1. 열거형 변수 생성
- 블루프린트에서 새 변수 생성 -> 변수 타입으로 Enum 선택 (예:
EState
).
- 열거형 값을 기본값으로 설정 가능.
2. 열거형 값 비교
- 열거형 값 간 비교는 Equal(Enum) 또는 Not Equal(Enum) 노드를 사용.
- 대소 비교는 불가능.
- 내부적으로 열거형은 정수값으로 처리됨.
3. Enum to String
- 열거형 값을 문자열로 변환하여 디버깅이나 UI 출력에 사용.
- 노드: Enum to String -> 출력된 문자열 값을 Print String에 연결.
4. Switch on Enum
- 열거형 값에 따라 다른 실행 흐름을 가지는 로직 구현.
- 노드: Switch on [Enum 이름].
- 예:
EState
의 값이 Idle
, Moving
, Attack
에 따라 각각 다른 로직 실행.
열거형의 내부 동작
- 열거형은 결국 정수값을 가지는 구조입니다.
Idle
-> 0
Moving
-> 1
Attack
-> 2
- 이러한 정수값이 추상화되어 가독성과 유지보수성을 높이는 방식으로 제공.
실습 예제
1. Enum 값을 기반으로 상태 출력
블루프린트:
- Event BeginPlay:
- Enum to String:
- 열거형 값을 문자열로 변환.
- 결과를
Print String
노드로 출력.
결과:
2. Switch on Enum 활용
블루프린트:
- 열거형 상태:
Idle
, Moving
, Attack
.
- Switch on EState:
Idle
: 캐릭터 대기 애니메이션 실행.
Moving
: 캐릭터 이동 애니메이션 실행.
Attack
: 공격 애니메이션 실행.
Enum의 장점 요약
- 의미 명확화:
- 숫자로 표현된 상태를 사람이 읽을 수 있는 이름으로 대체.
- 코드 안전성:
- 하드코딩 방지:
- 코드 내에서 상수값을 직접 사용하는 일이 줄어듦.
블루프린트에서 Enum의 활용
- State 관리:
- 게임 캐릭터의 상태를 열거형으로 관리.
- 코드 가독성과 유지보수성이 높아짐.
- UI와의 연동:
- Enum 값을 문자열로 변환하여 UI에 표시.
- 상태 전환:
Switch on Enum
을 통해 상태에 따른 실행 흐름 제어.