새 Runtime 모듈을 프로젝트에 추가하기
9강. 새 Runtime 모듈을 프로젝트에 추가하기
1. 이번 강의에서 해결할 문제
새 Source 폴더와 Build.cs를 만들었지만 UBT가 Module을 발견하지 않거나, 게임 모듈에서 Header를 Include할 수 없습니다. Runtime Module 추가는 파일 생성뿐 아니라 Descriptor, Target 또는 의존성 그래프와 Module 구현 이름을 일치시키는 작업입니다.
2. 학습 목표
3. 핵심 개념
프로젝트 Module은 Source/<ModuleName>/ 아래에 Build.cs와 Source를 둡니다. Module이 현재 Target의 의존성 그래프에 들어와야 컴파일됩니다. .uproject의 Modules 목록과 Target의 ExtraModuleNames, 다른 Module의 Build.cs 의존성은 각기 발견·포함에 관여하므로 현재 엔진이 생성한 기본 프로젝트 패턴을 기준으로 수정합니다.
4. 단계별 실습
Source/GameplaySupport/
├─ GameplaySupport.Build.cs
├─ Public/GameplaySupport/HealthQuery.h
└─ Private/
├─ GameplaySupportModule.cpp
└─ GameplaySupport/HealthQuery.cpp
using UnrealBuildTool;
public class GameplaySupport : ModuleRules
{
public GameplaySupport(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
PublicDependencyModuleNames.AddRange(new[]
{
"Core", "CoreUObject", "Engine"
});
}
}
#include "Modules/ModuleManager.h"
IMPLEMENT_MODULE(FDefaultModuleImpl, GameplaySupport)
"Modules": [
{ "Name": "ArchitectureLab", "Type": "Runtime", "LoadingPhase": "Default" },
{ "Name": "GameplaySupport", "Type": "Runtime", "LoadingPhase": "Default" }
]
게임 모듈의 PrivateDependency에 GameplaySupport를 추가하고 Public API를 CPP에서 호출합니다. 프로젝트 파일을 갱신한 뒤 ArchitectureLabEditor Win64 Development와 Game Target을 각각 빌드합니다.
5. 코드가 동작하는 이유
Descriptor가 Module 이름과 Type을 제공하고 UBT가 같은 이름의 ModuleRules를 찾습니다. IMPLEMENT_MODULE은 ModuleManager가 생성할 구현을 등록합니다. 소비 모듈의 Build.cs 의존성이 Include와 링크 환경을 연결합니다.
6. 자주 하는 실수와 해결법
7. 직접 실습
8. 이해 점검 질문 3개
9. 핵심 요약
새 Runtime 모듈을 프로젝트에 추가하기 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.