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

Преобразование однопользовательской игры в многопользовательскую игру Unity

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

В этом документе описываются шаги по преобразованию однопользовательской игры в многопользовательскую с использованием новой сетевой системы многопользовательской игры Unity. Описанный здесь процесс представляет собой упрощенную версию более высокого уровня фактического процесса для реальной игры; это не всегда работает именно так, но дает базовый рецепт процесса.

Настройка NetworkManager

  • Добавить новый GameObjectОсновной объект в сценах Unity, который может представлять персонажей, реквизит, декорации, камеры, путевые точки, и более. Функциональность GameObject определяется прикрепленными к нему компонентами. Подробнее
    См. в Словарь
    СценаСцена содержит окружение и меню вашей игры. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее
    Просмотрите в Словарь
    и переименуйте его в «NetworkManager».
  • Добавьте компонент NetworkManager в игровой объект NetworkManager.
  • Добавьте компонент NetworkManagerHUDA Networking, который создает меню пользовательского интерфейса, позволяющее управлять состоянием сети в игре с помощью Сетевой менеджер. Подробнее
    См. в компоненте Словарь
    к GameObject. Это обеспечивает UI по умолчанию(пользовательский интерфейс) Позволяет пользователю взаимодействовать с вашим приложением. Подробнее
    См. Словарь
    для управления состоянием сетевой игры.

См. Использование NetworkManager.

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

  • Найдите префаб для игрового объекта игрока в игре или создайте префаб из игрового объекта игрока.
  • Добавьте компонент NetworkIdentityA Networking, который позволяет назначать идентификатор вашему игровому объекту, чтобы сеть распознавала его как Локальный игровой объект игрока или серверный игровой объект. Подробнее
    См. в компоненте Словарь
    префаб проигрывателя
  • Установите флажок LocalPlayerAuthority в NetworkIdentity.
  • Установите для playerPrefab в разделе Информация о появлении NetworkManager префаб игрока
  • Удалить экземпляр GameObject игрока из сцены, если он существует в сцене.

См. Объекты проигрывателяОбъект API высокого уровня (HPAPI), представляющий player на сервере и имеет возможность запускать команды (которые представляют собой безопасные удаленные вызовы процедур между клиентом и сервером) из клиента проигрывателя. Подробнее
см. в Словарь
.

Движение игрока

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

Например, этот скрипт обрабатывает ввод только для локального проигрывателя:

using UnityEngine; using UnityEngine.Networking; public class Controls : NetworkBehaviour { void Update() { if (!isLocalPlayer) { // exit from update if this is not the local player return; } // handle player input for movement } }

Основное игровое состояние игрока

  • Создавайте сценарии, содержащие важные данные, в NetworkBehaviours вместо MonoBehaviours
  • Сделайте важные переменные-члены в SyncVars

См. раздел Синхронизация состояния.

Действия в сети

  • Создавайте сценарии, выполняющие важные действия, в NetworkBehaviours вместо MonoBehaviours
  • Обновить функции, выполняющие важные действия игрока, до команд

См. Сетевые действия.

Игровые объекты, не являющиеся игроками

Исправить неигровые префабы, такие как враги:

  • Добавьте компонент NetworkIdentify
  • Добавьте компонент NetworkTransformA Networking, который позволяет синхронизировать перемещения игровых объектов по сети. Подробнее
    См. в компоненте Словарь
  • Зарегистрируйте создаваемые префабы в NetworkManager.
  • Обновите сценарии с учетом состояния игры и действий.

Споунеры

  • Возможно, изменить сценарии порождения на NetworkBehaviours.
  • Измените генераторы, чтобы они запускались только на сервере (используйте свойство isServer или функцию OnStartServer())
  • Вызов NetworkServer.Spawn() для созданных игровых объектов

Позиции появления игроков

  • Добавить новый игровой объект и разместить его в стартовой позиции игрока
  • Добавьте компонент NetworkStartPosition в новый GameObject

Лобби

  • Создать сцену лобби
  • Добавьте в сцену новый игровой объект и переименуйте его в «NetworkLobbyManager».
  • Добавьте компонент NetworkLobbyManager в новый GameObject.
  • Настройте менеджер:
    • Scenes
    • Prefabs
    • Spawners
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3