jeecgboot修改模块名_【教程】UE4中创建自定义模块

637d8b18cb54c9723a12cb0678b95172.png

后续文章更新移步→微信公众号“虚幻社区”(mantra-xhsq),您的支持是我创作的动力。

在UE4中,有一个非常重要的概念:模块(有时或者说大多数时候会被成为“Plugin”,但其实个人感觉模块更合适)。模块是一些功能相关类的集合,在读完本片文章之后你可以继续阅读关于UE4中多模块组织的更多知识,请参考官方文档。

参考文章(英语好的朋友可以直接跳转,但是原文章使用4.15版本制作,新版本需要进一步修改,可参见本文的后半部分)

注意:前半部分是按照4.15版本,如果您使用的是后续更新的版本(如4.19及以上)请看完,里面有一些需要注意的地方。

一、4.15版本的步骤(4.19通用,但是需要进一步操作)

想要创建一个自定义模块,需要一下几步:

1)修改.uproject文件添加自定义模块

2)创建自定义模块相关的文件和文件夹,如.Build.cs、Public和Private文件夹

3)创建模块类

  • 修改.uproject文件添加自定义模块

找到工程的.uproject文件右击使用文本编辑器打开,此处推荐使用VSCode,无论格式还是自动补全都支持比较好。

默认情况下只有工程自带的模块,我们需要在大括号下面添加逗号,之后用另外一个大括号包含我们自定义的模块。这里我添加了一个Runtime的模块,名称为MantraModule,下面截图是完整版的.uproject文件。

fe2f3f609813f87ce8060e8e9c770ea1.png

接下来我们会创建模块相关的文件。

  • 创建自定义模块相关的文件和文件夹

定位到工程目录,在Source文件夹下创建一个新文件夹,名称于我们的模块名保持一致,此处我们命名为MantraModule。(如果你创建的是蓝图的模板,那么没有Source文件夹,可以借助File>New C++ Class,等系统编译完成之后会自动添加Source文件夹)文件夹内部添加如下文件:

  • 添加一个名称为Public的文件夹(用于存储.h文件)
  • 添加一个名称为Private的文件夹(用于存储.cpp文件)
  • 添加一个cs文件,命名方式有一定的规则:YourModuleName.Build.cs,此处我们的文件名为MantraModule.Build.cs。

详情见下图

75f4be34920d90890422fd4ffc4f7353.png

打开.cs文件并添加如下代码:

using 

注意:需要根据你的模块名和工程名进行适当的修改。

  • 创建模块类

最后一步操作是需要创建一个模块类(类名和模块名一摸一样,此处为MantraModule.h和MantraModule.cpp)用来处理模块的加载(StartupModule)和卸载(ShutdownModule),主要是借助一个接口IModuleInterface。

下面是我们完整的.h文件,将之保存在我们之前创建的Public文件夹中。

#pragma once

接下来创建对应的.cpp文件,并保存到Private文件夹中

#include "MantraModule.h"

DEFINE_LOG_CATEGORY(MantraModule);

#define LOCTEXT_NAMESPACE "FMantraModule"

void FMantraModule::StartupModule()
{
	UE_LOG(MantraModule, Warning, TEXT("Mantra module has started!"));
}

void FMantraModule::ShutdownModule()
{
	UE_LOG(MantraModule, Warning, TEXT("Mantra module has shut down"));
}

#undef LOCTEXT_NAMESPACE

IMPLEMENT_MODULE(FMantraModule, MantraModule)

此处我们实现了.h文件中声明的两个方法,并且自定义了一个Log Category,并在加载和下载模块时打印一条输出语句,主要用于测试,你也可以在这两个方法中自定义加载和卸载模块需要执行的操作。

做完上面这些操作之后,找到.uproject文件,右键执行Generate Visual Studio Project Files。之后可以正常的打开工程。工程加载完毕可以在Output Log(Window>Developer Tools>Output Log)中找到我们在StartupModule中的打印输出。

faedfe442f0841fbfa8626c8d4771474.png

对于ShutdownModule中的输出,我们只能关闭工程(模块默认是关闭工程之后才卸载)才能查看。找到ProjectName/Saved/Logs中最后一个Log文件,可以查看输出。同时还可以看到其他模块的卸载,如EmptyModule、RuntimePhysicsXCooking和OculusEditor等等。

5c94f84bafcd83b259ba89658b964e9a.png

整体上的层级结构如下图所示

5effcb7c53420738fdf864b1ecdf5a5b.png

所有的一切貌似很OK,但是很不幸,如果你使用的是新版本,如4.19。想死的心都有啦。各种编译失败,各种打不开。如果是这样,那么请继续往下看。

二、UE4新版本中需要做的操作

对于UE4新版本,我们还需要进一步操作,否则编译失败。

找到ProjectName.Target.cs和ProjectNameEditor.Target.cs(此处我们的名称分别为EmptyModule.Target.cs和EmptyModuleEditor.Target.cs),这两个文件主要控制我们需要加载的模块,在其中的ExtraModuleName中添加我们自定义的模块,具体操作见下面的代码

EmptyModule.Target.cs

using UnrealBuildTool;
using System.Collections.Generic;

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

		ExtraModuleNames.AddRange( new string[] { "EmptyModule", "MantraModule" } );
	}
}

EmptyModuleEditor.Target.cs

using UnrealBuildTool;
using System.Collections.Generic;

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

		ExtraModuleNames.AddRange( new string[] { "EmptyModule", "MantraModule" } );
	}
}

修改完这些之后,在重新生成工程文件,然后就应该看到我们执行的结果啦。

这是我们手动创建一个自定义模块需要的步骤,后面我们会为大家讲解如何使用Plugin Manager自动创建这些文件。

后续文章更新移步→微信公众号“虚幻社区”(mantra-xhsq),您的支持是我创作的动力。

欢迎大家加群讨论:源尚草学院虚幻社区 524418526(一群已满)790066685(请加二群)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值