1.5 - 函数复制

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

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

单击显示全图

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

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

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

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

欢迎来到全新虚幻引擎4文档站!

我们正在努力开发新功能,包括反馈系统,以便您能对我们的工作作出评价。但它目前还未正式上线。如果您对此页面有任何意见与在使用中遭遇任何问题,请前往文档反馈论坛告知我们。

新系统上线运行后,我们会及时通知您的。

发表反馈意见