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

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

Choose your operating system:

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函数。

点击查看大图

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

欢迎帮助改进虚幻引擎文档!请告诉我们该如何更好地为您服务。
填写问卷调查
取消