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

NetworkConnection — это высокоуровневый класс API, который инкапсулирует сетевое подключение. Объекты (NetworkClient)[class-NetworkClient] имеют NetworkConnection, а NetworkServer имеют несколько подключений — по одному от каждого клиента. Сетевые подключения позволяют отправлять массивы байтов или сериализованные объекты в виде сетевых сообщений.

Свойства

Property: Функции:
hostId Идентификатор хоста NetworkTransport для этого подключения.
connectionId Идентификатор соединения NetworkTransport для этого соединения.
isReady Отметьте, чтобы контролировать, отправляются ли обновления состояния в это соединение
lastMessageTime Время последнего получения сообщения по этому соединению.
address IP-адрес конечной точки, к которой подключено это соединение.
playerControllers Набор игроков, добавленных с помощью AddPlayer().
clientOwnedObjects Набор объектов, над которыми это соединение имеет власть..

Класс NetworkConnection имеет виртуальные функции, которые вызываются, когда данные отправляются на транспортный уровень или получаются с транспортного уровня. Эти функции позволяют специализированным версиям NetworkConnection проверять или изменять эти данные или даже направлять их в разные источники. Эти функции показаны ниже, включая поведение по умолчанию:

public virtual void TransportRecieve(byte[] bytes, int numBytes, int channelId) { HandleBytes(bytes, numBytes, channelId); } public virtual bool TransportSend(byte[] bytes, int numBytes, int channelId, out byte error) { return NetworkTransport.Send(hostId, connectionId, channelId, bytes, numBytes, out error); }

Примером использования этих функций является регистрация содержимого входящих и исходящих пакетов. Ниже приведен пример класса DebugConnection, производного от NetworkConnection, который регистрирует первые 50 байтов пакетов на консоли. Чтобы использовать такой класс, вызовите функцию SetNetworkConnectionClass() в NetworkClient или NetworkServer.

class DebugConnection : NetworkConnection { public override void TransportRecieve(byte[] bytes, int numBytes, int channelId) { StringBuilder msg = new StringBuilder(); for (int i = 0; i < numBytes; i++) { var s = String.Format("{0:X2}", bytes[i]); msg.Append(s); if (i > 50) break; } UnityEngine.Debug.Log("TransportRecieve h:" + hostId + " con:" + connectionId + " bytes:" + numBytes + " " + msg); HandleBytes(bytes, numBytes, channelId); } public override bool TransportSend(byte[] bytes, int numBytes, int channelId, out byte error) { StringBuilder msg = new StringBuilder(); for (int i = 0; i < numBytes; i++) { var s = String.Format("{0:X2}", bytes[i]); msg.Append(s); if (i > 50) break; } UnityEngine.Debug.Log("TransportSend h:" + hostId + " con:" + connectionId + " bytes:" + numBytes + " " + msg); return NetworkTransport.Send(hostId, connectionId, channelId, bytes, numBytes, out error); } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3