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

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

Windows
MacOS
Linux
On this page

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

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback