SceneMultiplayer
Высокоуровневый сетевой контекст иерархии Entity.
Обрабатывает RPC и настроенную репликацию относительно сетевого корня. RootPath задаёт пространство относительных путей; одинаковый код/настройки должны указывать на соответствующие сущности у участников.
AllowObjectDecoding не следует включать ради удобства произвольных внешних данных. Доступность peer, проверка пользователя, игровые права, последовательность и лимиты запросов — разные задачи. Отложите изменение API-таблицы дерева из сетевых событий до подходящей фазы главного потока.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
SceneMultiplayerКонструктор
public SceneMultiplayer();Свойства8
AllowObjectDecodingСвойство
public bool AllowObjectDecoding { get; set; }Разрешение декодирования объектов. Оставляйте false для простого внешнего протокола; это не универсальная сериализация безопасных сетевых идентичностей.
AuthCallbackСвойство
public Callable AuthCallback { get; set; }Обратный вызов, выполняемый при получении данных аутентификации, отправленных через SceneMultiplayer.SendAuth. Если Callable пуст (по умолчанию), одноранговые узлы будут автоматически приняты, как только они подключатся.
AuthTimeoutСвойство
public double AuthTimeout { get; set; }Если установлено значение больше 0.0, максимальная продолжительность в секундах, в течение которой одноранговые узлы могут оставаться в состоянии аутентификации, после чего аутентификация автоматически провалится. См. сигналы SceneMultiplayer.PeerAuthenticating и SceneMultiplayer.PeerAuthenticationFailed.
MaxDeltaPacketSizeСвойство
public int MaxDeltaPacketSize { get; set; }Максимальный размер каждого дельта-пакета. Более высокие значения увеличивают вероятность получения полных обновлений в одном кадре, но также и вероятность перегрузки сети (более высокая задержка, отключения). См. MultiplayerSynchronizer.
MaxSyncPacketSizeСвойство
public int MaxSyncPacketSize { get; set; }Максимальный размер каждого пакета синхронизации. Более высокие значения увеличивают вероятность получения полных обновлений в одном кадре, но также и вероятность потери пакетов. См. MultiplayerSynchronizer.
RefuseNewConnectionsСвойство
public bool RefuseNewConnections { get; set; }Если true, MultiplayerApi.MultiplayerPeer MultiplayerAPI отклоняет новые входящие соединения.
RootPathСвойство
public EntityPath RootPath { get; set; }Сетевой корень для относительных путей Entity. Соответствующие RPC-объекты должны совпадать относительно своих корней у участников.
ServerRelayСвойство
public bool ServerRelay { get; set; }Управляет ретрансляцией между клиентами через сервер. В лобби руководства задан false для протокола клиент ↔ сервер. При true в проверенной сборке наблюдался нативный сбой во время одновременного отключения клиентов; исправность режима этим примером не подтверждена.
Методы24
Clearvoid
public void Clear();Очищает текущее состояние сети SceneMultiplayer (вызывать эту функцию следует только в том случае, если вы точно знаете, что делаете).
CompleteAuthError
public Error CompleteAuth(int id);Отметить этап аутентификации как завершенный для удалённого сверчка, идентифицированного id. . . . . MultiplayerApi.PeerConnected После того как удаленная сторона также завершит аутентификацию, будет подаваться сигнал.
Если перед завершением аутентификации в связи с вопросом о сети отключается партнер, то: SceneMultiplayer.AuthTimeout Срок действия или ручное вызов SceneMultiplayer.DisconnectPeer, SceneMultiplayer.PeerAuthenticationFailed вместо сигнала MultiplayerApi.PeerDisconnected.
| Имя | Тип | По умолчанию |
|---|---|---|
id | int | — |
ErrorDisconnectPeervoid
public void DisconnectPeer(int id);Отключает одноранговый узел, идентифицированный id, удаляя его из списка подключенных одноранговых узлов и закрывая базовое соединение с ним.
| Имя | Тип | По умолчанию |
|---|---|---|
id | int | — |
GetAuthCallbackCallable
public Callable GetAuthCallback();CallableGetAuthTimeoutdouble
public double GetAuthTimeout();doubleGetAuthenticatingPeersint[]
public int[] GetAuthenticatingPeers();Возвращает идентификаторы участников, которые в данный момент пытаются пройти аутентификацию с помощью этого MultiplayerApi.
int[]GetMaxDeltaPacketSizeint
public int GetMaxDeltaPacketSize();intGetMaxSyncPacketSizeint
public int GetMaxSyncPacketSize();intGetRootPathEntityPath
public EntityPath GetRootPath();EntityPathIsObjectDecodingAllowedbool
public bool IsObjectDecodingAllowed();boolIsRefusingNewConnectionsbool
public bool IsRefusingNewConnections();boolIsServerRelayEnabledbool
public bool IsServerRelayEnabled();boolSendAuth2 перегрузки
public Error SendAuth(int id, byte[] data);Отправляет указанные data удаленному пиру, идентифицированному id, как часть сообщения аутентификации. Это может использоваться для аутентификации пиров и управления тем, когда выдается MultiplayerApi.PeerConnected (и удаленный пир принимается как один из подключенных пиров).
| Имя | Тип | По умолчанию |
|---|---|---|
id | int | — |
data | byte[] | — |
Errorpublic Error SendAuth(int id, ReadOnlySpan<byte> data);Отправляет указанные data удаленному пиру, идентифицированному id, как часть сообщения аутентификации. Это может использоваться для аутентификации пиров и управления тем, когда выдается MultiplayerApi.PeerConnected (и удаленный пир принимается как один из подключенных пиров).
| Имя | Тип | По умолчанию |
|---|---|---|
id | int | — |
data | ReadOnlySpan<byte> | — |
ErrorSendBytes2 перегрузки
public Error SendBytes(byte[] bytes, int id = 0, MultiplayerPeer.TransferModeEnum mode = MultiplayerPeer.TransferModeEnum.Reliable, int channel = 0);Отправляет заданные необработанные bytes определенному пиру, идентифицированному id (см. MultiplayerPeer.SetTargetPeer). Идентификатор по умолчанию — 0, т.е. транслируется всем пирам.
| Имя | Тип | По умолчанию |
|---|---|---|
bytes | byte[] | — |
id | int | 0 |
mode | MultiplayerPeer.TransferModeEnum | MultiplayerPeer.TransferModeEnum.Reliable |
channel | int | 0 |
Errorpublic Error SendBytes(ReadOnlySpan<byte> bytes, int id, MultiplayerPeer.TransferModeEnum mode, int channel);Отправляет заданные необработанные bytes определенному пиру, идентифицированному id (см. MultiplayerPeer.SetTargetPeer). Идентификатор по умолчанию — 0, т.е. транслируется всем пирам.
| Имя | Тип | По умолчанию |
|---|---|---|
bytes | ReadOnlySpan<byte> | — |
id | int | — |
mode | MultiplayerPeer.TransferModeEnum | — |
channel | int | — |
ErrorSetAllowObjectDecodingvoid
public void SetAllowObjectDecoding(bool enable);| Имя | Тип | По умолчанию |
|---|---|---|
enable | bool | — |
SetAuthCallbackvoid
public void SetAuthCallback(Callable callback);| Имя | Тип | По умолчанию |
|---|---|---|
callback | Callable | — |
SetAuthTimeoutvoid
public void SetAuthTimeout(double timeout);| Имя | Тип | По умолчанию |
|---|---|---|
timeout | double | — |
SetMaxDeltaPacketSizevoid
public void SetMaxDeltaPacketSize(int size);| Имя | Тип | По умолчанию |
|---|---|---|
size | int | — |
SetMaxSyncPacketSizevoid
public void SetMaxSyncPacketSize(int size);| Имя | Тип | По умолчанию |
|---|---|---|
size | int | — |
SetRefuseNewConnectionsvoid
public void SetRefuseNewConnections(bool refuse);| Имя | Тип | По умолчанию |
|---|---|---|
refuse | bool | — |
SetRootPathvoid
public void SetRootPath(EntityPath path);| Имя | Тип | По умолчанию |
|---|---|---|
path | EntityPath | — |
SetServerRelayEnabledvoid
public void SetServerRelayEnabled(bool enabled);| Имя | Тип | По умолчанию |
|---|---|---|
enabled | bool | — |
Сигналы и события3
PeerAuthenticatingСобытие
public event SceneMultiplayer.PeerAuthenticatingEventHandler PeerAuthenticating;Выдается, когда MultiplayerApi.MultiplayerPeer этого MultiplayerAPI подключается к новому одноранговому узлу и установлен допустимый SceneMultiplayer.AuthCallback. В этом случае MultiplayerApi.PeerConnected не будет выдан, пока не будет вызван SceneMultiplayer.CompleteAuth с заданным одноранговым узлом id. В этом состоянии одноранговый узел не будет включен в список, возвращаемый MultiplayerApi.GetPeers (но в тот, который возвращается SceneMultiplayer.GetAuthenticatingPeers), и будут отправлены или получены только данные аутентификации. См. SceneMultiplayer.SendAuth для отправки данных аутентификации.
| Имя | Тип | По умолчанию |
|---|---|---|
id | long | — |
PeerAuthenticationFailedСобытие
public event SceneMultiplayer.PeerAuthenticationFailedEventHandler PeerAuthenticationFailed;Выдается, когда MultiplayerApi.MultiplayerPeer этого MultiplayerAPI отключается от однорангового узла, для которого аутентификация еще не завершена. См. SceneMultiplayer.PeerAuthenticating.
| Имя | Тип | По умолчанию |
|---|---|---|
id | long | — |
PeerPacketСобытие
public event SceneMultiplayer.PeerPacketEventHandler PeerPacket;Вызывается, когда MultiplayerApi.MultiplayerPeer этого MultiplayerAPI получает packet с пользовательскими данными (см. SceneMultiplayer.SendBytes). ID — это идентификатор однорангового узла, отправившего пакет.
| Имя | Тип | По умолчанию |
|---|---|---|
id | long | — |
packet | byte[] | — |