Важно: UNet — это устаревшее решение, а также новая многопользовательская и сетьсистема Unity, которая обеспечивает многопользовательскую игру. игры через компьютерную сеть. Подробнее См. в Словарь Решение (Netcode для GameObjects) находится в разработке. Дополнительную информацию и дальнейшие действия см. на веб-сайте Unity Netcode for GameObjects. |
При использовании Диспетчера сетиКомпонента сети, который управляет сетевым состоянием проекта. Подробнее
См. в Словарь с HUD сетевого менеджера, метод NetworkManager.StartMatchmaker включает поиск партнеров и заполняет NetworkManager.matchMaker с объектом NetworkMatch. Как только он активен, HUD Network Manager использует его и вызывает методы в NetworkManager, чтобы вы могли выполнить простой поиск совпадений.
В NetworkManager
есть виртуальные функции, которые можно настроить, создав собственный класс из NetworkManager
. Затем вы можете настроить способ, которым ваш новый класс NetworkManager
отвечает на обратные вызовы Matchmaker.
Вот обратные вызовы и их реализации по умолчанию. Если вы переопределяете их, есть некоторые методы, которые требуют, чтобы вы вызывали базовую реализацию, в противном случае функциональность с Network Manager HUD прерывается. Например, реализация по умолчанию OnMatchCreate
запускает хост.
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.Networking.Match;
public class CustomManager : NetworkManager {
public override void OnMatchCreate(bool success, string extendedInfo, MatchInfo matchInfo) {
if (LogFilter.logDebug) { Debug.LogFormat("NetworkManager OnMatchCreate Success:{0}, ExtendedInfo:{1}, matchInfo:{2}", success, extendedInfo, matchInfo); }
if(success)
StartHost(matchInfo);
}
public override void OnMatchJoined(bool success, string extendedInfo, MatchInfo matchInfo) {
if (LogFilter.logDebug) { Debug.LogFormat("NetworkManager OnMatchJoined Success:{0}, ExtendedInfo:{1}, matchInfo:{2}", success, extendedInfo, matchInfo); }
if(success)
StartClient(matchInfo);
}
public override void OnMatchList(bool success, string extendedInfo, List matchList) {
if (LogFilter.logDebug) { Debug.LogFormat("NetworkManager OnMatchList Success:{0}, ExtendedInfo:{1}, matchList.Count:{2}", success, extendedInfo, matchList.Count); }
matches = matchList;
}
public override void OnDestroyMatch(bool success, string extendedInfo) {
if (LogFilter.logDebug) { Debug.LogFormat("NetworkManager OnDestroyMatch Success:{0}, ExtendedInfo:{1}", success, extendedInfo); }
}
public override void OnDropConnection(bool success, string extendedInfo) {
if (LogFilter.logDebug) { Debug.LogFormat("NetworkManager OnDestroyMatch Success:{0}, ExtendedInfo:{1}", success, extendedInfo); }
}
public override void OnSetMatchAttributes(bool success, string extendedInfo) {
if (LogFilter.logDebug) { Debug.LogFormat("NetworkManager OnDestroyMatch Success:{0}, ExtendedInfo:{1}", success, extendedInfo); }
}
}