# 网络通信
Unreal内部支持网络通信。
在UE4.26,在编辑器中选择PlayAsListenerServer,玩家数大于两个则会将第一个作为服务器,其他作为客户端。
# 网络复制变量
蓝图中的变量有Replication属性,它一共有:
- None:不做操作
- Replicated:该变量会复制,服务器端和客户端都会存在。
- RepNotify:该变量也会复制,且操作该变量时均会执行一个OnRep函数。
一些组件也有Component Replicates属性,勾选了后会在客户端和服务器端间同步。下面是一个示例:
# 网络复制事件
事件也可以同步,在Replicates属性有:
- NotReplicated:不做操作
- Multicast:从服务器广播到客户端
- RunOnServer:只运行在服务器
- RunOnOwningClient:只运行在自己的客户端。
# 网络通信原理
有以下几个常用的方法:
- CreateSession:发生在服务端,创建一个session。
- FindSessions:在客户端查找session。
- DestroySession:在服务端删掉session。
- JoinSession:客户端加入session。
常用的属性有:
- GetCurrentPlayers:获取当前玩家。
- GetMaxPlayers:获取最大玩家数。
- GetServerName:获取服务器名字。
- GetPingInMs:获取ping的数值。
# 网络通信实例
这里用到的资产有:
下面是创建流程:
创建搜索网络Session的主界面:
创建被搜索出来按钮的界面:
创建被打开关卡的GameMode: