[이득우의 언리얼] 4. 언리얼 오브젝트 시스템

2026. 1. 21. 14:11·기타/[강의] 이득우의 언리얼 프로그래밍 Part1

언리얼 엔진의 UObject 시스템 이해하기

언리얼 엔진에서 UObject 시스템은 엔진의 핵심 기능 중 하나입니다. 이번 포스팅에서는 UCLASS 매크로, UHT(Unreal Header Tool), 그리고 언리얼 오브젝트 선언 방법에 대해 알아보겠습니다.

 


 

UCLASS 매크로란?

UCLASS 매크로는 UObject에서 파생되는 클래스를 언리얼 엔진의 리플렉션 시스템에 등록하는 역할을 합니다. 이 매크로를 클래스에 태그하면 UObject 처리 시스템에서 해당 클래스를 인식하고 관리할 수 있게 됩니다.

UCLASS()
class YOURPROJECT_API UMyObject : public UObject
{
    GENERATED_BODY()
    
public:
    // 클래스 구현
};

 


 

Unreal Header Tool (UHT)

UHT는 언리얼 오브젝트를 처리하기 위해 컴파일 과정에서 실행되는 특수한 도구입니다. UHT의 주요 역할은 다음과 같습니다:

  • 헤더 파일에 선언된 매크로들을 분석합니다
  • 언리얼 오브젝트 관련 메타데이터를 추출합니다
  • *.generated.h 파일을 자동으로 생성합니다

이 과정을 통해 리플렉션, 가비지 컬렉션, 시리얼라이제이션 등의 기능이 자동으로 구현됩니다.

 

언리얼 오브젝트의 선언

언리얼 오브젝트를 선언할 때 필요한 기본 요소들을 살펴보겠습니다.

 

필수 헤더 파일

#include "CoreMinimal.h"
#include "UObject/NoExportTypes.h"
#include "MyObject.generated.h"  // 모든 필요한 타입들이 선언된 이후 항상 마지막에 포함해야 합니다

 

Generated.h 파일

`MyObject.generated.h` 파일은 UHT가 자동으로 생성하는 파일입니다. 이 파일은 다음 경로에 생성됩니다 

Intermediate/Build/Win64/UnrealEditor/Inc/YourModule/UHT/MyObject.generated.h

중요: 이 파일은 절대 직접 수정하면 안 됩니다. UHT가 컴파일 시마다 재생성하기 때문입니다.

 

API 매크로의 의미

class UNREALOBJECT_API UMyObject : public UObject

UNREALOBJECT_API 매크로는 이 클래스를 다른 모듈에서도 사용할 수 있도록 export하는 역할을 합니다. 만약 현재 모듈 내에서만 사용하려면 이 매크로를 제거하면 됩니다.

 

GENERATED_BODY() 매크로는 내부적으로 여러 단계의 매크로 확장을 거칩니다:

  1. BODY_MACRO_COMBINE 매크로로 전달
  2. BODY_MACRO_COMBINE_INNER 매크로로 확장
  3. 최종적으로 필요한 코드를 생성

이 과정에서 CURRENT_FILE_ID가 함께 전달되어 리플렉션 시스템에 필요한 정보를 제공합니다.

 


 

마무리

언리얼 엔진의 UObject 시스템은 강력한 리플렉션과 메타데이터 기능을 제공합니다. UCLASS 매크로와 UHT를 통해 자동으로 생성되는 코드들이 엔진의 다양한 기능을 가능하게 만듭니다. 이러한 기본 구조를 이해하면 언리얼 엔진 개발을 더욱 효과적으로 진행할 수 있습니다.

'기타 > [강의] 이득우의 언리얼 프로그래밍 Part1' 카테고리의 다른 글

[이득우의 언리얼] 8. 언리얼의 C++ 설계 - 컴포지션  (0) 2026.02.06
[이득우의 언리얼] 7. 언리얼 C++ 설계 - 인터페이스  (0) 2026.02.04
[이득우의 언리얼] 6.언리얼 오브젝트 리플렉션 시스템 2  (0) 2026.02.04
[이득우의 언리얼] 5. 언리얼 오브젝트 리플렉션 시스템 1  (0) 2026.02.03
[이득우의 언리얼] 3. FString의 구조와 활용  (0) 2026.01.20
'기타/[강의] 이득우의 언리얼 프로그래밍 Part1' 카테고리의 다른 글
  • [이득우의 언리얼] 7. 언리얼 C++ 설계 - 인터페이스
  • [이득우의 언리얼] 6.언리얼 오브젝트 리플렉션 시스템 2
  • [이득우의 언리얼] 5. 언리얼 오브젝트 리플렉션 시스템 1
  • [이득우의 언리얼] 3. FString의 구조와 활용
Meoyoung's Development Logs
Meoyoung's Development Logs
내가 보려고 만든 블로그
  • Meoyoung's Development Logs
    이게뭐영
    Meoyoung's Development Logs
  • 전체
    오늘
    어제
    • 분류 전체보기 (229)
      • 게임잼 (3)
      • 언리얼 엔진 (53)
        • 꿀 Tip ! (7)
        • 트러블슈팅 (24)
        • 최적화 (0)
        • 캐릭터 (2)
        • VR (1)
        • Lighting (2)
        • 멀티스레드 (2)
        • 문자열 (0)
      • C++ (31)
        • 문법 정리 (8)
        • [서적] Fundamental C++ 프로그래밍 .. (5)
        • [서적] 이것이 C++이다 (11)
        • [서적] Effective C++ (7)
      • C# (1)
        • [서적] 이것이 C#이다 (1)
      • 코딩테스트 (26)
        • 프로그래머스 (6)
        • 알고리듬 (13)
        • 자료구조 (7)
      • 컴퓨터 과학 (27)
        • 운영체제 (11)
        • 데이터베이스 (0)
        • 디자인패턴 (0)
        • 자료구조 (5)
        • 네트워크 (0)
        • 컴퓨터구조 (11)
      • 면접준비 (0)
        • C++ (0)
        • 운영체제 (0)
        • 자료구조 (0)
      • 프로젝트 (25)
        • [팀프로젝트] The Fourth Descenda.. (5)
        • [개인프로젝트] FPS 구현 맛보기 (5)
        • GetOutOf (15)
      • 기타 (54)
        • [강의] 이득우의 언리얼 프로그래밍 Part1 (10)
        • [강의] 이득우의 언리얼 프로그래밍 Part3 (12)
        • [강의] 소울라이크 개발 A-Z (4)
        • [강의] Udemy-2D (5)
        • [서적] 인생 언리얼5 (4)
        • 스파르타코딩클럽 (15)
        • 객체지향프로그래밍 (2)
        • 컴퓨터회로 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    경북게임잼
    게임개발
    알고리즘
    참가후기
    게임잼
    선택정렬
    삽입정렬
    셸정렬
    쉘정렬
    자료구조
    버블정렬
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Meoyoung's Development Logs
[이득우의 언리얼] 4. 언리얼 오브젝트 시스템
상단으로

티스토리툴바