You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unreal Engine自定义Runtime模块无法启动,StartupModule未触发

Unreal Engine自定义Runtime模块StartupModule未调用的排查方案

在Engine/Source/Runtime目录下创建了名为MyModule的自定义Runtime模块,编写了MyModule.Build.cs与MyModule.cpp文件,但启动项目时FMyModule::StartupModule()未被触发,可从以下几个方向排查:

1. 缺少模块注册宏

你的MyModule.cpp仅定义了模块类,但未将其注册到Unreal的模块管理器中,这是模块被实例化的必要步骤。需要在cpp文件末尾添加注册宏:

IMPLEMENT_MODULE(FMyModule, MyModule)
#undef LOCTEXT_NAMESPACE

没有这个宏,Unreal无法识别并加载你的模块类,自然不会调用StartupModule。

2. 确认模块是否被项目依赖

Runtime目录下的模块不会默认被所有项目自动加载,必须在目标项目的.Build.cs中显式添加依赖:

PublicDependencyModuleNames.AddRange(new string[] { "MyModule" });

如果需要让该模块被所有引擎项目默认加载,可修改Engine/Source/Runtime/Engine/Engine.Build.cs,将MyModule添加到其依赖列表中,但更推荐项目按需添加依赖。

3. 检查模块加载类型配置

在MyModule.Build.cs中明确指定模块类型与自动激活属性,确保模块被正确标记为自动加载的Runtime模块:

Type = ModuleType.Runtime;
bAutoActivate = true;

默认情况下Runtime模块的bAutoActivate为true,但显式声明可避免潜在的配置异常。

4. 验证模块编译状态

查看编译输出日志,确认MyModule是否成功编译。如果编译过程中出现错误,模块不会被打包到引擎或项目中,自然无法加载。可尝试以下操作:

  • 重新生成项目文件(右键.uproject选择Generate Visual Studio Files)
  • 清理编译缓存(删除Binaries、Intermediate文件夹)
  • 重新编译整个项目或引擎

5. 检查命名一致性

确保以下命名完全一致(Unreal对大小写敏感,跨平台开发时需特别注意):

  • 模块文件夹名称:MyModule
  • MyModule.Build.cs中的类名:MyModule
  • IMPLEMENT_MODULE宏中的第二个参数:MyModule
  • LOCTEXT_NAMESPACE定义的名称:MyModule

内容的提问来源于stack exchange,提问作者LZB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 08:12:58