새로운 모듈 추가
- 모듈 제작을 위한 필요한 요소
- 모듈 폴더와 빌드 설정 파일 : 모듈 폴더와 모듈명으로 된 Build.cs 파일
- 모듈의 정의 파일 : 모듈명으로 된 .cpp 파일
- TestEditor.Target.cs와 Test.Target.cs에 TestSetting을 추가해준다.
- 새로운 DLL파일이 생성됐다면 언리얼 에디터가 이 DLL파일을 로딩하도록 명령해준다.
- Test.uproject에서 새로운 모듈에 대한 정보를 기입해야 하는데 새로운 모듈을 다른 모듈보다 먼저 로딩하도록 LoadingPhase 값을 "PreDefault"로 설정하고 Test모듈이 TestSetting 모듈에 대해 의존성을 가지도록 설정한다.
INI 설정과 애셋의 지연 로딩
#pragma once
#include "CoreMinimal.h"
#include "UObject/NoExportTypes.h"
#include "MyCharacterSetting.generated.h"
UCLASS(config=Test)
class TESTSETTING_API UMyCharacterSetting : public UObject
{
GENERATED_BODY()
public:
UMyCharacterSetting();
UPROPERTY(config)
TArray<FSoftObjectPath> CharacterAssets;
};
- 언리얼 오브젝트를 초기화할 때 해당 속성의 값을 INI파일에서 읽어 설정하기 :
언리얼 오브젝트가 기본값을 INI 파일에서 불러들이려면 UCLASS 매크로에 config 키워드를 추가해 여기에 불러들일 INI 파일의 이름을 지정하고, 불러들일 PROPERTY속성에는 config 키워드를 선언해야 한다.
- UCLASS 매크로 내 config 키워드에 있는 Test이라는 설정으로 인해, 언리얼 엔진은 초기화 단계에서 Config 폴더에 위치한 DefaultTest.ini 파일을 읽어들여 MyCharacterSetting의 CharacterAssets 값을 설정한다.
// Copyright Epic Games, Inc. All Rights Reserved.
using UnrealBuildTool;
public class Test : ModuleRules
{
public Test(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "UMG", "NavigationSystem", "AIModule", "GameplayTasks" });
PrivateDependencyModuleNames.AddRange(new string[] { "TestSetting" });
// 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
}
}
- 이렇게 메모리에 올라간 클래스 기본 객체는 GetDefault 함수를 사용해 가져올 수 있다.
- Private 폴더에서만 TestSetting 모듈을 사용할 예정이므로 PrivateDependencyModule 항목에 이를 추가한다.
'Game Programming > Unreal' 카테고리의 다른 글
[Unreal] 언리얼 아키텍처 (0) | 2022.06.04 |
---|---|
Unreal - Zombie FPS Game Portfolio (0) | 2022.05.06 |
[Unreal] 이득우의 언리얼 C++ 게임개발의 정석 8 (0) | 2022.03.16 |
[Unreal] 이득우의 언리얼 C++ 게임개발의 정석 7 (0) | 2022.03.15 |
[Unreal] 이득우의 언리얼 C++ 게임개발의 정석 6 (0) | 2022.03.11 |