如何在虚幻引擎中正确使用C++函数?

sou*_*aze 1 c++ unreal-engine4

我尝试通过以下行使用此 ProjectPointToNavigation :

bool navResult = GetWorld()->GetNavigationSystem()->ProjectPointToNavigation(HitResult.Location, NavLocation, TeleportFadeTimeExtent);
Run Code Online (Sandbox Code Playgroud)

但是,该方法ProjectPointToNavigation被此函数弃用

我的问题是,如何重写上面的代码以使用最新的ProjectPointToNavigation功能?

我尝试了以下方法:

 bool navResult = UNavigationSystemV1::ProjectPointToNavigation(HitResult.Location, NavLocation, TeleportFadeTimeExtent);
Run Code Online (Sandbox Code Playgroud)

上面的代码向我显示了以下错误:

“UNaviationSystemV1::ProjectPointToNavigation”对重载函数的不明确调用

抱歉,如果我的问题很简单,我是虚幻引擎的新手,仍在学习其开发(在我的第一阶段)

更新:

我尝试了以下方法(在header课堂上):

UPROPERTY()
class UNavigationSystemV1* NavSystem;
Run Code Online (Sandbox Code Playgroud)

.cpp班上:

bool navResult = NavSystem->ProjectPointToNavigation(HitResult.Location, NavLocation, TeleportFadeTimeExtent);
Run Code Online (Sandbox Code Playgroud)

它仍然不起作用,我收到以下错误:

严重性代码说明项目文件行抑制状态错误 LNK2019 无法解析的外部符号“__declspec(dllimport) public: bool __cdecl UNavigationSystemV1::ProjectPointToNavigation(struct FVector const &,struct FNavLocation &,struct FVector const &,struct FNavAgentProperties const *,class TSharedPtr)” (__imp_?ProjectPointToNavigation@UNaviationSystemV1@@QEAA_NAEBUFVector@@AEAUFNavLocation@@0PEBUFNavAgentProperties@@V?$TSharedPtr@$$CBUFNavigationQueryFilter@@$00@@@Z) 在函数“private: void __cdecl AVRCharacter::UpdateDestinationMarker(void)”中引用 ( ?UpdateDestinationMarker@AVRCharacter@@AEAAXXZ) 资源管理器 E:\Unreal Projects\Explorer\Intermediate\ProjectFiles\VRCharacter.cpp.obj 1

任何指导将不胜感激

Rab*_*Rab 5

在你的<Project Name>.Build.cs文件中,PublicDependencyModuleNames应该已经NavigationSystem添加了。这将纠正您的链接器错误。

关于访问导航系统指针本身,即使您的代码可以工作,它也会崩溃,因为当您访问它时NavSystem它将为空。

相反,调用以下命令来获取指向新导航系统和项目的指针:

const UNavigationSystemV1* navSystem = NavigationSystem::GetCurrent<UNavigationSystemV1>(this);
bool navResult = navSystem->ProjectPointToNavigation(HitResult.Location, 
  NavLocation, TeleportFadeTimeExtent);
Run Code Online (Sandbox Code Playgroud)

您需要将#include "NavigationSystem.h"其置于实施文件的顶部。