열거형의 개념

  • 열거형(Enum)은 관련된 상수 집합을 한 곳에 묶어 관리하는 데이터 타입입니다.
  • 게임 개발에서 주로 캐릭터의 상태(Idle, Moving, Attack)나 방향(Direction), 요일(Days of the Week) 등을 표현하는 데 사용됩니다.

왜 열거형을 사용하는가?

  1. 가독성 향상:
    • 정수 값을 사용하는 대신, 의미를 명확히 하기 위해 문자형 이름을 사용.
    • 예: Idle, Moving vs. 0, 1.
  2. 코드 유지보수:
    • 상수값이 많아져도 열거형으로 관리하면 하드코딩을 방지.
    • 관련 상수들을 하나의 열거형으로 묶어 관리하기 쉽습니다.
  3. 타입 안정성:
    • 특정 열거형 값만 사용하도록 강제해 실수를 방지.

Enum 파일 생성 및 설정

  1. 파일 생성:

    • 콘텐츠 브라우저에서 우클릭 -> Blueprints -> Enumeration.
    • 파일 이름 규칙: 보통 대문자 E를 접두사로 사용 (예: EState).
  2. 상태 값 설정:

    • 생성한 Enum 파일을 더블 클릭하여 상태값을 추가.
    • 상태값 예시:
      • Idle: 0 (대기 상태)
      • Moving: 1 (이동 상태)
      • Attack: 2 (공격 상태)
  3. 저장 및 컴파일:

    • 설정 후 저장 -> 블루프린트로 돌아와 열거형을 변수로 추가.

열거형 사용 방법

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 값을 기반으로 상태 출력

블루프린트:

  1. Event BeginPlay:
    • 열거형 변수 StateIdle로 설정.
  2. Enum to String:
    • 열거형 값을 문자열로 변환.
    • 결과를 Print String 노드로 출력.

결과:

  • "Idle" 출력.

2. Switch on Enum 활용

블루프린트:

  1. 열거형 상태: Idle, Moving, Attack.
  2. Switch on EState:
    • Idle: 캐릭터 대기 애니메이션 실행.
    • Moving: 캐릭터 이동 애니메이션 실행.
    • Attack: 공격 애니메이션 실행.

Enum의 장점 요약

  1. 의미 명확화:
    • 숫자로 표현된 상태를 사람이 읽을 수 있는 이름으로 대체.
  2. 코드 안전성:
    • 정의된 상태 외의 값 사용 방지.
  3. 하드코딩 방지:
    • 코드 내에서 상수값을 직접 사용하는 일이 줄어듦.

블루프린트에서 Enum의 활용

  1. State 관리:
    • 게임 캐릭터의 상태를 열거형으로 관리.
    • 코드 가독성과 유지보수성이 높아짐.
  2. UI와의 연동:
    • Enum 값을 문자열로 변환하여 UI에 표시.
  3. 상태 전환:
    • Switch on Enum을 통해 상태에 따른 실행 흐름 제어.

profile
李家네_공부방

0개의 댓글