0. Unreal Engine 빌드 과정

  1. 헤더와 Cpp 파일 작성
  2. UHT가 UCLASS, USTRUCT, UFUNCTION 등 메타태그 분석
  3. 관련 코드 생성(리플렉션 정보, VTable, Init, CDO 등)
  4. UBT(Unreal Build Tool) 빌드 및 링크
  5. 최종 실행파일 + 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는 블루프린트는

  1. 인스턴스의 기본값 제공자이며
  2. UObject 복사/스폰 시 기본값 복사 원본이며
  3. NewObejct() 또는 에디터가 객체를 만들 때의 최초 참조 대상이다.
  • 생성 시점
    • UClass가 처음 로딩될 때, UClass::CreateDefaultObject()에서 CDO 생성
    • UObject 생성 시에는 이 CDO의 값을 memcpy하여 복사

Leave a comment