可以把开发中通用的功能封装成模块,以在不同项目之间复用,这里记录一下创建模块的步骤:
在工程的Source文件夹中新建文件夹,命名为模块名称TestCustomModule:
![](https://i-blog.csdnimg.cn/blog_migrate/e8c5528577a07f51de7f599809094afd.png)
如果要区分模块内脚本的公私有权限,则在模块文件夹内创建Public和Private文件夹,这里我没有区分,就不创建了:
![](https://i-blog.csdnimg.cn/blog_migrate/18cdbe66f661540c659411c91bfdcc16.png)
在模块文件夹中创建"模块名.Build.cs"构建脚本,内容如下:
![](https://i-blog.csdnimg.cn/blog_migrate/615500fa1a8a985b280aa3453555a812.png)
using UnrealBuildTool;
public class TestCustomModule : ModuleRules
{
public TestCustomModule(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
PublicDependencyModuleNames.AddRange(new string[] {"Core", "CoreUObject", "Engine"});
PrivateDependencyModuleNames.AddRange(new string[] {});
// PublicIncludePaths.AddRange(new string[] {"HelloModule/Public"});
// PrivateIncludePaths.AddRange(new string[] {"HelloModule/Private"});
}
}
如果不区分公私有权限,则PublicIncludePaths和PrivateIcludePaths可以注销.
创建"模块名.h"和"模块名.cpp":
#pragma once
#include "CoreMinimal.h"
#include "Modules/ModuleInterface.h"
class PrintModule:public IModuleInterface
{
protected:
virtual void StartupModule() override;
virtual void ShutdownModule() override;
};
#include "TestCustomModule.h"
void TestCustomModule::StartupModule () {
}
void TestCustomModule::ShutdownModule () {
}
IMPLEMENT_MODULE(TestCustomModule, TestCustomModule);
这里实现两个函数,分别是模块启用和结束时的回调。IMPLEMENT_MODULE传入模块名。
在工程的Target.cs和Editor.Target.cs脚本中引入模块:
![](https://i-blog.csdnimg.cn/blog_migrate/1a4bec4311139a0c8c739af46b12bd54.png)
![](https://i-blog.csdnimg.cn/blog_migrate/733f0b947550a8ce6ab38fd7c4e89bd9.png)
在工程的uproject中引入模块:
![](https://i-blog.csdnimg.cn/blog_migrate/46588920242207f91f18977a6eff88e8.png)
重新生成Solution:
![](https://i-blog.csdnimg.cn/blog_migrate/951ba30ced12e98311cf2aacd216e711.png)
编译Solution:
![](https://i-blog.csdnimg.cn/blog_migrate/c04ee6f23dc36957e38afd2c0207d377.png)
在工程的build脚本中引入我们的自定义模块:
![](https://i-blog.csdnimg.cn/blog_migrate/974d913f9ffd4921048e9d8890fbaedd.png)
这样我们就能在虚幻中使用我们的自定义模块了,真是方便快捷!
![](https://i-blog.csdnimg.cn/blog_migrate/c563b0c0d6e5340038096ff7c9813078.png)