프로그래밍/언리얼엔진

[언리얼엔진] 플러그인 제작 및 사용법 - 1. 생성 및 준비단계

LeePorter 2022. 1. 27. 19:39

이번 포스팅에서는 언리얼 엔진에서 사용할 플러그인을 생성하고 사용할 수 있게 준비하는 부분에 대해서 설명하겠습니다.

 

해당 플러그인을 생성한 개발 환경은 아래와 같습니다. (꼭 같을 필요는 없습니다. ^^ 본인의 설치된 환경에서 그대로 진행해주시면 됩니다.)

  • OS : Windows
  • Engine Version : 4.26
  • IDE : Visual Studio 2017 community

프로젝트를 C++ 프로젝트로 생성하고 [편집] - [플러그인]을 선택합니다. 그러면 플러그인 창이 나타나는데 우측 하단에 '새 플러그인' 버튼을 클릭하면 새로운 플러그인을 생성하기 위한 창이 나타납니다.

플러그인 만들기

 

새 플러그인 창에서 '기본' 플러그인을 선택하고 플러그인의 이름을 입력합니다. 그 아래 Descriptor Data는 플러그인 설명이므로 안 적어도 됩니다. (수정은 언제든지 할 수 있습니다) 우측 하단의 '플러그인 생성' 버튼을 클릭하면 플러그인이 만들어집니다. 

C++ 프로젝트에서 플러그인 생성(좌) / 블루프린트 프로젝트에서 플러그인 생성(우)

 
 

플러그인이 만들어지면 Visual Studio가 실행됩니다. 먼저 플러그인에 대한 컴파일이 이루어지고 이를 자동으로 실행하여 솔루션 탐색기를 통해 생성된 플러그인을 확인할 수 있습니다. 플러그인을 만들게 되면 프로젝트가 있는 폴더에 'Plugins' 폴더가 생성되고 방금 생성한 플러그인 이름의 폴더가 있습니다. 

 

여기서 하나 알아두어할 점은 블루프린트 콘텐츠만을 담는 플러그인의 경우, 굳이 C++ 프로젝트를 만들 필요는 없습니다. 위의 우측 이미지처럼 블루프린트 프로젝트를 만들면 플러그인 생성 시 '콘텐츠 전용' 하나만 선택할 수 있습니다.

 

플러그인은 모듈을 감싸고 있는 껍데기입니다. 이 껍데기는 다른 여러 프로젝트에서 사용될 수 있습니다. 플러그인에는 여러 모듈을 넣을 수 있습니다. 이 모듈은 플러그인 폴더의 'Source' 폴더에 존재합니다. 이 소스코드 모듈을 언리얼 프로젝트에서 인식시켜 사용할 수 있도록 해주는 것이 플러그인입니다.

 

즉, 언리얼 엔진은 소스코드를 모듈화하여 빌드하고 로드하여 사용합니다. 플러그인에서 사용하는 모듈과 프로젝트에 사용하는 모듈은 별개로, 각각 빌드하여 모듈을 라이브러리로 만들고 언리얼 엔진 프로젝트 로드할 때 불러옵니다.

플러그인 내부 모듈 폴더 구조 예시 (왼쪽 위부터 시계방향)

 

모듈은 크게 모듈의 이름을 한 헤더(.h) 파일소스(.cpp) 파일이 있고, 이들을 빌드시스템(모듈명.Build.cs)을 통해 컴파일하여 라이브러리를 만든 뒤 언리얼 엔진에서 불러와 사용할 수 있게 합니다.

 

아마 C++ 프로젝트를 생성해보았다면 Source 폴더 안에 마찬가지로 프로젝트 이름의 모듈이 있는 것을 확인할 수 있습니다. 이는 프로젝트에서만 사용하는 소스 모듈입니다. 

Plugins 폴더 안에 생성한 플러그인이 들어가 있음

 

플러그인 모듈(TestPlugin)의 Build.cs의 소스코드를 아래와 같이 수정합니다.

using UnrealBuildTool;

public class TestPlugin : ModuleRules
{
	public TestPlugin(ReadOnlyTargetRules Target) : base(Target)
	{
		PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs;

		//bFasterWithoutUnity = true;
		MinFilesUsingPrecompiledHeaderOverride = 1;
		bUseUnity = false;

		PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" });

		PublicIncludePaths.AddRange(new string[] { "TestPlugin/Public" });
		PrivateIncludePaths.AddRange(new string[] { "TestPlugin/Private" });
	}
}

 

 

기존 생성자 안에 내용을 지우고 소스코드를 위와 같이 작성합니다. 그리고 프로젝트를 빌드합니다. 

※ 빌드 시 가끔 UE4 프로젝트가 시작프로젝트로 설정되어 있을 수 있으니 꼭 현재 프로젝트(위의 예제로 설명하면 PluginTest)로 시작 프로젝트가 설정되어 있는지 확인하시고 빌드해주세요.

 

컴파일이 완료되면 아래와 같은 로그가 출력됩니다.(정상일 때 예시)

플러그인 모듈 컴파일 성공

 

프로젝트를 빌드하면 플러그인의 컴파일도 같이 수행되므로 이에 따라 라이브러리가 생성됩니다. 물론 이미 플러그인을 생성할 때 언리얼 엔진이 자체적으로 컴파일을 수행하고 플러그인 모듈을 자동 로드합니다. 이를 확인하기 위해 메뉴에서 [창] - [개발자 툴] - [모듈]을 눌러서 플러그인 이름으로 검색하면 확인할 수 있습니다.

 

모듈 탭에서 프로젝트에서 사용하는 모듈을 확인할 수 있음.

 

이제 플러그인을 작업할 준비가 되었습니다. 다음 포스팅에서 C++ 클래스를 생성하여 플러그인을 사용하는 방법에 대해서 설명하겠습니다.