项目中增加下面的代码(示例):
void UCollisionComponent::Update()
{
...
// 获取玩家位置
TArray<FVector> PlayerLocations;
UMySubsystem* pMySubsystem = UGameplayStatics::GetGameInstance(GetWorld())
->GetSubsystem<UMySubsystem>();
if (pMySubsystem)
{
pMySubsystem->GetPlayerLocations(PlayerLocations);
}
...
}
VS2022编译通过,启动时UE会弹出错误框:
游戏模块"xxxx"无法被加载。可能存在操作系统错误,模块可能未正确设置,
或版本中包含的插件尚未开启。
开始以为是其他哪里的原因,一通折腾,无效。
后来想到是编码之后才出现的问题,于是尝试屏蔽上面新增的代码段,启动,正确进入UE界面。
猜测:上面的代码,是在模块代码内,去获取另一个模块。
UE工具如果无法确定这两个模块之间的依赖关系,就有可能直接报错,尽管编译通过。
有点像“语法正确,运行错误”。