El componente NetworkDiscovery le permite a los juegos de Unity encontrarse en una red local. Puede difundir presencia y escuchar por una difusión, y opcionalmente unir juegos que coincidan utilizando el NetworkManager. Esto no funciona en el internet, solamente en redes locales. Este componente utiliza la característica de fusión UDP de la capa de transporte de red (network transport layer).
Para utilizar local discovery, cree un game object vacío en la escena y agregue un componente NetworkDiscover a este.
Como el NetworkManagerHUD, este componente tiene un GUI predeterminado para controlarlo. Cuando el juego empieza, oprima el botón “Initialize Broadcast” para comenzar.
El componente puede correr en modo de servidor o modo de cliente.
Cuando se está en modo de servidor, este envía mensajes de difusión sobre la red en el puerto especificado. Estos mensajes contienen una Key (llave) y Versión del juego - estos identifica este tipo de juego en particular. Para evitar conflictos como un juego que intenta unir un juego de un tipo diferente, usted debería personalizar el valor del campo de la Key. El componente debería correr en modo servidor si un juego está siendo alojado en esa maquina. Cuando no se utilice el GUI predeterminad, la función StartAsServer() hace que el componente se ejecute en el modo de servidor.
Cuando se está en modo de cliente, el componente escucha para mensajes de difusión en el puerto especificado. Cuando un mensaje se recibe y la Key (llave) coincide con la Key en el componente NetworkDiscovery, esto significa que un juego está disponible para unirse en la red local. Cuando no se utilice el GUI predeterminado, la función StartAsClient() hace que el componente se ejecute en modo de cliente.
Cuando se utilice el GUI predeterminado, un botón va aparecer que hará que el cliente una el juego (si un NetworkManager está disponible).
Hay una función virtual en el componente NetworkDiscovery que puede ser implementado para ser notificado cuando los mensajes de difusión son recibidos.
virtual void OnReceivedBroadcast(string fromAddress, string data);
Tenga en cuenta que usted no puede tener un servidor NetworkDiscovery y un cliente ejecutando el mismo proceso a la vez.