[UE] UHT(Unreal Header Tool)와 CDO(Class Default Object)
0. Unreal Engine 빌드 과정
- 헤더와 Cpp 파일 작성
- UHT가 UCLASS, USTRUCT, UFUNCTION 등 메타태그 분석
- 관련 코드 생성(리플렉션 정보, VTable, Init, CDO 등)
- UBT(Unreal Build Tool) 빌드 및 링크
- 최종 실행파일 + UObject 시스템 활성화
1. UHT(Unreal Header Tool)
UCLASS
, USTRUCT
, UFUNCTION
, UPROPERTY
등 Unreal의 메타 정보를 분석해서, UObject
시스템에서 사용할 수 있는 코드(C++)를 자동으로 생성한다.
- 작동 시점
- 빌드할 때
.Build.cs
에 의해 자동 실행된다. *.generated.h
파일이 생성된다.
- 빌드할 때
- 생성 내용
- 리플렉션을 위한 VTable 등록
StaticClass()
코드- 네이티브 함수 호출 포인터
UFunction
,UProperty
,UEnum
메타데이터 등록 코드
2. CDO(Class Default Object)
클래스의 기본값을 저장하는 템플릿 역할로, 해당 클래스의 새 인스턴스를 생성할 때 CDO의 프로퍼티를 복사하여 초기화한다. 모든 UClass
는 해당 클래스의 기본 인스턴스(CDO)를 런타임에 자동 생성한다.
모든 UObject 기반 클래스가 공유하는 초기 상태 기준이며, UPROPERTY()
기본값은 생성자에서 설정 후 CDO에 저장된다.
CDO는 블루프린트는
- 인스턴스의 기본값 제공자이며
- UObject 복사/스폰 시 기본값 복사 원본이며
NewObejct()
또는 에디터가 객체를 만들 때의 최초 참조 대상이다.
- 생성 시점
UClass
가 처음 로딩될 때,UClass::CreateDefaultObject()
에서 CDO 생성- UObject 생성 시에는 이 CDO의 값을
memcpy
하여 복사
Leave a comment