<aside> <img src="/icons/info-alternate_blue.svg" alt="/icons/info-alternate_blue.svg" width="40px" />

리플렉션 시스템이란?

리플렉션 시스템은 언리얼 에디터에서 실행 중에 클래스의 구조와 로직을 수정할 수 있게 해주는 편리 기능이다.

Unreal Class 내부 구조


#include "Item.generated.h"

UCLASS()

GENERATED_BODY()

UCLASS() 매크로



**UCLASS(Blueprintable, BlueprintType)**

UCLASS() 매크로를 통해 클래스는 리플렉션 시스템에 등록되며 지정자을 설정할 수 있다.

지정자가 없을 경우

UCLASS()에 별도의 옵션을 지정하지 않더라도, 블루프린트에서 상속이 가능하고 변수로 참조가 가능한 형태로 등록된다. 이는 내부적으로 Blueprintable, BlueprintType과 동일한 효과를 가진다.

주요 옵션

지정자 설명
Blueprintable 블루프린트에서상속가능한 클래스로 만든다.
NotBlueprintable 블루프린트에서 이 클래스를상속할 수 없게 한다.
BlueprintType 블루프린트에서변수나 참조로 사용할 수 있게 한다.
이 옵션만 있으면, 상속은 허용되지 않고 참조만 가능하다.

UPROPERTY() 매크로


image.png

**UFUNCTION(BlueprintImplementableEvent, Category = "Itme | Properties")**

UPROPERTY() 매크로는 여러 지정자를 통하여 에디터에서의 표시 여부, Blueprint 접근성, 읽기/쓰기 권한 등을 설정할 수 있다. 아래는 주요 지정자들이다.

편집 가능 범위 지정자

지정자 설명
VisibleAnywhere 읽기 전용으로 표시되며, 수정이 불가능하다.
EditAnywhere 클래스 기본값, 인스턴스 모두에서 수정이 가능하다.
EditDefaultsOnly 클래스 기본값에서만 수정이 가능하다.
EditInstanceOnly 인스턴스에서만 수정이 가능하다.

Blueprint 접근성 지정자

지정자 설명
BlueprintReadWrite Blueprint 그래프에서Getter/Setter로 값을 읽고 쓸 수 있다.
BlueprintReadOnly Blueprint 그래프에서Getter핀만 노출되어 읽기만 가능하다.

Category 지정자

메타 옵션 지정자

지정자 설명
meta=(ClampMin="0.0") 에디터에서 변수 입력 시최소값을 제한한다.
meta=(AllowPrivateAccess="true") 해당 멤버가private로 선언되어 있어도 에디터나 Blueprint에서 접근이 가능하다.

UPROPERTY()만 있고 추가 지정자가 없는 경우