본문 바로가기
Unreal Engine4 or 5/코드

언리얼 엔진 C++ 에서의 모듈 추가

by 눈야옹 2018. 12. 31.

모듈의 제작 규칙

1.     모듈의 이름과 동일한 폴더

2.     모듈의 빌드 규칙 파일 : 모듈이름.Build.cs 

3.     프리컴파일드 헤더와 소스파일 : 모듈이름.h , 모듈이름.cpp

 

과정: 

Characters 모듈 추가

1. 

Characters

폴더생성-> 폴더명과 같은 cpp 와 h, build.cs  파일 생성

 

 

1-1. h에 아래와 같이 코드 추가

 

 

 

1
2
3
4
5
// Fill out your copyright notice in the Description page of Project Settings.
 
#pragma once
 
#include "Engine.h"
cs

 

 

 

 

1-2. cpp에 아래와 같이 추가

1
2
3
#include "Characters.h"
 
IMPLEMENT_MODULE(FDefaultModuleImpl, Characters);
cs

 

1-3 Build.cs에 코드 추가

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// Fill out your copyright notice in the Description page of Project Settings.
 
using UnrealBuildTool;
 
public class Characters : ModuleRules
{
    public Characters(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
    }
}
 
cs

 

2. 프로젝트 target.cs파일 과 프로젝트Editor.target.cs파일 두곳에 모듈을 추가해 준다.

(여기서 엔진 버젼마다 조금씩 다를 수 있다.)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Fill out your copyright notice in the Description page of Project Settings.
 
using UnrealBuildTool;
using System.Collections.Generic;
 
public class ArenaBattleTarget : TargetRules
{
    public ArenaBattleTarget(TargetInfo Target) : base(Target)
    {
        Type = TargetType.Game;
 
        ExtraModuleNames.AddRange( new string[] { "ArenaBattle""WebService","Characters"  } );
    }
}
cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Fill out your copyright notice in the Description page of Project Settings.
 
using UnrealBuildTool;
using System.Collections.Generic;
 
public class ArenaBattleEditorTarget : TargetRules
{
    public ArenaBattleEditorTarget(TargetInfo Target) : base(Target)
    {
        Type = TargetType.Editor;
 
        ExtraModuleNames.AddRange( new string[] { "ArenaBattle""WebService", "Characters" } );
    }
}
cs

 

3. uproject 파일을 메모장으로 열어 Name과 Type를 추가해 주자.

 

4. 비쥬얼 스튜디오에서 솔루션 빌드 이후에 uproject파일을 우클릭하여 "Generate Visual Studio {roject Files"을  실행하자.

 

5. Visual Studio에서는 추가되어있다. 하지만

 

6. 엔진에서는 아직 추가되어있지 않다. 여기서 새로만든 모듈에 C++ 클래스를 새로 추가하면 모듈이 보일것이다.

그리고 Visual Studio를 닫고 클래스 생성을 할 경우 성공 할수도 있지만 실패 메세지가 뜨기도 한다.

메세지를 닫고 솔루션 빌드를 다시 한다.

(만약 저장 메세지가 뜨면 덮어쓰기를 한다.) 

 

 

 

7. 이제 에디터를 다시 실행하면(리빌드를 하기도 한다) 만들었던 파일이 추가되어있다.

 

 

*추가: UE4 엔진에 있는 C++ 정리 방식으로 정리해 둔다.

 

 

 

 

출처: http://blog.dustinlee.me/220934079863