Language:
Page Info
Engine Version:
Share

1.5 - 函数复制

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) 蓝图事件图(分解为以下几张图)中,您将在第一幅图中看到如何在服务器和客户端上触发重叠事件,而脚本的其余部分仅通过使用 Switch Has Authority(@@@) 节点在服务器上运行。

单击显示全图

按钮按下(Button Pressed)按钮释放(Button Released) 自定义事件被调用时,因为它们被设置为 组播(Multicast),它们将为所有客户端触发,以便每个人都能看到自定义事件之后的脚本,而不仅仅是启动事件的玩家。

单击显示按钮按下事件的全图

单击显示按钮释放事件的全图

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