upluginmanifest

项目打包时会根据项目启用的插件生成一个 PROJECT_NAME.upluginmanifest 文件,其中记录了每个启用的插件的 uplugin 的路径和内容信息,该文件也会打包到 pak 中。

Mount Point 为:../../../PROJECT_NAME/Plugins/PROJECT_NAME.upluginmanifest

在 Editor 下运行时不会读取这个文件,通过扫描引擎和项目以及 Mods 目录下的 Plugin 目录来查找插件的,相关的逻辑在 Runtime/Projects/Private/PluginManager.cppReadAllPlugins函数中。

1
2
3
4
5
6
#if !WITH_EDITOR
if (Project != nullptr)
{
FindPluginManifestsInDirectory(*FPaths::ProjectPluginsDir(), ManifestFileNames);
}
#endif // !WITH_EDITOR

在非 Editor 下通过加载 upluginmanifest 文件来确定当前工程中有哪些插件的(upluginmanifest 文件可以有多个,只要放在 ../../../PROJECT_NAME/Plugins 目录下即可),如果一个插件在基础包中不存在,但是热更时新建了一个 Content Only 插件打包资源,需要把该插件添加至 upluginmanifest 中并且也需要把该插件的 uplugin 打包至 pak 中。

upluginmanifest 文件在 AutomationTool 中被创建,在 CopyBuildToStagingDirectory.Automation.cs 中有 CreatePluginManifest 函数。