2.3 - 网络相关性[第3部分 - 变量复制解决方案尝试]

网络功能示例关卡概述,示例2.3:网络相关性(第3部分 - 变量复制解决方案尝试)。

Windows
MacOS
Linux
本页面的内容

2_3.png

为了能够从 服务器客户端 两个视角进行查看,请在 运行(Play) 下拉菜单中将 客户端数量(Number of Clients) 字段设置为2。

示例2.2之所以不可行,原因在于在执行之后,复制的组播函数无法处理宝箱状态保留。在这种情况下,尝试改用复制的变量来解决这一问题可能就成为意料之中的解决方案。

在本示例中,我们使用了 RepNotify 布尔来保存宝箱打开与否这一状态。再次让客户端位于蓝圈以外并让服务器激活宝箱。那么如果让客户端随后立即进入蓝圈会发生什么呢?从客户端将能够看到宝箱打开,而且也会看到金色效果播放,尽管服务器端片刻之前就已播放了效果!

当宝箱再次变得与客户端相关时,客户端将这一变化传递给复制的变量,相应的RepNotify函数将被调用。遗憾的是,客户端无法知道变量实际上在过去就变化了,客户端只知道变量确实变化了,而这不足以处理这一特定情况。

蓝图详细介绍

BP_Relevancy_Replication_RepNotify 蓝图的事件图表中,如下图注释部分所示,我们对OnChestTouch进行了覆盖,以设置RepNotify变量,它的OnRep函数负责处理宝箱打开视觉效果。

2_3_Eventgraph.png

以下是当 bChestOpened 变量被更新时被调用的OnRep函数。

单击查看大图

尽管这种方法确实可以使客户端在宝箱变得相关时获取更新后的值,但这也意味着即使服务器端早就完成了效果播放,客户端仍将播放金色粒子效果,这也不是我们想要的结果。

Select Skin
Light
Dark

欢迎来到全新虚幻引擎4文档站!

我们正在努力开发新功能,包括反馈系统,以便您能对我们的工作作出评价。但它目前还未正式上线。如果您对此页面有任何意见与在使用中遭遇任何问题,请前往文档反馈论坛告知我们。

新系统上线运行后,我们会及时通知您的。

发表反馈意见