
언리얼5-24 C++ <커스텀 구조체>을 봤다면 언리얼 엔진에서 구조체를 엔진과 스크립트 양 쪽 모두에서 사용하기 위해서는 일반 구조체가 아닌 언리얼 구조체를 만들어야 한다는 것을 기억할 것이다
이 열거형도 언리얼 구조체와 마찬가지로 표준 enum으로 열거형을 만들면 코드 내부에서만 사용이 가능하고 언리얼 에디터의 디테일 패널이나 블루프린트에서 사용이 불가능한 문제가 존재한다
한마디로 열거형을 언리얼 에디터에서 사용하려고 한다면 언리얼 구조체와 마찬가지로 언리얼 열거형으로 만들어야 한다
C++ 타입과 StarterContent를 체크 해제한 채로 프로젝트를 생성한다
[Tools > New C++ Class..]로 Actor 클래스를 상속받아서 EnumTestActor를 생성한다
클래스 생성이 완료되면 EnumTestActor의 헤더 파일로 이동한다
언리얼 열거형을 만드는 순서로는 먼저 enum class로 열거형을 선언해 준다
언리얼 열거형을 만들 때는 표준 열거형이 아닌 enum class 열거형으로 만들어야 한다
그렇지 않고 표준 열거형으로 언리얼 열거형을 만들면 컴파일 에러가 발생해서 컴파일에 실패하게 된다
그리고 열거형 선언 앞에 UENUM 매크로를 붙이고 블루프린트에서 사용하기 위해서 BlueprintType 지정자를 넣어준다
UENUM은 uint8 타입만을 지원하므로 열거형의 타입을 uint8로 지정해 준다
그다음에는 열거형 안에 필요한 열거자들의 이름을 추가해 주면 된다
이때 이 열거자가 언리얼 에디터에서 보여줄 이름을 UMETA 매크로의 DisplayName 프로퍼티에 넣어주면 된다
(UMETA: 해당 열거형 멤버의 표시 이름을 정의하는 데 사용된다)
대강 열거형을 완성하고 나면 아래의 EnumTestActor 클래스에 테스트용 열거형 변수를 추가한다
이제 테스트를 위해 코드를 모두 저장하고 에디터로 돌아가서 컴파일한다
컴파일이 완료된 이후에 레벨에 EnumTestActor를 배치하고 디테일 패널을 살펴보면 추가한 열거형이 프로퍼티로 보이는 것을 확인할 수 있다
그리고 이렇게 만든 언리얼 열거형은 BlueprintType으로 지정해 줬기 때문에 블루프린트에서도 사용할 수 있다
Actor Class에 우클릭하고 Class기반 블루프린트를 생성하고 나서
이벤트 그래프의 빈 영역에 우클릭하고 스크립트에서 만든 열거형의 이름을 검색하면 관련된 노드를 검색해서 사용할 수 있다
만약 새롭게 정의한 UENUM이 한 클래스 안에서만 사용되는 것이 아니라 다른 코드 전반에서도 사용되기를 원한다면,
언리얼5-24 C++ <커스텀 구조체> 에서 설명한 것과 같이 열거형을 정의하기 위한 빈 클래스를 하나 추가해서 그 헤더에 UENUM을 몰아서 선언하고 열거형들을 사용하고자 하는 헤더에 include 시키는 방법을 사용할 수 있다
VR게임 개발을 위한 언리얼엔진/C++ 공부한 내용 끄적이기...
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!