[Unreal] 이득우의 언리얼 C++ 게임개발의 정석 9

2022. 3. 17. 17:02·Game Programming/Unreal
새로운 모듈 추가

- 모듈 제작을 위한 필요한 요소

    - 모듈 폴더와 빌드 설정 파일 : 모듈 폴더와 모듈명으로 된 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
'Game Programming/Unreal' 카테고리의 다른 글
  • [Unreal] 언리얼 아키텍처
  • Unreal - Zombie FPS Game Portfolio
  • [Unreal] 이득우의 언리얼 C++ 게임개발의 정석 8
  • [Unreal] 이득우의 언리얼 C++ 게임개발의 정석 7
chanheess
chanheess
'왜' 그렇게 했는가?에 대한 생각으로 공부 및 작업의 저장관리
  • chanheess
    왜 그렇게 생각했는가?
    chanheess
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Backend Programming
      • Game Programming
        • Unreal
        • DirectX
      • C++
        • Memo
        • Basic
        • Effective Modern
      • Algorithm
        • Memo
        • Baekjoon
        • Programmers
        • HackerRank, LeetCode
      • Data Structure
      • Design Pattern
      • Etc
        • Memo
        • Daily Log
        • Book
  • 최근 글

  • 최근 댓글

  • 태그

    dfs
    프로그래머스
    dp
    JWT
    Java
    티스토리챌린지
    백준
    오블완
    SpringSecurity
    c++ 기초 플러스
    위클리 챌린지
    JPA
    알고리즘
    spring
  • hELLO· Designed By정상우.v4.10.0
chanheess
[Unreal] 이득우의 언리얼 C++ 게임개발의 정석 9
상단으로

티스토리툴바