NetworkDiscovery 컴포넌트를 사용해서 Unity 게임이 로컬 네트워크에서 서로를 쉽게 찾을 수 있도록 할 수 있습니다. 자신의 존재 여부를 브로드캐스트할 수도 그러한 브로드캐스트를 받을 수도 있으며, NetworkManager를 사용하여 선택적으로 매치된 게임에 참여할 수도 있습니다. 이 과정은 인터넷에서는 이루어지지 않으며, 로컬 네트워크에서만 발생합니다. 이 컴포넌트는 네트워크 전송 레이어의 UDP 브로드캐스트 기능을 사용합니다.
로컬 디스커버리를 사용하려면 빈 게임 오브젝트를 씬 안에 생성하고 NetworkDiscovery 컴포넌트를 추가해야 합니다.
NetworkManagerHUD와 마찬가지로, 이 컴포넌트에는 제어용 디폴트 GUI가 있습니다. 게임이 시작되면 “Initialize Broadcast” 버튼을 눌러 시작해야 합니다.
컴포넌트는 서버 모드나 클라이언트 모드에서 실행할 수 있습니다.
서버 모드인 경우 특정 포트에서 네트워크를 통해 브로드캐스트 메시지를 전송합니다. 이 메시지는 게임 유형을 식별하는 게임 키와 버전을 포함합니다. 다른 타입의 게임 접속 시도와 같은 충돌을 피하려면 키 필드 값을 커스터마이즈해야 합니다. 게임이 해당 장치에서 호스트되는 경우 컴포넌트는 서버 모드로 실행되어야 합니다. 디폴트 GUI를 사용하지 않는 경우 StartAsServer() 함수는 컴포넌트가 서버 모드로 실행되도록 강제합니다.
클라이언트 모드인 경우 컴포넌트는 특정 포트에서 브로드캐스트 메시지를 전달받습니다. 메시지를 전달받고 메시지의 키가 NetworkDiscovery 컴포넌트 키와 일치하면 게임을 로컬 네트워크에서 참여할 수 있다는 의미입니다. 디폴트 GUI를 사용하지 않는 경우 StartAsClient() 함수는 컴포넌트가 서버 모드로 실행되도록 강제합니다.
디폴트 GUI를 사용할 경우, NetworkManager를 사용할 수 있는 경우 클라이언트가 게임에 참여할 수 있게하는 버튼이 나타납니다.
NetworkDiscovery에는 브로드캐스트 메시지를 수신했을 때 알림을 받도록 구현할 수 있는 가상 함수가 있습니다.
virtual void OnReceivedBroadcast(string fromAddress, string data);
NetworkDiscovery 서버와 클라이언트는 동일 프로세스에서는 동시에 실행할 수 없다는 점을 상기해야 합니다.