我在 UE5 游戏中创建了一个名为 MinimapSystem 的模块,其结构如下(位于我游戏的 Source 文件夹中):
MinimapSystem
├───MinimapSystem.Build.cs
├───Private
│ └───MinimapSubsystem.cpp
└───Public
└───MinimapSubsystem.h
这是我的 MinimapSystem.Build.cs 文件的内容:
using UnrealBuildTool;
public class MinimapSystem : ModuleRules
{
public MinimapSystem(ReadOnlyTargetRules Target) : base(Target)
{
PublicDependencyModuleNames.AddRange(new string[]
{
"Core",
"CoreUObject",
"Engine",
"UMG"
});
}
}
这模仿了我在 UE5 核心模块结构中看到的内容,当我包含其中一个模块时,我不需要指定路径的
Public/
部分,即
#include "GeometryCollection/GeometryCollectionActor.h"
所以,在我的游戏中,我用我的模块尝试同样的事情:
#include "MinimapSystem/MinimapSubsystem.h"
但是当我尝试编译时,这会引发致命错误:
致命错误C1083:无法打开包含文件:'MinimapSystem/MinimapSubsystem.h':没有这样的文件或目录
编译游戏的唯一方法是指定
Public/
文件夹,如下所示:
#include "MinimapSystem/Public/MinimapSubsystem.h"
我已将模块添加到 MyGame.Build.cs,如下所示:
PublicDependencyModuleNames.AddRange(new string[]
{
"Core",
"MinimapSystem",
});
如何让我的模块默认公开 Public 文件夹的内容?
解决方案是像这样构建模块:
MinimapSystem
├───MinimapSystem.Build.cs
├───Private
│ └───MinimapSubsystem
│ └───MinimapSubsystem.cpp
└───Public
└───MinimapSubsystem
└───MinimapSubsystem.h
这模拟了 GeometryCollection 模块的实际结构。现在,我可以包含我的模块,例如:
#include "MinimapSystem/MinimapSubsystem.h"