Choose your operating system:
Windows
macOS
Linux
本页面的内容
为了能够从 服务器 和 客户端 两个视角进行查看,请在 运行(Play) 下拉菜单中将 客户端数量(Number of Clients) 字段设置为2。
示例2.2之所以不可行,原因在于在执行之后,复制的组播函数无法保留宝箱状态。在这种情况下,自然会想到尝试改用复制的变量来解决这一问题。
在本示例中,我们使用了 RepNotify 布尔值来保存宝箱打开与否这一状态。我们再次让客户端位于蓝圈以外,并让服务器激活宝箱。那么,如果让客户端立即进入蓝圈会发生什么呢?从客户端将能够看到宝箱打开,而且也会看到播放金色效果,尽管服务器在片刻之前就已经播放了效果!
当宝箱再次与客户端相关时,客户端将这一变化传递给复制的变量,相应的RepNotify函数将被调用。不过,客户端无法知道变量实际上在过去就变化了。客户端只知道变量确实变化了,而无法处理这一特定情况。
蓝图详细介绍
在 BP_Relevancy_Replication_RepNotify 蓝图的事件图表中,如下图注释部分所示,我们对OnChestTouch进行了重载,以设置RepNotify变量,它的OnRep函数负责处理宝箱打开的视觉效果。
以下是当 bChestOpened 变量更新时被调用的OnRep函数。
点击查看大图
尽管这种方法确实可以使客户端在宝箱变得相关时获取更新后的值,但这也意味着即使服务器端早就完成了效果播放,客户端仍将播放金色粒子效果,这也不是我们想要的结果。