1.5 - 函数复制

概述网络功能示例关卡,示例1.5:函数复制(远程过程调用)。

Choose your operating system:

Windows

macOS

Linux

本页面的内容

1_5.png

为了同时查看 服务器(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) ,因此它们将被所有客户端触发,以便每个人都能看到自定义事件之后的脚本,而不仅仅是启动事件的玩家。

点击查看按钮按下事件大图

点击查看按钮释放事件大图

游戏中的结果是,服务器和客户端都可以查看在按下/释放按钮时触发的事件。

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