
엔진 소스 코드를 꼼꼼히 살펴보았다면, 제공된 UML 다이어그램이 타입 시스템의 구조를 이해하는 데 도움이 될 것입니다.

요약하자면, 언리얼 엔진의 리플렉션 시스템은 "생성(Generation)", "수집(Collection)", "등록(Registration)"의 세 단계로 나눌 수 있습니다. 코드 생성 단계에서는 Unreal Build Tool이 미리 정의된 매크로를 파싱하여 네이티브 타입을 리플렉션할 수 있도록 합니다. 이 과정에서 타입이 토큰화되고, 타입 정보와 런타임 생성 함수 포인터, UObject 메모리 할당 연산자 등이 정의된 .gen 파일(cpp 및 헤더)이 생성됩니다.
수집 단계에서는 엔진 모듈의 동적 라이브러리 링크를 통해 타입 정보가 전역 지연 싱글톤 레지스트리에 정적으로 모입니다. 모듈식 설계 덕분에 각 모듈이 자체적으로 리플렉션 정보를 포함하고, 순차적으로 링크 및 처리될 수 있습니다.
에디터 모드에서는 엔진 시작과 함께 Core 모듈이 가장 먼저 로드되며, 이 과정에서 UClass, UStruct, UEnum, UInterface 등 핵심 타입이 준비되어 이후 로드되는 타입을 처리할 수 있게 됩니다. 등록 단계가 끝나면 Bind linking을 통해 구조가 정리 및 최적화되어 성능과 편의성이 향상됩니다.
이해해야 할 핵심 개념은 UClass*가 다양한 요소를 연결하는 주요 교차점 역할을 하며, UObject는 언리얼 엔진 내 모든 동작의 저수준 표현이라는 점입니다. 이 관계에 대한 깊은 이해는 가비지 컬렉션(Garbage Collection) 과정의 근간과 UObjects의 올바른 할당 및 소멸로 이어집니다. 이러한 이해는 직렬화, 액터 및 컴포넌트 아키텍처, 게임플레이 시스템, 네트워킹 등 다양한 영역에 영향을 미칩니다. UClass의 생명주기를 강조하면 다음과 같습니다: