언리얼 엔진/C++

[언리얼엔진] Editor Subsystem

mane 2024. 2. 22. 02:21
728x90
반응형

Unreal Engine 에서 Editor Subsystem 사용하기

Unreal Engine 에서는 다양한 시스템과 기능을 통해 게임 개발의 효율성을 높일 수 있습니다.
그중 하나인 Editor Subsystem은 Unreal Engine 에디터 내에서 커스텀 기능을 구현하고 관리할 때 유용한 도구입니다.
이 글에서는 Unreal Engine 5 프로젝트에서 Editor Subsystem을 사용하기 위해 필요한 설정 방법을 설명합니다.


Editor Subsystem이란?

Editor Subsystem은 Unreal Engine 에디터에서 작동하는 서브시스템으로, 개발자가 에디터 내에서 커스텀 기능을 쉽게 추가하고 관리할 수 있게 해줍니다. 예를 들어, 자주 사용하는 작업을 자동화하거나, 에디터의 UI를 커스터마이징하는 등의 기능을 구현할 때 사용할 수 있습니다.


Build.cs 파일에 EditorSubsystem 추가하기

Editor Subsystem을 사용하기 위해서는 먼저 프로젝트의 Build.cs 파일을 수정해야 합니다. Build.cs 파일은 프로젝트의 모듈 빌드 설정을 정의하는 곳으로, 여기에 필요한 모듈을 추가함으로써 Unreal Engine이 해당 기능을 컴파일 시 포함하도록 할 수 있습니다.

Editor Subsystem 기능을 사용하기 위해서는 EditorSubsystem 모듈을 Build.cs 파일에 추가해야 합니다. 아래는 이를 위한 간단한 예제 코드입니다:

using UnrealBuildTool;

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

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

        // EditorSubsystem 모듈을 추가
        if (Target.bBuildEditor)
        {
            PrivateDependencyModuleNames.Add("EditorSubsystem");
        }
    }
}

위 코드에서 YourProjectName 부분은 실제 프로젝트의 이름으로 대체해야 합니다. if (Target.bBuildEditor) 조건문은 에디터 모드에서 빌드할 때만 EditorSubsystem 모듈을 추가하도록 하는데, 이는 게임이 실제로 실행될 때는 이 모듈이 필요 없기 때문입니다.

https://dev.epicgames.com/documentation/ko-kr/unreal-engine/unreal-engine-build-tool-target-reference?application_version=5.0

 

언리얼 엔진 빌드 툴 타깃 레퍼런스

프로퍼티 설명을 포함한 UBT 타깃의 개요입니다.

dev.epicgames.com

프로퍼티 설명을 포함한 UBT 타깃의 개요입니다.

https://dev.epicgames.com/documentation/ko-kr/unreal-engine/unreal-engine-build-tool-target-reference?application_version=5.0

 

언리얼 엔진 빌드 툴 타깃 레퍼런스

프로퍼티 설명을 포함한 UBT 타깃의 개요입니다.

dev.epicgames.com


Editor Subsystem 사용 예제

Editor Subsystem을 사용하는 기본적인 방법은 우선 Editor Subsystem 클래스를 상속받는 새로운 클래스를 생성하는 것입니다.
다음은 간단한 Editor Subsystem 구현 예제입니다:

#include "EditorSubsystem/EditorSubsystem.h"
#include "CoreMinimal.h"

UCLASS()
class UMyEditorSubsystem : public UEditorSubsystem
{
    GENERATED_BODY()

public:
    // Editor Subsystem이 활성화될 때 호출되는 함수
    virtual void Initialize(FSubsystemCollectionBase& Collection) override
    {
        Super::Initialize(Collection);
        // 초기화 코드 작성
        UE_LOG(LogTemp, Warning, TEXT("MyEditorSubsystem Initialized"));
    }

    // Editor Subsystem이 비활성화될 때 호출되는 함수
    virtual void Deinitialize() override
    {
        // 정리 코드 작성
        UE_LOG(LogTemp, Warning, TEXT("MyEditorSubsystem Deinitialized"));
        Super::Deinitialize();
    }
};

이 클래스는 UEditorSubsystem을 상속받아 Unreal Engine 에디터에서 사용할 수 있는 커스텀 서브시스템을 정의합니다. Initialize 함수는 서브시스템이 활성화될 때 호출되며, 여기서 필요한 초기 설정을 수행할 수 있습니다. 반대로 Deinitialize 함수는 서브시스템이 비활성화될 때 호출되어, 사용된 자원을 정리하는 등의 작업을 수행할 수 있습니다.

728x90
반응형