ProjectPointToNavigation

ProjectPointToNavigation

我试图通过以下行使用this ProjectPointToNavigation

bool navResult = GetWorld()->GetNavigationSystem()->ProjectPointToNavigation(HitResult.Location, NavLocation, TeleportFadeTimeExtent);


但是,方法ProjectPointToNavigation已弃用with this function

我的问题是,如何重新编写上述代码以使用最新的ProjectPointToNavigation函数?

我尝试了以下方法:

 bool navResult = UNavigationSystemV1::ProjectPointToNavigation(HitResult.Location, NavLocation, TeleportFadeTimeExtent);


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


  'UNavigationSystemV1 :: ProjectPointToNavigation'对重载函数的歧义调用


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

更新:

我尝试了以下内容(在header类中):

UPROPERTY()
class UNavigationSystemV1* NavSystem;


.cpp类中:

bool navResult = NavSystem->ProjectPointToNavigation(HitResult.Location, NavLocation, TeleportFadeTimeExtent);


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


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


任何指导将不胜感激

最佳答案

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

关于访问导航系统指针本身,即使您得到了可以运行的代码,它也会崩溃,因为访问NavSystem时它将为null。

而是调用以下命令以获取指向新导航系统和项目的指针:

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


您需要在实现文件的顶部#include "NavigationSystem.h"

09-13 02:05