학습일지/언리얼

Unreal - UBT, UHT, CDO, 리플렉션

Tsukino Ren 2026. 4. 10. 23:47

UBT 

언리얼의 C++ 프로젝트를 빌드하기 위한 시스템으로 C#으로 작성되어 플랫폼별 프로젝트 빌드 과정을 자동화한다.

역할

Build.cs 파일을 분석하여 모듈 간의 의존성을 파악하고 대상 플랫폼과 빌드 설정에 맞춰 컴파일 및 링크 과정을 구성한다.

빌드 시작 시 가장 먼저 실행되어 전체 빌드 과정을 총괄한다.

UHT

헤더 파일에 있는 UCLASS(), UFUNCTION(), UPROPERTY() 등의 매크로를 파싱하여 리플렉션에 필요한 메타데이터 코드를 자동 생성하는 도구다

역할

매크로를 기반으로 generated.h 파일을 생성하고, 엔진이 클래스, 변수, 함수 정보를 런타임에 접근할 수 있도록 메타데이터를 제공한다.

 

UBT 빌드 과정 중, 컴파일 이전 단계에서 실행된다.

CDO

각 UCLASS마다 하나씩 존재하는 기본 객체다 (Class Default Object)

역할

클래스의 기본값을 보관하며 생성자에서 설정된 값이 반영된다.

새로운 객체 생성 시 해당 값을 복사하여 초기화에 사용된다.

 

엔진 실행 시 생성되며, 이후 모든 객체 생성 과정에서 기준이 된다.

리플랙션

클래스, 변수, 함수 정보를 런타임에 접근할 수 있게 하는 시스템이다.

역할

UHT가 생성한 메타데이터를 기반으로 블루프린트, 디테일 패널, 직렬화 GC 등을 가능하게 한다.

런타임에서 객체 정보 접근 및 엔진 기능 전반에 활용된다.

즉 UBT가 빌드를 관리하고 그 과정에서 UHT가 리플렉션 코드를 생성하며, 엔진 실행 시 CDO가 생성되고 이 모든 정보는 리플렉션 시스템을 통해 런타임에서 활용된다..


순서

  1. UBT
    빌드 전체를 관리
  2. UHT
    C++ 코드에 리플렉션 정보 생성
  3. 컴파일
    생성된 코드 포함해서 빌드
  4. 엔진 실행
    클래스마다 CDO 생성
  5. 런타임
    리플렉션 시스템으로 블루프린트, GC, 직렬화, 에디터 기능 동작

마무리

위 내용들은 찾은 자료들을 기반으로 작성했으며 내가 이해한 바로는 이런 느낌이다

 

UBT - 언리얼 프로젝트를 빌드 과정 중 내 컴퓨터 사양에 맞게 자동으로 관리하는 시스템이다

UHT - C++은 리플렉션이 없기에 블루프린트에서 사용할 수 없으나 UHT를 통해 사용 가능하게 만들어준다

CDO - 컴파일 이후 언리얼 프로젝트를 생성하는 과정 중 생성자의 기본 값이 되는 존재로 함부로 수정하면 안 된다.

리플렉션 - C++에서 작성한 클래스,함수,변수들을 언리얼 내부에서 사용할 수 있게 해주는 시스템이다.

 

작성 하고 나니 왜 사용해야 하고 사용 하지 않을 때랑 어떻게 사용하는가에 대해 적지 않아서 지금 제대로 이해했는가도 의문이 들기도 하고 나중에 봐서도 비슷한 느낌이지 않을까 싶다.

'학습일지 > 언리얼' 카테고리의 다른 글

언리얼 프레임워크  (0) 2026.05.04
Unreal - Pawn 클래스 과제  (0) 2026.04.14
Unreal - Actor 이동, 회전 등  (1) 2026.04.09
Unreal - UFUNCTION / UPROPERTY  (0) 2026.04.08
Unreal - Life Cycle  (0) 2026.04.07