Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты
Важно: UNet — это устаревшее решение, а также новая многопользовательская и сетьсистема Unity, которая обеспечивает многопользовательскую игру. игры через компьютерную сеть. Подробнее
См. в Словарь
Решение (Netcode для GameObjects) находится в разработке. Дополнительную информацию и дальнейшие действия см. на веб-сайте Unity Netcode for GameObjects.

В большинстве многопользовательских игр есть «лобби»; a СценаСцена содержит окружение и меню вашей игры. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее
См. Словарь
в игре, чтобы игроки могли присоединиться перед тем, как играть в саму игру. В лобби игроки могут выбрать варианты и настроить себя на готовность к началу игры.

Unity предоставляет компонент Диспетчер сетевого лобби, который позволяет легко реализовать лобби для вашей игры.

Компонент Network Lobby Manager предоставляет лобби для многопользовательских игр Unity. Он включает в себя следующие функции:

  • Простой встроенный пользовательский интерфейс для взаимодействия с лобби.
  • Ограничивает количество игроков, которые могут присоединиться.
  • Поддерживает несколько игроков на клиенте с ограничением на количество игроков на клиенте
  • Запрещает игрокам присоединяться к играм, которые находятся в процессе.
  • Поддерживает состояние "готов" для клиентов, поэтому игра начинается, когда все игроки готовы
  • Данные конфигурации для каждого игрока
  • Игроки снова присоединяются к лобби, когда игра заканчивается.
  • Виртуальные функции, позволяющие настраивать логику событий лобби.

Ниже приведены виртуальные методы Network Lobby Manager. Дополнительные сведения см. в справочной документации по API для класса NetworkLobbyManager. Существует отдельный список для методов, которые вызываются на клиенте и на сервере. Вы можете написать свои собственные реализации для этих методов, чтобы они действовали при возникновении любого из этих событий.

NetworkLobbyManager virtual methods called on the server:

Виртуальные методы

NetworkLobbyManager, вызываемые на клиенте:

Все перечисленные выше серверные и клиентские методы имеют пустые реализации по умолчанию, за исключением OnLobbyServerPlayersReady****, который вызывает ServerChangeScene с PlayScene (сцена, назначенная полю Play Scene в инспекторе Lobby Manager.

Игровые объекты игрока в лобби

Существует два типа сборных элементов игрока для Менеджера лобби: Сборный элемент лобби игрока Сборный элементТип объекта, который позволяет вам хранить GameObject вместе с компонентами и свойствами. Префаб действует как шаблон, из которого вы можете создавать новые экземпляры объектов на сцене. Подробнее
См. в Словарь
и** в Game Player Prefab** . Для каждого из них есть поле в компоненте Network Lobby Manager.

Компонент Network Lobby Manager

Сборник лобби-плеера

К Prefab, который вы назначаете слоту Lobby Player Prefab, должен быть прикреплен компонент Network Lobby Player. Каждый клиент, который присоединяется к лобби, получает новый проигрыватель лобби GameObjectосновной объект в сценах Unity, который может представлять персонажей, реквизит, декорации. , камеры, путевые точки и многое другое. Функциональность GameObject определяется прикрепленными к нему компонентами. Подробнее
См. в Словаре
, созданном из префаба лобби-плеера. Unity создает объект Lobby player GameObject при подключении клиента (то есть когда игрок присоединяется к игре), и он существует до тех пор, пока клиент не отключится.

Компонент Network Lobby Player поддерживает состояние «готов» для каждого игрока и обрабатывает команды в лобби. Вы можете добавить пользовательские скриптыКусок кода, позволяющий создавать собственные компоненты, запускать игровые события, изменять свойства компонентов с течением времени. и отвечайте на ввод пользователя любым удобным для вас способом. Подробнее
См. в Словарь
префаб для хранения данных игрока для конкретной игры.

Компонент Network Lobby Player предоставляет несколько обратных вызовов виртуальных методов, которые можно использовать для пользовательского поведения лобби. Это:

public virtual void OnClientEnterLobby(); public virtual void OnClientExitLobby(); public virtual void OnClientReady(bool readyState);

Unity вызывает метод OnClientEnterLobby на клиенте, когда игра входит в лобби. Это происходит при первом запуске Сцены лобби, а также при возврате в лобби из Сцены игрового процесса.

Unity вызывает метод OnClientExitLobby на клиенте, когда игра выходит из лобби. Это происходит при переключении на Сцену игрового процесса.

Unity вызывает метод OnClientReady на клиенте при изменении состояния готовности этого проигрывателя.

Сборник игрового плеера

Игра начинается, когда все игроки заявили о своей готовности. Когда игра начинается, Unity создает GameObject для каждого игрока на основе Game Player Prefab. Unity уничтожает эти GameObjects в конце игры, когда игроки повторно входят в лобби. Game Player Prefab обрабатывает команды во время игры. Этот префаб является стандартным сетевым GameObject и должен иметь присоединенный компонент Network Identity.

Минимальное количество игроков

В компоненте Network Lobby Manager поле Минимальное количество игроков представляет собой минимальное количество игроков, которым необходимо указать, что они готовы, до начала игры. Если количество подключенных клиентов достигает значения Минимальное количество игроков, матч начинается после того, как все подключенные клиенты перейдут в состояние «Готово».

Например, если для параметра "Минимум игроков" установлено значение 2:

  • Запустите один экземпляр игры и начните игру в режиме хоста. Затем в интерфейсе лобби вашей игры нажмите «Старт» для вашего игрока. Вы все еще находитесь в лобби, потому что минимальное количество игроков, готовых начать игру, равно 2.
  • Запустите еще два экземпляра игры и запустите эти игры в режиме клиента в этих экземплярах. Подождите, пока все подключенные игроки (в данном примере трое) будут готовы. Нажмите «Пуск» в лобби. UI(пользовательский интерфейс) Позволяет пользователю взаимодействовать с вашим приложением. Подробнее
    См. в Словарь
    для одного игрока. Теперь два игрока готовы, но все еще в холле. Нажмите «Старт» в пользовательском интерфейсе лобби для последнего игрока. Все игроки перемещаются в основную сцену игры.

Добавление лобби в игру

Эти шаги описывают основной процесс добавления сетевого лобби в многопользовательскую игру с использованием встроенных сетевых функций Unity:

  • Создать новую сцену для лобби
  • Добавить сцену в настройки сборки (Файл > Настройки сборки… > Добавить открытые сцены) в качестве первой сцены.
  • Создайте новый игровой объект в новой сцене и переименуйте его в LobbyManager.
  • Добавьте компонент Network Lobby Manager в LobbyManager GameObject
  • Добавьте Диспетчер сетиКомпонент сети, который управляет состоянием сети проекта. Подробнее
    См. в Словарь
    компонент HUD для LobbyManager GameObject
  • Откройте Инспекторокно Unity, в котором отображается информация о выбранном в данный момент игровом объекте, активе или настройках проекта, что позволяет вам проверять и отредактируйте значения. Дополнительная информация
    См. Словарь
    для компонента Network Lobby Manager
  • В Network Lobby Manager установите Сцену лобби на сцену, содержащую игровой объект LobbyManager
  • .
  • В Network Lobby Manager установите для параметра Игровая сцена основную сцену игрового процесса для игры.
  • Создайте новый GameObject и переименуйте его в LobbyPlayer.
  • Добавьте компонент Network Lobby Player в LobbyPlayer.
  • Создайте префаб для игрового объекта LobbyPlayer и удалите экземпляр из сцены
  • Задайте для поля LobbyPlayerPrefab (в инспекторе Network Lobby Manager) префаб LobbyPlayer
  • Задайте в поле GamePlayerPrefab (в инспекторе Network Lobby Manager) префаб для игрока в основной игре.
  • Сохранить сцену
  • Запустить игру

Эта версия Network Lobby Manager является очень простой реализацией и использует замещающий пользовательский интерфейс, очень похожий на HUD Network Manager. Прежде чем выпустить игру, вы должны заменить ее собственным пользовательским интерфейсом, который соответствует визуальному дизайну и требованиям к функциям вашей игры.

Пример улучшенного пользовательского интерфейса см. в [пакете активов многопользовательского лобби]((https://www.assetstore.unity3d.com/en/#!/content/41836), доступном в Asset Store.

Класс NetworkLobbyManager имеет множество обратных вызовов виртуальных функций для пользовательского поведения лобби. Наиболее важной функцией является OnLobbyServerSceneLoadedForPlayer, которая вызывается на сервере для каждого игрока при переходе из лобби в основную игру. Это идеальное место для применения настроек игрового объекта лобби к игровому объекту игрока.

// for users to apply settings from their lobby player GameObject to their in-game player GameObject public override bool OnLobbyServerSceneLoadedForPlayer(GameObject lobbyPlayer, GameObject gamePlayer) { var cc = lobbyPlayer.GetComponent(); var player = gamePlayer.GetComponent(); player.myColor = cc.myColor; return true; }

Пример проекта

В** Unity есть пример проекта в Asset Storeрастущей библиотеке бесплатных и коммерческих ресурсов, созданных Unity и члены сообщества. Предлагает широкий спектр ресурсов, от текстур, моделей и анимации до целых примеров проектов, руководств и расширений редактора. Подробнее
См. в Словарь
**, который использует Network Lobby Manager и предоставляет графический интерфейс для лобби. Вы можете использовать это как отправную точку для создания собственного лобби для многопользовательской игры. См. Asset Store: пример проекта лобби.

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3