NetworkServer 使用 NetworkServerSimple 实现基本网络功能,并增加了更多类似游戏的功能。
NetworkServer 通过 NetworkServerSimple 实例处理来自远程客户端的远程连接,并且拥有针对本地客户端的本地连接。
NetworkServer 是一个单例。它提供静态的便捷函数,例如 NetworkServer.SendToAll() 和 NetworkServer.Spawn(),这些函数自动使用单例实例。
NetworkServer 可以与 NetworkManager 结合使用,但也可以独立使用。
生成的联网对象集由 NetworkServer 管理。NetworkServer.Spawn() 生成对象并将其添加到该集合中,并在客户端上创建这些对象。生成的对象被销毁时,系统会自动将其删除,或者,也可以通过调用 NetworkServer.UnSpawn() 从生成的对象集中将其删除,但这不会销毁这些对象。
NetworkServer 会使用许多内部消息,这些消息是在调用 NetworkServer.Listen() 时设置的。
active | 检查服务器是否已启动。 |
connections | 与客户端的所有当前连接的列表。 |
dontListen | 如果启用此属性,则服务器将不会在常规网络端口上监听传入连接。 |
handlers | 向服务器注册的消息处理程序的字典。 |
hostTopology | 服务器使用的主机拓扑。 |
listenPort | 服务器监听的端口。 |
localClientActive | 如果本地客户端当前在服务器上处于活动状态,则为 true。 |
localConnections | 服务器上本地连接的列表。 |
maxDelay | 在连接上发送数据包之前的最大延时。 |
networkConnectionClass | 创建新网络连接时要使用的类。 |
numChannels | 为网络配置的通道数量。 |
objects | 这是已在服务器上生成的联网对象的字典。 |
serverHostId | 此服务器使用的传输层 hostId。 |
useWebSockets | 这使得服务器监听 WebSockets 连接,而不是常规的传输层连接。 |
AddExternalConnection | 这可接收来自其他外部来源的网络连接,并将其添加到服务器。 |
AddPlayerForConnection | 当 AddPlayer 消息处理程序收到玩家请求后,服务器会调用此请求,以将玩家对象与连接关联。 |
BecomeHost | 这将允许已从服务器断开连接的客户端成为新版游戏的主机。 |
ClearHandlers | 清除所有注册的回调处理程序。 |
ClearLocalObjects | 此方法可清除服务器已识别的所有联网对象。如果场景更改在删除所有对象时没有按常规方式来销毁它们,则需要使用此方法。 |
ClearSpawners | 清除此服务器中所有注册的生成预制件和生成处理程序。 |
Configure | 此方法配置服务器的传输层设置。 |
Destroy | 销毁此对象以及所有客户端上的相应对象。 |
DestroyPlayersForConnection | 此方法将销毁与服务器上的 NetworkConnections 关联的所有玩家对象。 |
DisconnectAll | 断开所有当前连接的客户端。 |
FindLocalObject | 这可以通过指定的网络 ID 找到本地 NetworkIdentity 对象。 |
GetConnectionStats | 获取所有连接的聚合数据包统计信息。 |
GetStatsIn | 获取服务器的入站网络统计信息。 |
GetStatsOut | 获取客户端的出站网络统计信息。 |
Listen | 在指定端口号上启动服务器。请注意,如果已经创建了一个匹配项,此方法将使用 Relay Server 而不是本地套接字进行监听。 |
ListenRelay | 使用 Relay Server 启动服务器。这是使用 Relay Server 的手动方法;如果已经存在匹配项,常规的 NetworkServer.Connect() 将自动使用 Relay Server。 |
RegisterHandler | 为特定消息类型注册处理程序。 |
RemoveExternalConnection | 此方法将删除使用 AddExternalConnection() 添加的外部连接。 |
ReplacePlayerForConnection | 此方法会将连接的玩家对象替换成其他玩家对象。不销毁旧玩家对象。 |
Reset | 重置 NetworkServer 单例。 |
ResetConnectionStats | 重置所有连接上的数据包统计信息。 |
SendByChannelToAll | 将网络消息发送到指定传输层 QoS 通道上所有连接的客户端。 |
SendByChannelToReady | 将网络消息发送到指定传输层 QoS 通道上已“准备就绪”的所有连接的客户端。 |
SendBytesToPlayer | 此方法会向指定玩家发送一个字节数组。 |
SendBytesToReady | 此方法会向所有准备的玩家发送一个字节数组。 |
SendToAll | 将带有指定类型编号的消息结构发送到所有连接的客户端。 |
SendToClient | 将消息发送到拥有指定连接 ID 的客户端。 |
SendToClientOfPlayer | 将消息发送到拥有指定玩家对象实例的客户端。 |
SendToReady | 将带有指定类型编号的消息结构仅发送到已准备就绪的客户端。 |
SendUnreliableToAll | 将指定消息结构作为不可靠消息发送到所有连接的客户端。 |
SendUnreliableToReady | 将指定消息结构作为不可靠消息仅发送到已准备就绪的客户端。 |
SendWriterToReady | 将 NetworkWriter 对象的内容发送至已准备就绪的玩家。 |
SetAllClientsNotReady | 将所有连接的客户端标记为不适用。 |
SetClientNotReady | 将连接的客户端设置为未准备就绪状态。 |
SetClientReady | 将客户端设置为准备就绪状态。 |
SetNetworkConnectionClass | 此方法设置创建新网络连接时使用的类。 |
Shutdown | 此方法将关闭服务器并断开所有客户端连接。 |
Spawn | 在已准备就绪的所有客户端上生成指定的游戏对象。 |
SpawnObjects | 此方法会在服务器上生成场景中的 NetworkIdentity 对象。 |
SpawnWithClientAuthority | 此方法会生成一个像 NetworkServer.Spawn() 一样的对象,同时将客户端权限分配到指定客户端。 |
UnregisterHandler | 取消注册特定消息类型的处理程序。 |
UnSpawn | 此方法将取得一个已经生成的对象,并将其回收。 |