엔진이 알아야 할 선언에 표식을 붙인다
UCLASS()
class AItem : public AActor
{
GENERATED_BODY()
};
매크로는 문법 장식이 아니라 Header에서 생성 코드, 엔진 타입 정보, 에디터 노출까지 이어지는 계약의 시작점이다.
UCLASS()
class AItem : public AActor
{
GENERATED_BODY()
};
표준 C++ 컴파일러가 보기 전에 Unreal Header Tool이 매크로 주변의 메타데이터를 만든다.
AItem.generated.h StaticClass() Property table
타입, 속성, 함수 테이블이 런타임에서 조회 가능한 형태로 묶인다.
Details, 저장/로드, Blueprint, GC가 하나의 리플렉션 데이터에 기대어 동작한다.
상속 구조, 생성 가능 여부, 블루프린트 파생 가능성 같은 클래스 단위 정보를 등록한다.
UCLASS(Blueprintable)
편집 가능 범위, 저장 여부, GC 참조 추적, 블루프린트 접근을 한 자리에서 정한다.
UPROPERTY(EditAnywhere) float Health;
BlueprintCallable, 이벤트, 네트워크 RPC 같은 호출 규칙이 메타데이터가 된다.
UFUNCTION(BlueprintCallable) void TakeDamage();
에디터 패널은 FProperty 정보를 읽어 카테고리와 입력 UI를 만든다.
함수와 변수가 노드, 핀, 이벤트로 보이는 기준이 된다.
레벨과 에셋이 어떤 값을 기록해야 하는지 판단할 수 있다.
UObject 포인터가 살아 있어야 하는지 수집 가능한지 추적한다.
UHT가 만든 선언이 기존 타입 선언 뒤에 붙어야 한다.
엔진이 주입하는 기본 연결 코드가 클래스 내부에 들어가는 자리다.
편집, 저장, 호출, 네트워크 중 실제로 필요한 경로만 열어 둔다.