为啥 UnrealHeaderTool 在构建 RPC 时会失败
Posted
技术标签:
【中文标题】为啥 UnrealHeaderTool 在构建 RPC 时会失败【英文标题】:Why is UnrealHeaderTool failing when building RPCs为什么 UnrealHeaderTool 在构建 RPC 时会失败 【发布时间】:2021-02-21 20:26:04 【问题描述】:在我的 pawn 头文件中,我试图声明一个 RPC。以下编译正确:
UFUNCTION( ) void ClientSetPosition(FTransform position);
但这并不能编译:
UFUNCTION( Client ) void ClientSetPosition(FTransform position);
我得到以下错误:
UnrealHeaderTool failed for target 'MultiEditor' (platform: Win64, module info: C:\Users\myself\Documents\Unreal Projects\Multi\Intermediate\Build\Win64\MultiEditor\Development\MultiEditor.uhtmanifest, exit code: OtherCompilationError (5)).
The command ""C:\Program Files\Epic Games\UE_4.21\Engine\Build\BatchFiles\Build.bat" MultiEditor Win64 Development "C:\Users\myself\Documents\Unreal Projects\Multi\Multi.uproject" -WaitMutex -FromMsBuild" exited with code 5. Please verify that you have sufficient rights to run this command.
对为什么会出现这种情况有什么想法吗?
【问题讨论】:
【参考方案1】:以下解决了该问题: UFUNCTION(客户端,可靠)
他们必须更新虚幻来需要这个变量。
【讨论】:
始终需要指定可靠/不可靠。 @DevilsD 这不是真的,默认情况下 RPC 过去是不可靠的。事实上,最近确实如此,以至于文档尚未更新。 docs.unrealengine.com/en-US/InteractiveExperiences/Networking/… 如果您的游戏/模拟允许任何类型的插入功能。我会考虑使用代表通知,因为在此 rpc 触发后连接的客户端将永远不会收到它发送的信息(当然这在 100% 的情况下并不重要 - 但只是认为值得指出)。 感谢乔治的提示。如果添加动态复制对象,我会记住这一点。这个特定示例是将客户端控制对象的位置复制到其他客户端。因此它不断发生。以上是关于为啥 UnrealHeaderTool 在构建 RPC 时会失败的主要内容,如果未能解决你的问题,请参考以下文章