1.5 - 函数复制

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

Windows
MacOS
Linux
On this page

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

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

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

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

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback