При тестировании и создании многопользовательской игры с Unity у меня есть кнопка «Сетевая игра», которая подключает игрока в режиме локальной сети.Здесь возможны два варианта: разместить игру в качестве сервера или присоединиться к игре в качестве клиента.
Я хочу, чтобы ситуация с сервером или хостом разрешалась автоматически, а это означает, что если хост уже существует, нажмите "Сетевая игра »подключается как клиент;но если хоста нет, нажатие на «Сетевая игра» создает хост локальной сети.
Достаточно просто:
private void NewLANGame()
{
// Continue as a client if there is already a connection; or else, start as a LAN host
if(networkManager.IsClientConnected())
{
networkManager.StartClient();
Debug.Log("Client started");
}
else
{
networkManager.StartHost();
Debug.Log("Host started");
}
SetStartMenuActivation(false); // Revert to the HUD
}
Но, очевидно, networkManager.IsClientConnected()
относится только к интернет-игре.В любой ситуации по локальной сети IsClientConnected()
возвращает false.
Я безуспешно тестировал и искал различные вызовы методов.Я сравнивал сценарий Unity NetworkManagerHUD
, чтобы найти полезный код, но ничего не нашел.
Кто-нибудь знает правильный метод для определения, существует ли хост LAN?