MultiplayerSynchronizer

Наследует: Node < Object

Синхронизирует свойства многопользовательского центра с удаленными узлами.

Описание

По умолчанию MultiplayerSynchronizer синхронизирует настроенные свойства со всеми одноранговыми узлами.

Видимость может обрабатываться напрямую с помощью set_visibility_for() или по мере необходимости с помощью add_visibility_filter() и update_visibility().

MultiplayerSpawner-ы будут обрабатывать узлы в соответствии с видимостью синхронизаторов, пока узел в root_path был создан одним из них.

Внутренне MultiplayerSynchronizer использует MultiplayerAPI.object_configuration_add() для уведомления о начале синхронизации, передавая Node в root_path как object и себя как configuration, и использует MultiplayerAPI.object_configuration_remove() для уведомления о завершении синхронизации аналогичным образом.

Примечание: Синхронизация не поддерживается для свойств типа Object, таких как Resource. Свойства, которые являются уникальными для каждого однорангового узла, такие как идентификаторы экземпляров Object (см. Object.get_instance_id()) или RID, также не будут работать при синхронизации.

Свойства

float

delta_interval

0.0

bool

public_visibility

true

SceneReplicationConfig

replication_config

float

replication_interval

0.0

NodePath

root_path

NodePath("..")

VisibilityUpdateMode

visibility_update_mode

0

Методы

void

add_visibility_filter(filter: Callable)

bool

get_visibility_for(peer: int) const

void

remove_visibility_filter(filter: Callable)

void

set_visibility_for(peer: int, visible: bool)

void

update_visibility(for_peer: int = 0)


Сигналы

delta_synchronized() 🔗

Вызывается, когда синхронизатор получает новое состояние дельта-синхронизации после обновления свойств.


synchronized() 🔗

Выдается, когда синхронизатор получает новое состояние синхронизации после обновления свойств.


visibility_changed(for_peer: int) 🔗

Выдается при обновлении видимости for_peer. См. update_visibility().


Перечисления

enum VisibilityUpdateMode: 🔗

VisibilityUpdateMode VISIBILITY_PROCESS_IDLE = 0

Фильтры видимости обновляются во время кадров процесса (см. Node.NOTIFICATION_INTERNAL_PROCESS).

VisibilityUpdateMode VISIBILITY_PROCESS_PHYSICS = 1

Фильтры видимости обновляются во время физических кадров (см. Node.NOTIFICATION_INTERNAL_PHYSICS_PROCESS).

VisibilityUpdateMode VISIBILITY_PROCESS_NONE = 2

Фильтры видимости не обновляются автоматически и должны обновляться вручную путем вызова update_visibility().


Описания свойств

float delta_interval = 0.0 🔗

  • void set_delta_interval(value: float)

  • float get_delta_interval()

Временной интервал между дельта-синхронизациями. Используется, когда репликация установлена на SceneReplicationConfig.REPLICATION_MODE_ON_CHANGE. Если установлено на 0.0 (по умолчанию), дельта-синхронизации происходят каждый кадр сетевого процесса.


bool public_visibility = true 🔗

  • void set_visibility_public(value: bool)

  • bool is_visibility_public()

Должна ли синхронизация быть видимой для всех одноранговых узлов по умолчанию. Смотрите set_visibility_for() и add_visibility_filter() для способов настройки детальных параметров видимости.


SceneReplicationConfig replication_config 🔗

Ресурс, содержащий свойства для синхронизации.


float replication_interval = 0.0 🔗

  • void set_replication_interval(value: float)

  • float get_replication_interval()

Временной интервал между синхронизациями. Используется, когда репликация установлена на SceneReplicationConfig.REPLICATION_MODE_ALWAYS. Если установлено на 0.0 (по умолчанию), синхронизация происходит каждый кадр сетевого процесса.


NodePath root_path = NodePath("..") 🔗

Путь узла, к которому относятся реплицированные свойства.

Если root_path был создан MultiplayerSpawner, узел также будет создан и удален на основе параметров видимости этого синхронизатора.


VisibilityUpdateMode visibility_update_mode = 0 🔗

Указывает, когда обновляются фильтры видимости.


Описания метода

void add_visibility_filter(filter: Callable) 🔗

Добавляет фильтр видимости пиров для этого синхронизатора.

filter должен принимать идентификатор пиров int и возвращать bool.


bool get_visibility_for(peer: int) const 🔗

Запрашивает текущую видимость для однорангового узла peer.


void remove_visibility_filter(filter: Callable) 🔗

Удаляет фильтр видимости одноранговых узлов из этого синхронизатора.


void set_visibility_for(peer: int, visible: bool) 🔗

Устанавливает видимость peer на visible. Если peer равен 0, вместо этого будет обновлено значение public_visibility.


void update_visibility(for_peer: int = 0) 🔗

Обновляет видимость for_peer в соответствии с фильтрами видимости. Если for_peer равен 0 (по умолчанию), обновляются видимости всех пиров.