GameDevelop/UnrealEngine

UHT (Unreal Header Tool)

Une_ 2026. 1. 15. 13:03

UHT (Unreal Header Tool)

1. 한 줄 정의

UHT는 Unreal Engine의 리플렉션 시스템을 위해
C++ 헤더를 분석하고 자동 코드를 생성하는 도구다.

 

2. UHT는 왜 필요한가?

C++ 자체에는 다음 기능이 없다.

  • 런타임 타입 정보 확장
  • 에디터 노출 메타데이터
  • Garbage Collection 추적
  • Blueprint 연동

👉 Unreal은 이를 코드 생성 방식으로 해결한다.

 

3. UHT의 핵심 역할

UHT는 다음을 담당한다.

  • UCLASS, USTRUCT, UENUM, UFUNCTION, UPROPERTY
  • 메타데이터 파싱
  • .generated.h 파일 생성
  • 리플렉션 데이터 구축

4. 동작 흐름 (빌드 파이프라인)

[ C++ Header (.h) ]
        ↓
[ Unreal Header Tool ]
        ↓
[ *.generated.h 생성 ]
        ↓
[ C++ 컴파일 (MSVC / Clang) ]

👉 UHT는 C++ 컴파일러보다 먼저 실행

 

5. .generated.h는 무엇인가?

  • UHT가 자동 생성한 코드
  • 리플렉션 / GC / 네트워크용 코드 포함
  • 반드시 헤더 파일 맨 아래 include
#include "MyActor.generated.h"

❗ 위치 틀리면 컴파일 에러

 

6. UHT가 생성하는 것들

1) 리플렉션 정보

  • 클래스 이름
  • 상속 관계
  • 프로퍼티 타입

2) GC 추적 코드

  • UPROPERTY() 대상 추적
  • UObject 수명 관리

3) Blueprint 연동 코드

  • BlueprintCallable
  • BlueprintImplementableEvent

4) 네트워크 복제 코드

  • ReplicatedUsing
  • RPC 함수

7. 요약

UHT는 Unreal Header Tool로,
C++에 없는 리플렉션, GC, Blueprint 연동 같은 기능을 제공하기 위해
언리얼에서 사용하는 코드 생성 도구입니다.

C++ 컴파일 전에 실행되어 UPROPERTY, UFUNCTION 같은 매크로를 파싱하고
이를 기반으로 .generated.h 파일을 생성합니다.

 


 

Q1. UHT는 언제 실행되나요?

A.

UHT는 C++ 컴파일 전에 실행됩니다.
헤더 파일을 분석해 .generated.h를 생성한 뒤,
그 결과를 포함해 C++ 컴파일이 진행됩니다.

Q2. .generated.h 파일에는 무엇이 들어 있나요?

A.

리플렉션 정보, GC 추적 코드,
Blueprint 연동과 네트워크 복제를 위한 코드들이 들어 있습니다.

Q3. UHT가 느려지는 원인은 무엇인가요?

A.

헤더에 불필요한 UPROPERTY, UFUNCTION 사용,
의존성 많은 헤더 포함,
대형 구조체 선언 등이 원인이 될 수 있습니다.

Q4. 리플렉션은 런타임에 어떻게 사용되나요?

A.

UHT가 생성한 메타데이터를 기반으로
런타임에 클래스 정보, 프로퍼티 접근,
Blueprint 호출 등이 가능합니다.

'GameDevelop > UnrealEngine' 카테고리의 다른 글

언리얼엔진의 애셋매니저(AssetManager)  (0) 2026.03.04
UBT (Unreal Build Tool)  (0) 2026.01.15
TArray, TMap  (1) 2026.01.10
UnrealEngine - 언리얼엔진의 UI 렌더링 과정  (1) 2025.12.31
UnrealEngine - UObject와 AActor  (0) 2025.12.18