本地发现

NetworkDiscovery组件允许Unity游戏在本地网络上找到彼此。它可以播放状态并监听广播,并可以使用NetworkManager加入匹配的游戏。这不适用于互联网,只适用于本地网络。该组件使用网络传输层的UDP广播功能。

要使用本地发现,请在场景中创建一个空的游戏对象,并向其添加NetworkDiscovery组件。

 6.213 本地发现  - 图1

NetworkManagerHUD一样,该组件具有用于控制它的默认GUI。当游戏开始时点击“初始化广播”按钮开始。

该组件可以在服务器模式或客户端模式下运行。

在服务器模式下,它通过指定端口上的网络发送广播消息。这些消息包含游戏的密钥和版本 - 这些标识了这种特定类型的游戏。为了避免冲突,例如试图加入不同类型游戏的游戏,您应该自定义Key字段的值。如果在该机器上托管游戏,该组件应该在服务器模式下运行。不使用默认GUI时,StartAsServer()函数使组件以服务器模式运行。

处于客户端模式时,组件会侦听指定端口上的广播消息。收到消息并且消息中的密钥与NetworkDiscovery组件中的密钥匹配时,这意味着可以在本地网络上加入游戏。不使用默认GUI时,StartAsClient()函数使组件以客户端模式运行。

当使用默认的GUI时,会出现一个按钮,让客户端加入游戏(如果NetworkManager可用)。

NetworkDiscovery组件上有一个虚函数,可在接收到广播消息时实施通知。

  1. virtual void OnReceivedBroadcast(string fromAddress, string data);

?