아쉽게도 언리얼 에디터 UI에서 모듈을 생성하는 기능은 제공하지 않는다.
공식문서의 절차를 따라서 모듈을 생성해보자.
How To Make a Gameplay Module in Unreal Engine | Unreal Engine 5.8 Documentation | Epic Developer Community
Learn how to create a runtime module for your Unreal Engine game from scratch.
dev.epicgames.com
파일 탐색기로 언리얼 프로젝트 폴더에 접근하여 Source폴더 아래에 원하는 모듈명으로 폴더를 생성하고,
내부에 Public, Private폴더와 [모듈명].build.cs파일, [모듈명]module.cpp파일을 생성한다


.cs파일과 ~Module.cpp파일의 내용물을 다음과 같이 작성한다.
// ModuleTest.build.cs
using UnrealBuildTool;
public class ModuleTest: ModuleRules
{
public ModuleTest(ReadOnlyTargetRules Target) : base(Target)
{
PrivateDependencyModuleNames.AddRange(new string[] {"Core", "CoreUObject", "Engine"});
}
}
PrivateDependencyModuleNames에는 기존 프로젝트처럼 해당 모듈에서 사용할 모듈의 이름을 추가해주면 된다.
해당 코드가 존재해야 UBT(언리얼 빌드 툴)이 모듈을 인식할 수 있다.
// ModuleTestModule.cpp
#include "Modules/ModuleManager.h"
IMPLEMENT_MODULE(FDefaultModuleImpl, ModuleTest);
해당 코드가 존재해야 언리얼 엔진에서 모듈을 로드/언로드가 가능해진다.
파일명이 [모듈명]Module.cpp인데 공식문서는 다음과 같이 설명한다
[모듈 이름]Module은 언리얼 엔진 소스 코드에 속한 모듈 구현 파일의 일반적인 명명 규칙입니다.
거대한 코드에서 파일을 추적할 때 유용합니다.
모듈을 정의하는 파일명이지 모듈이름이 아니기때문에, 매크로함수의 시그니처에서는 모듈명을 입력하니 햇갈리지 않도록 한다.
4개의 파일이 전부 작성되었으면 프로젝트 최상위 폴더의 .uproject파일을 우클릭하고 generate~~ files를 선택한다.

여기까지했다면 모듈의 "생성"은 완료되었다.
다만 이제 모듈을 "사용"하기위해서는 주 게임 모듈에 추가해주어야한다.
먼저 프로젝트에 추가한 모듈을 포함시키도록 .uproject 파일을 열고, "Modules"부분에 새 모듈을 추가한다.

그리고 주 게임 모듈(기본 프로젝트명 폴더)의 .build.cs파일로 이동하여 새 모듈을 PublicDependencyModuleNames 목록에 추가한다.
우리가 C++에서 Widget을 사용하려면 "UMG"를 추가했던것과 동일하다
// ModuleAndPlugin.build.cs
using UnrealBuildTool;
public class ModuleAndPlugin : ModuleRules
{
public ModuleAndPlugin(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "EnhancedInput",
//모듈 추가
"ModuleTest"});
}
}
여기까지 왔다면 사용할 준비는 완료되었다.
빌드하고, 실행하여 UE로 이동하면 콘텐츠 브라우저에서 C++클래스 아래에 새 모듈을 확인할 수 있다!

모듈내에 클래스를 만들고, 사용하는것은 기존과 동일하다.
다만 이제 캡슐화 규칙 등에 따라 모듈의존성을 Public/Private설정하는것이 중요한데
cpp에서만 사용하고 .h에서는 전방선언으로 충분한 경우 Private로,
그렇지 않다면 public으로 의존성 선언을 사용하도록 하고
가능하다면 private의존성으로 설정하는게 좋다고 한다.
이는 좀 경험을 쌓아야 적확한 내용 작성이 가능할것으로 보인다..
'개발 > 언리얼' 카테고리의 다른 글
| 언리얼 모듈과 플러그인? (0) | 2026.06.24 |
|---|---|
| WorldSubsystem (0) | 2026.05.22 |
| UAnimNotifyState_TimedNiagaraEffect, 트레일(궤적) 이펙트 에셋 적용 (0) | 2026.05.12 |
| 언리얼 AnimInstance로 AnimNotify사용 과정 기록 (0) | 2026.05.06 |
| 언리얼 캐릭터 무기 위치 조정 및 부착(Skeleton, Socket) (0) | 2026.05.04 |