如何在自定义 Unreal Engine 模块中#include 插件源文件?

How do I #include plugin source files in my custom Unreal Engine module?

我正在使用 C++ Unreal Engine 项目并创建了我自己的名为 MyActor 的自定义模块,Unreal Engine 自动为我创建了 .cpp 和 .h 文件。这么多似乎工作。

所以现在我想包含 类 或来自 AppleARKit 插件的方法,然后覆盖并从我的自定义 MyActor 模块中调用它们。

首先我尝试使用 #include AppleARKitLiveLinkSourceFactory.h 因为它有我想修改和使用的 IARKitBlendShapePublisher::PublishBlendshapes 方法。

一开始它没有工作,出现这个错误:E1696 Cannot open source file AppleARKitLiveLinkSourceFactory.h,但我发现我可以使用属性下的 "Include Directories" 将它们包含在 Visual Studio 中,如下所示:

AppleARKitLiveLinkSourceFactory.h 位于 Public 文件夹中,但我也包含了 Private 文件夹,我不知道是否需要这样做。起初这似乎有效,但后来对于 AppleARKitLiveLinkSourceFactory.h 文件中的每个依赖项,我都遇到了与以前相同的错误。

我是否必须为整个链中的每个依赖项包含单独的目录?有没有更简单的方法?

当我 运行 解决从插件中包含文件的问题时,在我的例子中是 LidarPointCloud,以下步骤对我有用:

1) 在我的 <project-name>.Build.cs 文件中,我将我希望使用的模块名称 (LidarPointCloudRuntime) 添加到 public 依赖列表

PublicDependencyModuleNames.AddRange(new string[] { "LidarPointCloudRuntime", "Core", "CoreUObject", "Engine", "InputCore" });

我通过打开插件文件夹中的 .uplugin 文件确定了模块名称,并查看了 Modules 部分。如果列出了多个模块名称,您应该选择包含您关心的 类 源的那个。

2) 然后我重建项目,关闭我的编辑器,然后右键单击我的 <project-name>.uproject 文件并重新生成项目文件。

在那之后,我能够在我的代码中访问 .h 文件。

-更新-

似乎 AppleARKitFaceSupport 依赖于可能需要包含的其他插件。例如,ARSystems.h 住在 AugmentedReality。当我将其添加到 PublicDependencyModuleNames 并执行相同的步骤时,它可以找到 ARSystem.h.