[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