Editor 플러그인 만들기
18강. Editor 플러그인 만들기
1. 이번 강의에서 해결할 문제
Editor 메뉴와 에셋 검사를 게임 Module에 추가하면 Runtime Build가 Editor API를 끌어옵니다. 별도 Editor Plugin을 만들더라도 Descriptor Type, Build.cs와 Module 수명을 정확히 구성하지 않으면 Editor 시작 시 Missing Module 또는 Shutdown 크래시가 발생합니다.
2. 학습 목표
3. 핵심 개념
Editor Plugin도 일반 Plugin과 같은 Descriptor·Module 구조를 사용하지만 Module Type이 Editor이고 의존성에 UnrealEd, ToolMenus, Slate, DataValidation 등이 포함될 수 있습니다. Runtime Plugin과 분리하면 DataGuard가 없어도 게임 실행 계약이 유지됩니다.
4. 단계별 실습
Plugins/DataGuard/
├─ DataGuard.uplugin
└─ Source/DataGuardEditor/
├─ DataGuardEditor.Build.cs
└─ Private/DataGuardEditorModule.cpp
using UnrealBuildTool;
public class DataGuardEditor : ModuleRules
{
public DataGuardEditor(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
PrivateDependencyModuleNames.AddRange(new[]
{
"Core", "CoreUObject", "Engine", "UnrealEd",
"ToolMenus", "Slate", "SlateCore"
});
}
}
#include "Modules/ModuleManager.h"
DEFINE_LOG_CATEGORY_STATIC(LogDataGuardEditor, Log, All);
class FDataGuardEditorModule final : public IModuleInterface
{
public:
virtual void StartupModule() override
{
UE_LOG(LogDataGuardEditor, Display, TEXT("DataGuardEditor started"));
}
virtual void ShutdownModule() override
{
UE_LOG(LogDataGuardEditor, Display, TEXT("DataGuardEditor stopped"));
}
};
IMPLEMENT_MODULE(FDataGuardEditorModule, DataGuardEditor)
Editor Target을 빌드하고 Plugin 활성화 뒤 Startup을 확인합니다. Development Game Target 빌드 로그에는 DataGuardEditor가 컴파일·링크 대상이 아니어야 합니다. Editor를 닫을 때 Shutdown 로그가 남는지도 확인합니다.
5. 코드가 동작하는 이유
Descriptor의 Editor Type이 현재 Target과 맞을 때만 Module이 로드됩니다. Editor 전용 의존성은 DataGuardEditor 내부 Private 환경에서 끝나고 Runtime Module 그래프로 전파되지 않습니다.
6. 자주 하는 실수와 해결법
7. 직접 실습
8. 이해 점검 질문 3개
9. 핵심 요약
Editor 플러그인 만들기 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.