MultiplayerApi
Контекст сетевых участников, отправителя и RPC.
Объединяет MultiplayerPeer и высокоуровневые сетевые операции. EntityTree по умолчанию опрашивает API; отдельные ветви могут получить независимые API через SetMultiplayer. Один процесс и один API — разные понятия.
GetRemoteSenderId имеет смысл внутри текущего обработчика сетевого вызова; сохраняйте ID до отложенной работы. AnyPeer не является проверкой аккаунта. Согласуйте RPC-конфигурацию, относительные пути и авторитетное серверное состояние.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Свойства1
MultiplayerPeerСвойство
public MultiplayerPeer MultiplayerPeer { get; set; }Объект peer для обработки системы RPC (эффективно включающей сетевое взаимодействие при установке). В зависимости от самого peer, MultiplayerAPI станет сетевым сервером (проверьте с помощью MultiplayerApi.IsServer) и установит сетевой режим корневого узла на authority, или он станет обычным клиентским peer. Все дочерние узлы настроены на наследование сетевого режима по умолчанию. Обработка событий, связанных с сетью (подключение, отключение, новые клиенты), выполняется путем подключения к сигналам MultiplayerAPI.
Методы14
CreateDefaultInterfaceMultiplayerApi
public static MultiplayerApi CreateDefaultInterface();Возвращает новый экземпляр MultiplayerAPI по умолчанию.
MultiplayerApiGetDefaultInterfaceStringName
public static StringName GetDefaultInterface();Возвращает имя класса реализации MultiplayerAPI по умолчанию. Обычно это "SceneMultiplayer", когда доступен SceneMultiplayer. См. MultiplayerApi.SetDefaultInterface.
StringNameGetMultiplayerPeerMultiplayerPeer
public MultiplayerPeer GetMultiplayerPeer();MultiplayerPeerGetPeersint[]
public int[] GetPeers();Возвращает идентификаторы всех подключенных одноранговых узлов этого MultiplayerAPI MultiplayerApi.MultiplayerPeer.
int[]GetRemoteSenderIdint
public int GetRemoteSenderId();ID отправителя в контексте текущего входящего сетевого вызова. Сохраните до отложенной работы; поле, переданное клиентом как playerId, не заменяет этот ID.
intGetUniqueIdint
public int GetUniqueId();ID локального peer в текущей сессии. Сервер использует 1. Это не постоянный ID аккаунта, сохранения или игрового объекта.
intHasMultiplayerPeerbool
public bool HasMultiplayerPeer();Возвращает true, если установлен MultiplayerApi.MultiplayerPeer.
boolIsServerbool
public bool IsServer();Возвращает true, если MultiplayerApi.MultiplayerPeer этого MultiplayerAPI действителен и находится в режиме сервера (прослушивает соединения).
boolObjectConfigurationAddError
public Error ObjectConfigurationAdd(ReckfellObject @object, Variant configuration);Уведомляет MultiplayerAPI о новой configuration для данного object. Этот метод используется внутренне EntityTree для настройки корневого пути для этого MultiplayerAPI (передавая null и допустимый EntityPath как configuration). Этот метод может далее использоваться реализациями MultiplayerAPI для предоставления дополнительных функций, см. конкретную реализацию (например, SceneMultiplayer) для получения подробной информации о том, как они его используют.
Примечание: Этот метод в основном актуален при расширении или переопределении поведения MultiplayerAPI через MultiplayerApiExtension.
| Имя | Тип | По умолчанию |
|---|---|---|
object | ReckfellObject | — |
configuration | Variant | — |
ErrorObjectConfigurationRemoveError
public Error ObjectConfigurationRemove(ReckfellObject @object, Variant configuration);Уведомляет MultiplayerAPI об удалении configuration для данного object. Этот метод используется внутренне EntityTree для настройки корневого пути для этого MultiplayerAPI (передавая null и пустой EntityPath как configuration). Этот метод может быть дополнительно использован реализациями MultiplayerAPI для предоставления дополнительных функций, см. конкретную реализацию (например, SceneMultiplayer) для получения подробной информации о том, как они его используют.
Примечание: Этот метод в основном актуален при расширении или переопределении поведения MultiplayerAPI через MultiplayerApiExtension.
| Имя | Тип | По умолчанию |
|---|---|---|
object | ReckfellObject | — |
configuration | Variant | — |
ErrorPollError
public Error Poll();Продвигает сетевые события/API. Обычно опрос выполняет EntityTree; ручной режим должен согласовываться с MultiplayerPoll и жизненным циклом.
ErrorRpcError
public Error Rpc(int peer, ReckfellObject @object, StringName method, Reckfell.Collections.Array arguments = null);Посылает RPC к цели peer. Приведенная информация method будут призваны к дальнему object вместе с предусмотренными argumentsВ зависимости от степени осуществления и конфигурации ОЦР можно также называть РПК на местном уровне. Entity.Rpc и Entity.RpcConfig.
Примечание: Предпочтение использовать Entity.Rpc, Entity.RpcIdили my_method.rpc(peer, arg1, arg2, ...) (в C#), поскольку они более быстры. MultiplayerApiExtension при расширении или замене возможностей мультиплеера.
| Имя | Тип | По умолчанию |
|---|---|---|
peer | int | — |
object | ReckfellObject | — |
method | StringName | — |
arguments | Reckfell.Collections.Array | null |
ErrorSetDefaultInterfacevoid
public static void SetDefaultInterface(StringName interfaceName);Устанавливает класс реализации MultiplayerAPI по умолчанию. Этот метод может использоваться модулями и расширениями для настройки того, какая реализация будет использоваться EntityTree при запуске движка.
| Имя | Тип | По умолчанию |
|---|---|---|
interfaceName | StringName | — |
SetMultiplayerPeervoid
public void SetMultiplayerPeer(MultiplayerPeer peer);| Имя | Тип | По умолчанию |
|---|---|---|
peer | MultiplayerPeer | — |
Сигналы и события5
ConnectedToServerСобытие
public event Action ConnectedToServer;Сигнал успешного клиентского соединения на уровне API. Не доказывает авторизацию аккаунта, загрузку уровня или готовность всех игровых сущностей.
ConnectionFailedСобытие
public event Action ConnectionFailed;Выдается, когда MultiplayerApi.MultiplayerPeer этого MultiplayerAPI не может установить соединение с сервером. Выдается только на клиентах.
PeerConnectedСобытие
public event MultiplayerApi.PeerConnectedEventHandler PeerConnected;Выдается, когда MultiplayerApi.MultiplayerPeer этого MultiplayerAPI подключается к новому пиру. ID — это идентификатор пира нового пира. Клиенты получают уведомления, когда другие клиенты подключаются к тому же серверу. При подключении к серверу клиент также получает этот сигнал для сервера (с ID, равным 1).
| Имя | Тип | По умолчанию |
|---|---|---|
id | long | — |
PeerDisconnectedСобытие
public event MultiplayerApi.PeerDisconnectedEventHandler PeerDisconnected;Сообщает выход сетевого участника. Очистите связанные игровые данные; отправку итогового состояния и смену API выполняйте в согласованной фазе.
| Имя | Тип | По умолчанию |
|---|---|---|
id | long | — |
ServerDisconnectedСобытие
public event Action ServerDisconnected;Выдается, когда MultiplayerApi.MultiplayerPeer этого MultiplayerAPI отключается от сервера. Выдается только на клиентах.
MultiplayerApi.RpcMode
| Значение | Описание |
|---|---|
AnyPeer = 1 | Используется с |
Authority = 2 | Используется с |
Disabled = 0 | Используется с |