Unreal C++ Reflection

언리얼 C++ 노출 권한

언리얼 리플렉션 매크로는 C++ 타입을 에디터, 직렬화, GC, Blueprint에 노출하면서 읽기·쓰기 권한과 수명 관리 규칙을 함께 정한다.

01

클래스 노출

UCLASS specifier로 Blueprint 생성 가능 여부와 에디터 표시 범위를 정한다.

type exposure
02

프로퍼티 권한

EditDefaultsOnly, EditInstanceOnly, BlueprintReadOnly/Write로 수정 위치를 제한한다.

편집 범위
03

함수 호출

BlueprintCallable, BlueprintPure, RPC specifier가 호출 위치와 네트워크 의미를 바꾼다.

호출 경계
04

GC 연결

UObject 참조는 UPROPERTY로 추적되어야 GC와 serialization이 안전하게 작동한다.

lifetime
ReadOnly
Blueprint에서 읽기만 허용하면 디자이너가 상태를 확인하되 임의 변경은 막는다. 런타임 불변값이나 내부 상태에 적합하다.
safe expose
EditDefaults
클래스 기본값만 바꾸게 하면 instance별 편차를 줄일 수 있다. 데이터 asset과 default object 설정에 어울린다.
default tuning
RPC
Server, Client, NetMulticast는 호출 방향과 권한을 강하게 제한한다. 검증 없는 BlueprintCallable RPC는 치트와 동기화 버그를 만들 수 있다.
network authority

리플렉션 노출 점검

최소 권한 BlueprintReadWrite가 정말 필요한 값에만 쓰인다.
GC 안전 UObject 참조가 raw pointer로 숨겨져 수집 대상에서 빠지지 않는다.
카테고리 에디터 노출 값은 Category와 meta로 찾기 쉽게 정리된다.

권한 예시

UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Combat")
float MaxHealth = 100.0f;

UFUNCTION(BlueprintCallable, Category="Combat")
void ApplyDamage(float Amount);