소스를 효과적으로 관리 할 수 있도록 프로젝트 구조를 변경하고 게임 설정에 관련된 데이터를 별도의 모듈로 분리한다.
언리얼 엔진의 설정 시스템을 이요ㅕㅇ해 게임의 기본데이터를 INI 파일로 관리 
레벨의 요소를 섹션이라는 단위로 개편하고 무한으로 증가흔 레벨을 설계


모듈 폴더와 빌더 설정파일 : 모듈명으로 괸 Bulid.cs 파일 모듈의 정의 파일 : 모듈명으로 된 .cpp파일

//KGameSetting 모듈 추가하기
//KGameSetting.Bulid.cs, KGameSetting.cpp,KGameSetting.h

KGameSetting.cpp
#include "KGameSetting.h"
#include "Modules/ModuleManager.h"

IMPLEMENT_MODULE( FDefaultModuleImpl, KGameSetting);



///////////////KGameSetting.Build.cs
using UnrealBuildTool;
public class KGameSetting : ModuleRules
{
    public KGameSetting(ReadOnlyTargetRules Target) : base(Target)
    {
        PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;

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

        PrivateDependencyModuleNames.AddRange(new string[] {  });

        // Uncomment if you are using Slate UI
        // PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" });

        // Uncomment if you are using online features
        // PrivateDependencyModuleNames.Add("OnlineSubsystem");

        // To include OnlineSubsystemSteam, add it to the plugins section in your uproject file with the Enabled attribute set to true
    }
}


//////////////////KGame.Target.cs
using UnrealBuildTool;
using System.Collections.Generic;

public class KGameTarget : TargetRules
{
    public KGameTarget(TargetInfo Target) : base(Target)
    {
        Type = TargetType.Game;

        ExtraModuleNames.AddRange( new string[] { "KGame",
            "KGameSetting" } );
    }
}


//////////////////KGameEditor.Target.cs
using UnrealBuildTool;
using System.Collections.Generic;

public class KGameEditorTarget : TargetRules
{
    public KGameEditorTarget(TargetInfo Target) : base(Target)
    {
        Type = TargetType.Editor;

        ExtraModuleNames.AddRange( new string[] { "KGame",
            "KGameSetting" } );
    }
}

위까지 빌드를 하면 Ninaries 폴더에 새로운 파일이 생성 된다.

새로운 DLL 파일이 생성됐다면 DLL 파일을 로딩하도록 명령을 해야 한다. 명령을 하기 위해선 uproject 파일에 기입해야 한다.
KGameSetting모듈을 먼저 로딩하도록 PreDefault로 ㅓㄹ정하고 KGame 모듈이 KGameSetting 모듈에 대해 의존성을 가지도록 설정한다.
그러면 KGameSetting 모듈은 KGame모듈보다 먼저 언리얼 프로세스에 올라가게 된다.

{
    "FileVersion": 3,
    "EngineAssociation": "4.22",
    "Category": "",
    "Description": "",
  "Modules": [
    {
      "Name": "KGameSetting",
      "Type": "Runtime",
      "LoadingPhase": "PreDefault",
      "AdditionalDependencies": [
        "CoreUObject"
      ]
    },
    {
      "Name": "KGame",
      "Type": "Runtime",
      "LoadingPhase": "Default",
      "AdditionalDependencies": [
        "Engine",
        "UMG",
        //"KGameSetting"
      ]
    }
  ]
}

이제 신규 클래스를 만들떄 에디터를 학인 할수 있다

+ Recent posts