언리얼 엔진의 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() 매크로는 내부적으로 여러 단계의 매크로 확장을 거칩니다:
- BODY_MACRO_COMBINE 매크로로 전달
- BODY_MACRO_COMBINE_INNER 매크로로 확장
- 최종적으로 필요한 코드를 생성
이 과정에서 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 |