I create a new module in directory Engine/Source/Runtime/MyModule, and create MyModule.Build.cs, MyModule.cpp.
In MyModule.Build.cs, I write:
using UnrealBuildTool;
public class MyModule: ModuleRules
{
public MyModule(ReadOnlyTargetRules Target) : base(Target)
{
bUseUnity = false;
PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs;
PublicDependencyModuleNames.AddRange(
new string[]
{
"Core",
"Eigen",
}
);
PrivateDependencyModuleNames.AddRange(
new string[]
{
}
);
DynamicallyLoadedModuleNames.AddRange(
new string[]
{
// ... add any modules that your module loads dynamically here ...
}
);
PrivateDefinitions.AddRange(
new string[]
{
}
);
UnsafeTypeCastWarningLevel = WarningLevel.Off;
ShadowVariableWarningLevel = WarningLevel.Off;
CppStandard = CppStandardVersion.Cpp17;
}
}
And in MyModule.cpp, I write:
#include "Modules/ModuleInterface.h"
#include "Modules/ModuleManager.h"
#define LOCTEXT_NAMESPACE "MyModule"
class FMyModule: public IModuleInterface
{
public:
FMyModule()
{
}
// IModuleInterface interface
virtual void StartupModule() override
{
// Do something
}
virtual void ShutdownModule() override
{
}
};
In my understanding, the modules in Engine/Source/Runtime are loaded defaultly, but it seems that, when I open an project, the FMyModule::StartupModule() is not called.