UE4创建自定义Module

 

        任何一名C++程序员,一定被C++的项目配置所困扰过。你需要添 加头文件目录、lib目录等。还需要对Debug模式、Release模式下不同的 包含做出控制。这是相当复杂的一个问题。更不用说对于虚幻引擎来 说,需要的编译模式远远不止这么几种。在编辑器模式下,有些类会被 引入,在最终发布的游戏中,这些类又完全不再需要,如何处理这样的 问题呢? 在虚幻引擎3的时代,使用MakeFile来模拟模块,而到了虚幻引擎4 的时代,为了彻底解决这样的问题,虚幻引擎借助UnrealBuildTool引入 了模块机制 [1] 。 仔细观察虚幻引擎的源码目录,会发现其按照四大部分: Runtime、Development、Editor、Plugin来进行规划,而每个部分内部, 则包含了一个一个的小文件夹。每个文件夹即对应一个模块。 一个模块文件夹中应该包含这些内容。 Public文件夹 Private文件夹 .build.cs文件 模块的划分是一门艺术。你需要知道的是,不同模块之间的互相调 用并不是很方便。只有通过XXXX_API宏暴露的类和成员函数才能够被 其他模块访问。因此,模块系统也让你从一开始就对自己的类进行精心 的设计,以免出现复杂的类与类依赖。(引用自《大象无形:虚幻引擎程序设计浅析》)

        如果创建自定义的模块:

        1.首先要在Source文件夹下手动创建新的模块文件,目录如下:

--Source

    --MyModule

        --Public

            --FMyModule.h

        --Private

            --FMyModule.cpp

            --FMyModulePrivatePCH.h

        --MyModule.Build.cs

       2.在vs2017中添加筛选器,目录结构和上图目录结构相同,如下图:

          UE4创建自定义Module_第1张图片

         然后在VS中依次添加现有项到对应的筛选器下面。(如果没有添加筛选器,是因为显示所有文件的形式展示项目的,点击 项目->显示所有文件 即可)

        3.接下来在对应文件键入内容:

        // FMyModule.h

// FMyModule.h

#pragma once
#include "ModuleManager.h"

class FMyModule : public IModuleInterface
{
	/* This will get called when the editor loads the module */
	virtual void StartupModule() override;

	/* This will get called when the editor unloads the module */
	virtual void ShutdownModule() override;
};

  // FMyModule.cpp

// FMyModule.cpp

#include "..\Public\FMyModule.h"
#include "FMyModulePrivatePCH.h"
void FMyModule::StartupModule()
{
}

void FMyModule::ShutdownModule()
{
}

IMPLEMENT_MODULE(FMyModule, MyModule);

//MyModule.Build.cs

//MyModule.Build.cs

using UnrealBuildTool;

public class MyModule : ModuleRules
{
    public MyModule(ReadOnlyTargetRules Target) : base(Target)
    {
        PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" });

        PublicIncludePaths.AddRange(new string[] { "MyModule/Public" });

        PrivateIncludePaths.AddRange(new string[] { "MyModule/Private" });
    }
}

        4.接下来在项目工程的 项目名称.Target.cs 文件和 项目名称Editor.Target.cs两个文件里面添加新加的模块

UE4创建自定义Module_第2张图片

        模块名字是 MyModule。 而.h文件和cpp文件是FMyModule。需要在FMyModule.cpp里面使用

IMPLEMENT_MODULE(FMyModule, MyModule);宏对应上。FMyModulePrivatePCH.h内容可以为空。

        5.关闭Unreal引擎,在vs2017里面重新编译项目。

        6.编译成功之后重新打开Unreal引擎,此时会提示Rebuild对话框,如果在build的过程中失败了,打不开此项目了,说明添加的模块语法有问题。需要修正之后重新编译然后再打开Unreal引擎,正常情况下再打开Unreal引擎build对话框点击 是。 是没有问题的。

       7.之后在新module下创建AActor有新加的module选项了。如下图。

UE4创建自定义Module_第3张图片

你可能感兴趣的:(UE4)