在默认的情况下,unreal中创建的plugin还是项目中,基本都是只有一个module,但是有时候我们不可能吧什么都放在一个module中!所以就有了对多module的需求
在已有的plugin中, XXX.uplugin文件添加
"Modules": [
...
{
"Name": "名称",
"Type": "Editor",
"LoadingPhase": "Default"
}
]
如果是项目工程的话,就在XXXX.uproject
中添加以上形式的代码。
- 创建build.cs
在plugin或者在项目工程的Source
目录下,创建和module同名的目录(我这里使用的是MyEditorTools)!
plugin类似!
在该目录下创建{module名称}.Build.cs
(MyEditorTools.Build.cs)
内容基本如下,可以自行考虑修改
public class MyEditorTools : ModuleRules
{
public MyEditorTools(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" });
PrivateDependencyModuleNames.AddRange(new string[] { });
PublicIncludePaths.Add(ModuleDirectory);
// 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
}
}
- 创建Module的类文件
在Source/{module名称}
里创建两个文件
- {module名称}.h
- {module名称}.cpp
头文件简单如下
class FMyEditorTools : public IModuleInterface
{
public:
virtual void StartupModule() override;
virtual void ShutdownModule() override;
};
自行更换名称即可
实现的cpp里
#define LOCTEXT_NAMESPACE "FMyEditorTools"
void FMyEditorTools::StartupModule()
{
IModuleInterface::StartupModule();
}
void FMyEditorTools::ShutdownModule()
{
IModuleInterface::ShutdownModule();
}
#undef LOCTEXT_NAMESPACE
IMPLEMENT_MODULE(FMyEditorTools, MyEditorTools)
有时候有些人(我自己),为了方便,基本都是从现有的模块中拷贝这几个文件的,然后发现项目工程的Module类文件中只有一句
IMPLEMENT_PRIMARY_GAME_MODULE( FDefaultGameModuleImpl, UnrealGameDemo, "UnrealGameDemo" );
这是ue已经提供的一套入口模板,使用的注册方法不同的,需要注意一下!
PREVIOUSunreal自定义资产导入
NEXT自建简单解释器