Choose your operating system:
Windows
macOS
Linux
为了同时查看 服务器(Server) 和 客户端(Client) 视角,在 运行(Play) 下拉菜单中,将 客户端数量(Number of Clients) 字段设置为2。
除了变量之外,还可以复制函数调用。 复制的函数调用(Replicated Function Calls) 可以设置为 可靠(Reliable) 或 不可靠(Unreliable) 。可靠的调用一定可以进行,而不可靠的调用可能会在网络拥堵时被放弃。为了避免网络饱和,大多数用于处理外观视觉效果的复制函数都是不可靠的。
复制函数有三种主要类型: 组播(Multicast) 、 服务器(Server) 和 客户端(Client) 。组播函数应在执行它们的服务器上调用,然后自动发送给客户端。服务器函数由客户端调用,然后仅在服务器上执行。客户端函数由服务器调用,然后仅在拥有它的客户端上执行。
服务器和客户端复制函数还有一个额外的限制,即它们只能用于具有 网络所有者(Net Owner) 的Actor。如果Actor是玩家控制器或为玩家控制器所有,则它们具有网络所有者。示例:玩家控制器拥有的Pawn可以在其上执行服务器或客户端复制的函数。
在本示例中,组播函数处理由按下按钮而触发的外观修饰事件。
蓝图细分
在 BP_按钮_组播(BP_Button_Multicast) 蓝图的事件图表(分为以下几张图)中,你可以在第一张图中看到如何在服务器和客户端上触发重叠事件(Overlap Events),而脚本的其余部分仅通过使用 开关具有权限(Switch Has Authority) 节点在服务器上运行。
点击查看大图
当调用 按钮按下(Button Pressed) 或 按钮释放(Button Released) 自定义事件时,由于它们被设置为 组播(Multicast) ,因此它们将被所有客户端触发,以便每个人都能看到自定义事件之后的脚本,而不仅仅是启动事件的玩家。
点击查看按钮按下事件大图
点击查看按钮释放事件大图
游戏中的结果是,服务器和客户端都可以查看在按下/释放按钮时触发的事件。