项目中增加下面的代码(示例):

void UCollisionComponent::Update()
{
            ...
            // 获取玩家位置
            TArray<FVector> PlayerLocations;
            UMySubsystem* pMySubsystem = UGameplayStatics::GetGameInstance(GetWorld())
                               ->GetSubsystem<UMySubsystem>();
            if (pMySubsystem)
            {
                    pMySubsystem->GetPlayerLocations(PlayerLocations);
             }
            ...
}

VS2022编译通过,启动时UE会弹出错误框:

游戏模块"xxxx"无法被加载。可能存在操作系统错误,模块可能未正确设置,

或版本中包含的插件尚未开启。

开始以为是其他哪里的原因,一通折腾,无效。

后来想到是编码之后才出现的问题,于是尝试屏蔽上面新增的代码段,启动,正确进入UE界面。

猜测:上面的代码,是在模块代码内,去获取另一个模块。

UE工具如果无法确定这两个模块之间的依赖关系,就有可能直接报错,尽管编译通过。

有点像“语法正确,运行错误”。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐