Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Интеграция с использованием высокоуровневого API Unity

Для интеграции многопользовательских сервисов Unity с помощью API высокого уровня для работы в сети необходимо использовать NetworkMatch непосредственно в ваших скриптахКрай кода, который позволяет вам создавать свои собственные Компоненты, запускать игровые события, изменять свойства компонентов с течением времени и реагировать на действия пользователя любым удобным для вас способом. Подробнее
См. в Словарь
. Чтобы использовать его, вы должны вызывать функции в NetworkMatch вручную и самостоятельно обрабатывать обратные вызовы.

Ниже приведен пример того, как вы можете создать совпадение, составить список совпадений и присоединиться к совпадению, используя только NetworkMatch, NetworkServer и NetworkClient.

Этот сценарий настраивает систему сопоставления так, чтобы она указывала на общедоступный сервер системы сопоставления Unity. Он вызывает функции NetworkMatch для создания, перечисления и объединения совпадений:

  • CreateMatch для создания соответствия
  • JoinMatch, чтобы присоединиться к матчу
  • ListMatches для перечисления совпадений, зарегистрированных на сервере свахи

Внутренне NetworkMatch использует веб-службы для установления совпадения, и данная функция обратного вызова вызывается по завершении процесса, например OnMatchCreate. для создания соответствия.

using UnityEngine; using UnityEngine.Networking; using UnityEngine.Networking.Match; using System.Collections.Generic; public class HostGame : MonoBehaviour { List matchList = new List(); bool matchCreated; NetworkMatch networkMatch; void Awake() { networkMatch = gameObject.AddComponent(); } void OnGUI() { // You would normally not join a match you created yourself but this is possible here for demonstration purposes. if (GUILayout.Button("Create Room")) { string matchName = "room"; uint matchSize = 4; bool matchAdvertise = true; string matchPassword = ""; networkMatch.CreateMatch(matchName, matchSize, matchAdvertise, matchPassword, "", "", 0, 0, OnMatchCreate); } if (GUILayout.Button("List rooms")) { networkMatch.ListMatches(0, 20, "", true, 0, 0, OnMatchList); } if (matchList.Count > 0) { GUILayout.Label("Current rooms"); } foreach (var match in matchList) { if (GUILayout.Button(match.name)) { networkMatch.JoinMatch(match.networkId, "", "", "", 0, 0, OnMatchJoined); } } } public void OnMatchCreate(bool success, string extendedInfo, MatchInfo matchInfo) { if (success) { Debug.Log("Create match succeeded"); matchCreated = true; NetworkServer.Listen(matchInfo, 9000); Utility.SetAccessTokenForNetwork(matchInfo.networkId, matchInfo.accessToken); } else { Debug.LogError("Create match failed: " + extendedInfo); } } public void OnMatchList(bool success, string extendedInfo, List matches) { if (success && matches != null && matches.Count > 0) { networkMatch.JoinMatch(matches[0].networkId, "", "", "", 0, 0, OnMatchJoined); } else if (!success) { Debug.LogError("List match failed: " + extendedInfo); } } public void OnMatchJoined(bool success, string extendedInfo, MatchInfo matchInfo) { if (success) { Debug.Log("Join match succeeded"); if (matchCreated) { Debug.LogWarning("Match already set up, aborting..."); return; } Utility.SetAccessTokenForNetwork(matchInfo.networkId, matchInfo.accessToken); NetworkClient myClient = new NetworkClient(); myClient.RegisterHandler(MsgType.Connect, OnConnected); myClient.Connect(matchInfo); } else { Debug.LogError("Join match failed " + extendedInfo); } } public void OnConnected(NetworkMessage msg) { Debug.Log("Connected!"); } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3