본문으로 건너뛰기
Unreal Engine 모듈 · 플러그인 개발LESSON 17

Runtime 플러그인 만들기

난이도심화
예상 시간110분
선수지식14~16강의 Descriptor와 설치 범위

17강. Runtime 플러그인 만들기

1. 이번 강의에서 해결할 문제​

Plugin 생성 마법사가 만든 기본 Module은 빌드되지만 어떤 계약을 제공해야 하는지, 소비 프로젝트가 무엇을 의존해야 하는지 정해져 있지 않습니다. 생성 성공이 아니라 프로젝트 클래스 없이 독립 컴파일되는 최소 Runtime Plugin을 기준선으로 만듭니다.

2. 학습 목표​

3. 핵심 개념​

Runtime Plugin은 게임 실행 Target에 포함되므로 UnrealEd, Slate와 Editor Header를 참조하지 않습니다. 첫 기준선은 Content와 Config 없이 C++ Interface 하나만 제공하고, 이후 강의에서 설정과 Component를 누적합니다.

4. 단계별 실습​

Plugins/ReusableInteraction/
├─ ReusableInteraction.uplugin
└─ Source/ReusableInteraction/
├─ ReusableInteraction.Build.cs
├─ Public/Interaction/Interactable.h
└─ Private/ReusableInteractionModule.cpp
ReusableInteraction.Build.cs
using UnrealBuildTool;

public class ReusableInteraction : ModuleRules
{
public ReusableInteraction(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
PublicDependencyModuleNames.AddRange(new[]
{
"Core", "CoreUObject", "Engine"
});
}
}
Public/Interaction/Interactable.h
#pragma once

#include "UObject/Interface.h"
#include "Interactable.generated.h"

UINTERFACE(BlueprintType)
class REUSABLEINTERACTION_API UInteractable : public UInterface
{
GENERATED_BODY()
};

class REUSABLEINTERACTION_API IInteractable
{
GENERATED_BODY()

public:
UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category="Interaction")
bool CanInteract(AActor* InstigatorActor) const;

UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category="Interaction")
void Interact(AActor* InstigatorActor);
};

소비 게임 Module Build.cs에 ReusableInteraction을 Private Dependency로 추가하고 CPP에서 IInteractable::Execute_CanInteract를 사용합니다. Public 게임 Header가 이 Interface를 노출한다면 의존성도 Public으로 재검토합니다.

5. 코드가 동작하는 이유​

Descriptor가 Plugin과 Runtime Module을 발견하고 소비 Module 의존성이 Header·Link 환경을 연결합니다. UInterface는 Reflection에 Interface 타입을 등록하며 Execute_ 경로는 Blueprint와 C++ 구현을 같은 계약으로 호출합니다.

6. 자주 하는 실수와 해결법​

7. 직접 실습​

8. 이해 점검 질문 3개​

9. 핵심 요약​

MINI QUIZ

Runtime 플러그인 만들기 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“Runtime 플러그인 만들기” 코드 리뷰에서 유지해야 할 설계 원칙은 무엇인가요?
  2. 문제 2“Runtime 플러그인 만들기”에서 ‘Cast<IInteractable>만으로 Blueprint 구현 호출’ 문제가 생겼습니다. 가장 알맞은 진단 또는 대응은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

17강. Runtime 플러그인 만들기 미완료 상태