Важно: 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