我试图通过以下行使用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"
。