MultiplayerSynchronizer
Синхронизирует свойства многопользовательского центра с удаленными узлами.
Описание
По умолчанию 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, также не будут работать при синхронизации.
Свойства
|
||
|
||
|
||
|
||
|
Методы
void |
add_visibility_filter(filter: Callable) |
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().
Описания свойств
Временной интервал между дельта-синхронизациями. Используется, когда репликация установлена на SceneReplicationConfig.REPLICATION_MODE_ON_CHANGE. Если установлено на 0.0 (по умолчанию), дельта-синхронизации происходят каждый кадр сетевого процесса.
bool public_visibility = true 🔗
Должна ли синхронизация быть видимой для всех одноранговых узлов по умолчанию. Смотрите set_visibility_for() и add_visibility_filter() для способов настройки детальных параметров видимости.
SceneReplicationConfig replication_config 🔗
void set_replication_config(value: SceneReplicationConfig)
SceneReplicationConfig get_replication_config()
Ресурс, содержащий свойства для синхронизации.
float replication_interval = 0.0 🔗
Временной интервал между синхронизациями. Используется, когда репликация установлена на SceneReplicationConfig.REPLICATION_MODE_ALWAYS. Если установлено на 0.0 (по умолчанию), синхронизация происходит каждый кадр сетевого процесса.
NodePath root_path = NodePath("..") 🔗
Путь узла, к которому относятся реплицированные свойства.
Если root_path был создан MultiplayerSpawner, узел также будет создан и удален на основе параметров видимости этого синхронизатора.
VisibilityUpdateMode visibility_update_mode = 0 🔗
void set_visibility_update_mode(value: VisibilityUpdateMode)
VisibilityUpdateMode get_visibility_update_mode()
Указывает, когда обновляются фильтры видимости.
Описания метода
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 (по умолчанию), обновляются видимости всех пиров.