联网内容示例

网络功能内容示例图中提供的示例概述。

Windows
MacOS
Linux
On this page

内容示例项目中的 网络_功能 图展示了如何通过蓝图全面实现网络功能。在它的 复制(Replication) 部分中提供了一些重要的示例,包括可以在 Actor 上设置的 Replicates 布尔吗,检测 网络权限 并根据权限执行不同的逻辑,变量复制 的用法及其在Gameplay中如何运用,变量复制中使用 RepNotify 根据对所复制变量进行的更新来执行逻辑,以及使用 函数复制 来处理非关键性Gameplay元素或"一次性"事件。

该图中的其他部分提供了关于 相关性 的见解,以及如何正确处理服务器和客户端之间的往来信息交流。在很多时候,将无论什么信息都从服务器传递到每个客户端并无必要(例如,在地图一端的玩家不需要知道另一个玩家在地图另一端开了一个宝箱的事)。不过在有些情况下,这些信息可能变得对该玩家很重要(例如,该玩家从地图另一端移动到了打开的宝箱旁边),此图中的内容示例就将展示如何处理这类情况,以及如何处理玩家在会话进行时加入的情况。

你可以单击相应表格中的示例名称,来找到关于示例构造的更多资源。

复制

复制(Replication) 部分中的示例展示了在服务器和客户端之间正确交流信息的方法,以及应在何时应用不同的技巧。

示例

展示的内容

1.1 Actor复制

两个Actor的示例,其中一个是复制的,另一个不是(例如,一个Actor在客户端和服务器上都显示,而另一个只在服务器上显示)。

1.2 在蓝图中检测网络权限和远程客户端

根据网络权限执行不同逻辑的蓝图示例(例如,Actor根据在服务器上查看还是在客户端上查看,会有不同的显示)。

1.3 变量复制

将生命值变量从服务器复制到客户端的示例(例如,当服务器更新某个Actor的生命值变量时,在客户端上显示并更新该Actor的生命值)。

1.4 变量复制(RepNotify)

标记为RepNotify的变量在服务器以及客户端上自动更新的示例(例如,街灯使用RepNotify变量来确保客户端和服务器都查看同一物体)。

1.5 函数复制(RPC)

某个复制函数的示例,它用于通报服务器或客户端何时按下某个按钮的信息。

相关性

相关性(Relevancy) 部分中显示的示例展示了如何处理打开宝箱的 网络相关性 并在服务器和客户端之间交流状态。它解决了一个非常普遍的问题,即如何处理某个Actor先是无关、后来又变为相关的情况。这与处理玩家在现有游戏进行过程中加入的问题非常相似。

下面的示例提供了上述问题的可能解决方案,以及这些方案有效或无效的原因。最后一个示例通过运用多种技巧的混合解决方案解决了问题。

示例

展示的内容

2.1 网络相关性——完全不复制

一个相关性示例,在其中使用"不复制"方法(例如,当服务器打开宝箱时,客户端不会看到宝箱被打开)。

2.2 网络相关性——函数复制解决方案尝试

一个相关性示例,在其中使用"函数复制"方法(例如,服务器打开宝箱,客户端不会看到宝箱打开,移动到宝箱附近时也不会看到它打开)。

2.3 网络相关性——变量复制解决方案尝试

一个相关性示例,在其中使用"变量复制"方法(例如,服务器打开宝箱,客户端不会看到宝箱打开,但移动到宝箱附近时会看到它打开。此时还会播放粒子效果,而在这个示例中这是我们不希望看到的,因为宝箱先前已经被另一个玩家打开了)。

2.4 网络相关性——综合解决方案

一个相关性示例,在其中既使用了函数复制来播放与打开宝箱相关的效果,也使用了复制的变量来保存宝箱的状态和它是否已被打开的信息。

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