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
任何指导将不胜感激
在你的<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"其置于实施文件的顶部。