Есть два способа сделать это:
1.UDP
Это долгий процесс, но его можно выполнить с помощью UDP.
1. Первое, что нужно сделать, это получить свой локальный IP-адрес. Если ваш локальный IP-адрес 192.168.1.13
, вы должны удалить последний октет, равный 13, и заменить его на 255
.
2. Запустите сервер UDP во всех играх и слушайте IPAddress.Any
через любой порт, который вы хотите. Рекомендуется использовать порт >=9000. Указанные ниже порты обычно используются некоторыми другими приложениями. Если что-то получено от клиента, отправьте что-нибудь обратно клиенту, чтобы клиент знал, что вы доступны.
3. Чтобы найти игру, создайте UDP-клиент и отправьте что-нибудь на этот IP-адрес из #1, который заканчивается на 255
, затем прослушайте, чтобы прослушать IPAddress.Any
, чтобы увидеть, есть ли является ответом. Если ответ/сообщение получено с любого сервера, сохраните IP-адрес, с которого получено сообщение, в массив или List
.
4. Затем вы можете использовать этот сохраненный IP-адрес из #3, чтобы найти все доступные устройства в вашей сети.
Вот рабочий пример.
Плохая сторона в том, что это не будет работать, если у вас есть бесплатная версия Unity. Существует ограничение, требующее наличия Unity Pro для использования любого необработанного API сокетов из C#. Больше не действует в Unity 5 и выше. Теперь это можно использовать в Unity 5 и выше без профессиональной лицензии.
2.NetworkDiscovery
Хорошая новость заключается в том, что Unity упростила вам задачу в версии 5.3 или около того. Я не могу вспомнить, какая версия, но убедитесь, что у вас последняя версия. Вам не нужно использовать Unity Pro, чтобы это работало.
Вы можете использовать класс NetworkDiscovery для выполнения это в новой версии Unity. Просто вызовите NetworkDiscovery.StartAsServer()
для передачи сообщений клиентам. На стороне клиента вы можете прослушать трансляцию, вызвав NetworkDiscovery.StartAsClient()
. Вы можете использовать OnReceivedBroadcast(string fromAddress, string data);
, чтобы увидеть, с какого устройства вы получили. Это не может быть проще, чем это.
person
Programmer
schedule
21.06.2016