내일배움캠프-언리얼

[내일배움캠프 - 언리얼] DAY 34 - 클래스와 리플렉션 시스템

이시보 2026. 1. 16. 22:20

리플렉션이란?

C++ 클래스의 변수 및 함수 정보를 엔진 내부의 메타데이터 형태로 저장하고, 이를 에디터나 블루프린트에서 활용할 수 있게 만들어주는 기술이다.

// 클래스의 리플렉션 및 엔진 통합에 필요한 코드가 들어있음
#include "Item.generated.h"

// 해당 클래스를 언리얼 엔진의 리플렉션 시스템에 등록한다는 의미
UCLASS()

// 언리얼의 코드 생성 도구가 사용하는 코드를 삽입하는 역할
GENERATED_BODY()

UCLASS() 옵션

Blueprintable / NotBlueprintable : 블루프린트에서 상속 가능한 클래스 여부

BlueprintType : 블루프린트에서 변수나 참조로 사용할 수 있게 함, 이 옵션만 있으면 상속 불가에 참조만 가능

UPROPERTY()

1. 편집 가능 범위 지정자

- VisibleAnywhere, EditAnywhere, EditDefaultsOnly, EditInstanceOnly

2. BluePrint 접근성 지정자

- BlueprintReadWrite, BlueprintReadOnly

3. Category 지정자

4. 메타 옵션 지정자

- meta=(ClampMin="0.0") : 최솟값 제한, meta=(AllowPrivateAccess="true")

 

만약 지정자를 하나도 주지 않으면 리플렉션 시스템에 등록은 되지만 에디터나 블루프린트에 노출되지 않음

 

UFUNCTION()

1. Blueprint 관련 지정자

- BlueprintCallable, BlueprintPure : Getter 역할만 수행, BlueprintImplementableEvent