2.2 - 网络相关性[第2部分 - 函数复制解决方案尝试]

网络功能示例关卡概述,示例2.2:网络相关性(第2部分 - 函数复制解决方案尝试)。

Windows
MacOS
Linux
本页面的内容

2_2.png

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

在本示例中,我们尝试使用复制的组播函数,通过网络传递宝箱的行为。我们的想法是,当有玩家与宝箱交互时会调用组播,它将播放所有客户端上的打开宝箱的视觉效果。

但是,为了展示相关性问题,我们对宝箱进行了修改,在距离非常近时设置为网络不相关。只要客户端位于蓝圈外,宝箱就与客户端不相关,哪怕它是可见的。现在,我们让服务器靠近宝箱来激活它,然后观察客户端上会发生什么。在客户端上根本看不到任何变化!这在意料之中,因为宝箱仍与客户端不相关。将客户端移到蓝圈内,这样可以使宝箱与客户端相关。现在情况如何呢?在客户端上仍然看不到任何变化,这并不是我们想要的结果。

该解决方案存在的问题在于:与更新宝箱相关的所有操作都是通过复制的函数发送的。客户端没有接收到对相关性进行的函数调用,从而未执行任何打开宝箱的操作。

蓝图详细介绍

BP_Relevancy_Replication_RPC 蓝图的事件图表中,你可以看到这个蓝图继承自示例2.1中的蓝图,但是我们对它进行了一些修改(针对本示例,我们也生成了一个圆圈,以展示相关性距离)。首先,OnChestTouched函数将被重载,并调用新 宝箱触摸组播(Chest Touch Multicast) 事件。宝箱触摸组播(Chest Touch Multicast) 事件在服务器上被调用,由于该事件设置为 组播(Multicast),服务器会将该事件复制到所有远程计算机上。

点击查看大图

然后,宝箱触摸组播(Chest Touch Multicast) 事件本身将执行来自父蓝图的 打开宝箱(Open Chest)播放金色特效(Play Gold FX) 函数,它们分别处理宝箱打开和关联效果的播放。

但是如下图中所示,如果宝箱不相关,客户端将不执行这部分脚本。

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