<aside> <img src="/icons/info-alternate_blue.svg" alt="/icons/info-alternate_blue.svg" width="40px" />
리플렉션 시스템이란?
리플렉션 시스템은 언리얼 에디터에서 실행 중에 클래스의 구조와 로직을 수정할 수 있게 해주는 편리 기능이다.
#include "Item.generated.h"
#include 구문들보다 나중에 포함되어야 한다. 그렇지 않을 경우 빌드 실패가 발생할 수 있다.
UCLASS()
GENERATED_BODY()
**UCLASS(Blueprintable, BlueprintType)**
UCLASS() 매크로를 통해 클래스는 리플렉션 시스템에 등록되며 지정자을 설정할 수 있다.
지정자가 없을 경우
UCLASS()에 별도의 옵션을 지정하지 않더라도, 블루프린트에서 상속이 가능하고 변수로 참조가 가능한 형태로 등록된다. 이는 내부적으로 Blueprintable, BlueprintType과 동일한 효과를 가진다.
주요 옵션
| 지정자 | 설명 |
|---|---|
Blueprintable |
블루프린트에서상속가능한 클래스로 만든다. |
NotBlueprintable |
블루프린트에서 이 클래스를상속할 수 없게 한다. |
BlueprintType |
블루프린트에서변수나 참조로 사용할 수 있게 한다. |
| 이 옵션만 있으면, 상속은 허용되지 않고 참조만 가능하다. |

**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()만 있고 추가 지정자가 없는 경우