C++ / UENUM 사용자정의 열거형 만들기
작성 기준 버전 :: 4.21.1
C++ enum class 문서에서 확인할 수 있듯이, 열거형은 정수형 상수를 사람이 알아보기 쉽게 만들어준다. 이러한 열거형도 언리얼 구조체에서의 문제와 같이 표준 열거형은 코드 내부에서만 사용이 가능하고, 언리얼 에디터의 디테일 패널이나, 블루프린트에서 사용이 불가능하다는 문제가 있다.
이 열거형 역시 언리얼 구조체와 마찬가지로 언리얼 에디터에서 사용하고자 한다면 언리얼 열거형으로 만들어야만 한다.
언리얼 열거형 만들기
언리얼 전용의 열거형을 만드는 방법은 다음과 같다. 예시 코드와 같이 새로 만드는 열거형 앞에 UENUM() 매크로를 붙여주면 언리얼 에디터에서도 사용 가능한 언리얼 열거형이 만들어진다.
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "EnumTestActor.generated.h"
UENUM(BlueprintType)
enum class ETestEnum : uint8
{
TE_OptionA UMETA(DisplayName = "Option A"),
TE_OptionB UMETA(DisplayName = "Option B"),
};
UCLASS()
class ENUMTEST_API AEnumTestActor : public AActor
{
GENERATED_BODY()
public:
// Sets default values for this actor's properties
AEnumTestActor();
protected:
// Called when the game starts or when spawned
virtual void BeginPlay() override;
public:
// Called every frame
virtual void Tick(float DeltaTime) override;
UPROPERTY(EditAnywhere)
ETestEnum TestEnum;
};
단, 여기서 주의해야할 점이 있는데, 언리얼 열거형을 만들때 반드시 일반적인 enum이 아닌 enum class로 만들어야 한다는 점이다. 만약 enum class로 만들지 않고 일반적인 enum으로 만들어서 UENUM() 매크로를 붙이고 컴파일을 하면 에러가 발생해서 컴파일에 실패한다. 그리고 UENUM은 uint8만을 지원하기 때문에 이 부분도 빠뜨리지 않고 넣어주어야 한다.
코드를 작성하고 컴파일한 후 레벨에 EnumTestActor를 배치하고 디테일 패널을 살펴보면 추가한 열거형이 보이는 것을 확인할 수 있다.
UENUM을 "BlueprintType"으로 선언하면 블루프린트에서도 사용할 수 있게 된다.
만약 새롭게 정의한 UENUM이 한 클래스에서 사용되는 것이 아니라 다른 코드 전반에서 사용되기를 원한다면, 언리얼 구조체 문서에서 설명한 것과 같이 열거형을 정의하기 위한 빈 클래스를 하나 추가해서 그 헤더에 UENUM을 선언하고 사용하고자 하는 곳에 그 헤더를 포함시키는 방법을 쓸 수 있다.
[투네이션]
[Patreon]
[디스코드 채널]
'Unreal Engine4 > Programming' 카테고리의 다른 글
[UE4] Programming - 데이터 테이블(Data Table) (3) | 2018.12.30 |
---|---|
[UE4] Levels - 다른 레벨로 이동하기 (0) | 2018.12.28 |
[UE4] Programming - 캐스팅(Casting) (2) | 2018.12.21 |
[UE4] Programming - RPG :: 캐릭터를 가리는 벽 투명하게 만들기 (0) | 2018.12.20 |
[UE4] Programming - RPG :: 마우스 입력 이동 구현하기 (1) | 2018.12.15 |