게임 개발/Unreal Engine

[UE4] Custom Asset Type 구현 - Plugin 모듈 만들기

지노윈 2022. 2. 1. 15:28
반응형

 

Runtime 모듈과 Editor 모듈을 분리해서 만들 것입니다.

 

모듈을 분리하지 않아도 정상 동작 하지만 관례에 따라 언리얼 엔진 개발시에 Runtime 모듈과 Editor 모듈을 분리하여 개발합니다. 이렇게 하는 이유는 배포시에 용량이나 동작의 효율성 때문입니다.

 

Runtime 모듈 만들기

먼저 Plugins > New Plugin 에서 빈 플러그으로 작성합니다.

Runtime 모듈로 TestPlugin을 생성합니다.

 

수동으로 Editor 모듈 추가하기

C++ Moulde Generator를 사용하여 좀 더 편리하게 Editor 모듈을 추가 할 수 있으며 다음 글을 참고해 주세요.

[게임 개발/Unreal Engine] - [UE4] C++ Module Generator 소개

 

아래 설명은 C++ Module Generator를 사용하지 않고 수작업을 하는 방법을 설명합니다.

Source 폴더의 TestPlugin을 복사하여 TestPluginEditor를 만들어 줍니다.

복사한 파일들의 이름을 다음과 같이 변경합니다.

TestPlugin.uplugin에 Editor모듈을 추가 합니다.

 		...
		"Modules": [
		{
			"Name": "TestPlugin",
			"Type": "Runtime",
			"LoadingPhase": "Default"
		},
		{
			"Name": "TestPluginEditor",
			"Type": "Editor",
			"LoadingPhase": "Default"
		}
	]
}

TestPluginEditor.Build.cs 파일을 수정합니다.

using UnrealBuildTool;

public class TestPluginEditor : ModuleRules	// *수정
{
	public TestPluginEditor(ReadOnlyTargetRules Target) : base(Target)	// *수정
	{
		...
        
		PublicDependencyModuleNames.AddRange(
			new string[]
			{
				"Core",
				// ... add other public dependencies that you statically link with here ...
			}
			);
			
		
		PrivateDependencyModuleNames.AddRange(
			new string[]
			{
				"CoreUObject",
				"Engine",
				"Slate",
				"SlateCore",
				"TestPlugin",	// *추가
				"UnrealEd"	// *추가
				// ... add private dependencies that you statically link with here ...	
			}
			);
		
		...
	}
}

TestPluginEditor.h 파일을 다음과 같이 수정합니다.

#pragma once

#include "CoreMinimal.h"
#include "Modules/ModuleManager.h"

class FTestPluginEditorModule : public IModuleInterface
{
public:

	/** IModuleInterface implementation */
	virtual void StartupModule() override;
	virtual void ShutdownModule() override;
};

TestPluginEditor.cpp 파일을 다음과 같이 수정합니다.

#include "TestPluginEditor.h"

#define LOCTEXT_NAMESPACE "FTestPluginEditorModule"

void FTestPluginEditorModule::StartupModule()
{
	// This code will execute after your module is loaded into memory; the exact timing is specified in the .uplugin file per-module
}

void FTestPluginEditorModule::ShutdownModule()
{
	// This function may be called during shutdown to clean up your module.  For modules that support dynamic reloading,
	// we call this function before unloading the module.
}

#undef LOCTEXT_NAMESPACE
	
IMPLEMENT_MODULE(FTestPluginEditorModule, TestPluginEditor)

다음으로 Custom Asset Type을 추가하는 방법을 알아 보겠습니다.

[게임 개발/Unreal Engine] - [UE4] Asset Type추가 - Custom Asset 구현 & 등록

 

 

관련 글 링크

[게임 개발/Unreal Engine] - [UE4] Custom Asset Type 구현 - Plugin 모듈 만들기

[게임 개발/Unreal Engine] - [UE4] C++ Module Generator 소개

[게임 개발/Unreal Engine] - [UE4] Custom Asset Type 구현 - Asset 구현 & 등록

[게임 개발/Unreal Engine] - [UE4] Custom Asset Type 구현 - Import 하기