mirror of
https://github.com/godotengine/godot-docs-l10n.git
synced 2025-12-31 09:49:22 +03:00
337 lines
19 KiB
ReStructuredText
337 lines
19 KiB
ReStructuredText
:github_url: hide
|
||
|
||
.. meta::
|
||
:keywords: network
|
||
|
||
.. _class_MultiplayerSynchronizer:
|
||
|
||
MultiplayerSynchronizer
|
||
=======================
|
||
|
||
**Наследует:** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
|
||
|
||
Синхронизирует свойства многопользовательского центра с удаленными узлами.
|
||
|
||
.. rst-class:: classref-introduction-group
|
||
|
||
Описание
|
||
----------------
|
||
|
||
По умолчанию **MultiplayerSynchronizer** синхронизирует настроенные свойства со всеми одноранговыми узлами.
|
||
|
||
Видимость может обрабатываться напрямую с помощью :ref:`set_visibility_for()<class_MultiplayerSynchronizer_method_set_visibility_for>` или по мере необходимости с помощью :ref:`add_visibility_filter()<class_MultiplayerSynchronizer_method_add_visibility_filter>` и :ref:`update_visibility()<class_MultiplayerSynchronizer_method_update_visibility>`.
|
||
|
||
\ :ref:`MultiplayerSpawner<class_MultiplayerSpawner>`-ы будут обрабатывать узлы в соответствии с видимостью синхронизаторов, пока узел в :ref:`root_path<class_MultiplayerSynchronizer_property_root_path>` был создан одним из них.
|
||
|
||
Внутренне **MultiplayerSynchronizer** использует :ref:`MultiplayerAPI.object_configuration_add()<class_MultiplayerAPI_method_object_configuration_add>` для уведомления о начале синхронизации, передавая :ref:`Node<class_Node>` в :ref:`root_path<class_MultiplayerSynchronizer_property_root_path>` как ``object`` и себя как ``configuration``, и использует :ref:`MultiplayerAPI.object_configuration_remove()<class_MultiplayerAPI_method_object_configuration_remove>` для уведомления о завершении синхронизации аналогичным образом.
|
||
|
||
\ **Примечание:** Синхронизация не поддерживается для свойств типа :ref:`Object<class_Object>`, таких как :ref:`Resource<class_Resource>`. Свойства, которые являются уникальными для каждого однорангового узла, такие как идентификаторы экземпляров :ref:`Object<class_Object>` (см. :ref:`Object.get_instance_id()<class_Object_method_get_instance_id>`) или :ref:`RID<class_RID>`, также не будут работать при синхронизации.
|
||
|
||
.. rst-class:: classref-reftable-group
|
||
|
||
Свойства
|
||
----------------
|
||
|
||
.. table::
|
||
:widths: auto
|
||
|
||
+--------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------+--------------------+
|
||
| :ref:`float<class_float>` | :ref:`delta_interval<class_MultiplayerSynchronizer_property_delta_interval>` | ``0.0`` |
|
||
+--------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------+--------------------+
|
||
| :ref:`bool<class_bool>` | :ref:`public_visibility<class_MultiplayerSynchronizer_property_public_visibility>` | ``true`` |
|
||
+--------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------+--------------------+
|
||
| :ref:`SceneReplicationConfig<class_SceneReplicationConfig>` | :ref:`replication_config<class_MultiplayerSynchronizer_property_replication_config>` | |
|
||
+--------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------+--------------------+
|
||
| :ref:`float<class_float>` | :ref:`replication_interval<class_MultiplayerSynchronizer_property_replication_interval>` | ``0.0`` |
|
||
+--------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------+--------------------+
|
||
| :ref:`NodePath<class_NodePath>` | :ref:`root_path<class_MultiplayerSynchronizer_property_root_path>` | ``NodePath("..")`` |
|
||
+--------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------+--------------------+
|
||
| :ref:`VisibilityUpdateMode<enum_MultiplayerSynchronizer_VisibilityUpdateMode>` | :ref:`visibility_update_mode<class_MultiplayerSynchronizer_property_visibility_update_mode>` | ``0`` |
|
||
+--------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------+--------------------+
|
||
|
||
.. rst-class:: classref-reftable-group
|
||
|
||
Методы
|
||
------------
|
||
|
||
.. table::
|
||
:widths: auto
|
||
|
||
+-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| |void| | :ref:`add_visibility_filter<class_MultiplayerSynchronizer_method_add_visibility_filter>`\ (\ filter\: :ref:`Callable<class_Callable>`\ ) |
|
||
+-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`bool<class_bool>` | :ref:`get_visibility_for<class_MultiplayerSynchronizer_method_get_visibility_for>`\ (\ peer\: :ref:`int<class_int>`\ ) |const| |
|
||
+-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| |void| | :ref:`remove_visibility_filter<class_MultiplayerSynchronizer_method_remove_visibility_filter>`\ (\ filter\: :ref:`Callable<class_Callable>`\ ) |
|
||
+-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| |void| | :ref:`set_visibility_for<class_MultiplayerSynchronizer_method_set_visibility_for>`\ (\ peer\: :ref:`int<class_int>`, visible\: :ref:`bool<class_bool>`\ ) |
|
||
+-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| |void| | :ref:`update_visibility<class_MultiplayerSynchronizer_method_update_visibility>`\ (\ for_peer\: :ref:`int<class_int>` = 0\ ) |
|
||
+-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
|
||
.. rst-class:: classref-section-separator
|
||
|
||
----
|
||
|
||
.. rst-class:: classref-descriptions-group
|
||
|
||
Сигналы
|
||
--------------
|
||
|
||
.. _class_MultiplayerSynchronizer_signal_delta_synchronized:
|
||
|
||
.. rst-class:: classref-signal
|
||
|
||
**delta_synchronized**\ (\ ) :ref:`🔗<class_MultiplayerSynchronizer_signal_delta_synchronized>`
|
||
|
||
Вызывается, когда синхронизатор получает новое состояние дельта-синхронизации после обновления свойств.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_MultiplayerSynchronizer_signal_synchronized:
|
||
|
||
.. rst-class:: classref-signal
|
||
|
||
**synchronized**\ (\ ) :ref:`🔗<class_MultiplayerSynchronizer_signal_synchronized>`
|
||
|
||
Выдается, когда синхронизатор получает новое состояние синхронизации после обновления свойств.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_MultiplayerSynchronizer_signal_visibility_changed:
|
||
|
||
.. rst-class:: classref-signal
|
||
|
||
**visibility_changed**\ (\ for_peer\: :ref:`int<class_int>`\ ) :ref:`🔗<class_MultiplayerSynchronizer_signal_visibility_changed>`
|
||
|
||
Выдается при обновлении видимости ``for_peer``. См. :ref:`update_visibility()<class_MultiplayerSynchronizer_method_update_visibility>`.
|
||
|
||
.. rst-class:: classref-section-separator
|
||
|
||
----
|
||
|
||
.. rst-class:: classref-descriptions-group
|
||
|
||
Перечисления
|
||
------------------------
|
||
|
||
.. _enum_MultiplayerSynchronizer_VisibilityUpdateMode:
|
||
|
||
.. rst-class:: classref-enumeration
|
||
|
||
enum **VisibilityUpdateMode**: :ref:`🔗<enum_MultiplayerSynchronizer_VisibilityUpdateMode>`
|
||
|
||
.. _class_MultiplayerSynchronizer_constant_VISIBILITY_PROCESS_IDLE:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`VisibilityUpdateMode<enum_MultiplayerSynchronizer_VisibilityUpdateMode>` **VISIBILITY_PROCESS_IDLE** = ``0``
|
||
|
||
Фильтры видимости обновляются во время кадров процесса (см. :ref:`Node.NOTIFICATION_INTERNAL_PROCESS<class_Node_constant_NOTIFICATION_INTERNAL_PROCESS>`).
|
||
|
||
.. _class_MultiplayerSynchronizer_constant_VISIBILITY_PROCESS_PHYSICS:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`VisibilityUpdateMode<enum_MultiplayerSynchronizer_VisibilityUpdateMode>` **VISIBILITY_PROCESS_PHYSICS** = ``1``
|
||
|
||
Фильтры видимости обновляются во время физических кадров (см. :ref:`Node.NOTIFICATION_INTERNAL_PHYSICS_PROCESS<class_Node_constant_NOTIFICATION_INTERNAL_PHYSICS_PROCESS>`).
|
||
|
||
.. _class_MultiplayerSynchronizer_constant_VISIBILITY_PROCESS_NONE:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`VisibilityUpdateMode<enum_MultiplayerSynchronizer_VisibilityUpdateMode>` **VISIBILITY_PROCESS_NONE** = ``2``
|
||
|
||
Фильтры видимости не обновляются автоматически и должны обновляться вручную путем вызова :ref:`update_visibility()<class_MultiplayerSynchronizer_method_update_visibility>`.
|
||
|
||
.. rst-class:: classref-section-separator
|
||
|
||
----
|
||
|
||
.. rst-class:: classref-descriptions-group
|
||
|
||
Описания свойств
|
||
--------------------------------
|
||
|
||
.. _class_MultiplayerSynchronizer_property_delta_interval:
|
||
|
||
.. rst-class:: classref-property
|
||
|
||
:ref:`float<class_float>` **delta_interval** = ``0.0`` :ref:`🔗<class_MultiplayerSynchronizer_property_delta_interval>`
|
||
|
||
.. rst-class:: classref-property-setget
|
||
|
||
- |void| **set_delta_interval**\ (\ value\: :ref:`float<class_float>`\ )
|
||
- :ref:`float<class_float>` **get_delta_interval**\ (\ )
|
||
|
||
Временной интервал между дельта-синхронизациями. Используется, когда репликация установлена на :ref:`SceneReplicationConfig.REPLICATION_MODE_ON_CHANGE<class_SceneReplicationConfig_constant_REPLICATION_MODE_ON_CHANGE>`. Если установлено на ``0.0`` (по умолчанию), дельта-синхронизации происходят каждый кадр сетевого процесса.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_MultiplayerSynchronizer_property_public_visibility:
|
||
|
||
.. rst-class:: classref-property
|
||
|
||
:ref:`bool<class_bool>` **public_visibility** = ``true`` :ref:`🔗<class_MultiplayerSynchronizer_property_public_visibility>`
|
||
|
||
.. rst-class:: classref-property-setget
|
||
|
||
- |void| **set_visibility_public**\ (\ value\: :ref:`bool<class_bool>`\ )
|
||
- :ref:`bool<class_bool>` **is_visibility_public**\ (\ )
|
||
|
||
Должна ли синхронизация быть видимой для всех одноранговых узлов по умолчанию. Смотрите :ref:`set_visibility_for()<class_MultiplayerSynchronizer_method_set_visibility_for>` и :ref:`add_visibility_filter()<class_MultiplayerSynchronizer_method_add_visibility_filter>` для способов настройки детальных параметров видимости.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_MultiplayerSynchronizer_property_replication_config:
|
||
|
||
.. rst-class:: classref-property
|
||
|
||
:ref:`SceneReplicationConfig<class_SceneReplicationConfig>` **replication_config** :ref:`🔗<class_MultiplayerSynchronizer_property_replication_config>`
|
||
|
||
.. rst-class:: classref-property-setget
|
||
|
||
- |void| **set_replication_config**\ (\ value\: :ref:`SceneReplicationConfig<class_SceneReplicationConfig>`\ )
|
||
- :ref:`SceneReplicationConfig<class_SceneReplicationConfig>` **get_replication_config**\ (\ )
|
||
|
||
Ресурс, содержащий свойства для синхронизации.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_MultiplayerSynchronizer_property_replication_interval:
|
||
|
||
.. rst-class:: classref-property
|
||
|
||
:ref:`float<class_float>` **replication_interval** = ``0.0`` :ref:`🔗<class_MultiplayerSynchronizer_property_replication_interval>`
|
||
|
||
.. rst-class:: classref-property-setget
|
||
|
||
- |void| **set_replication_interval**\ (\ value\: :ref:`float<class_float>`\ )
|
||
- :ref:`float<class_float>` **get_replication_interval**\ (\ )
|
||
|
||
Временной интервал между синхронизациями. Используется, когда репликация установлена на :ref:`SceneReplicationConfig.REPLICATION_MODE_ALWAYS<class_SceneReplicationConfig_constant_REPLICATION_MODE_ALWAYS>`. Если установлено на ``0.0`` (по умолчанию), синхронизация происходит каждый кадр сетевого процесса.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_MultiplayerSynchronizer_property_root_path:
|
||
|
||
.. rst-class:: classref-property
|
||
|
||
:ref:`NodePath<class_NodePath>` **root_path** = ``NodePath("..")`` :ref:`🔗<class_MultiplayerSynchronizer_property_root_path>`
|
||
|
||
.. rst-class:: classref-property-setget
|
||
|
||
- |void| **set_root_path**\ (\ value\: :ref:`NodePath<class_NodePath>`\ )
|
||
- :ref:`NodePath<class_NodePath>` **get_root_path**\ (\ )
|
||
|
||
Путь узла, к которому относятся реплицированные свойства.
|
||
|
||
Если :ref:`root_path<class_MultiplayerSynchronizer_property_root_path>` был создан :ref:`MultiplayerSpawner<class_MultiplayerSpawner>`, узел также будет создан и удален на основе параметров видимости этого синхронизатора.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_MultiplayerSynchronizer_property_visibility_update_mode:
|
||
|
||
.. rst-class:: classref-property
|
||
|
||
:ref:`VisibilityUpdateMode<enum_MultiplayerSynchronizer_VisibilityUpdateMode>` **visibility_update_mode** = ``0`` :ref:`🔗<class_MultiplayerSynchronizer_property_visibility_update_mode>`
|
||
|
||
.. rst-class:: classref-property-setget
|
||
|
||
- |void| **set_visibility_update_mode**\ (\ value\: :ref:`VisibilityUpdateMode<enum_MultiplayerSynchronizer_VisibilityUpdateMode>`\ )
|
||
- :ref:`VisibilityUpdateMode<enum_MultiplayerSynchronizer_VisibilityUpdateMode>` **get_visibility_update_mode**\ (\ )
|
||
|
||
Указывает, когда обновляются фильтры видимости.
|
||
|
||
.. rst-class:: classref-section-separator
|
||
|
||
----
|
||
|
||
.. rst-class:: classref-descriptions-group
|
||
|
||
Описания метода
|
||
------------------------------
|
||
|
||
.. _class_MultiplayerSynchronizer_method_add_visibility_filter:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
|void| **add_visibility_filter**\ (\ filter\: :ref:`Callable<class_Callable>`\ ) :ref:`🔗<class_MultiplayerSynchronizer_method_add_visibility_filter>`
|
||
|
||
Добавляет фильтр видимости пиров для этого синхронизатора.
|
||
|
||
\ ``filter`` должен принимать идентификатор пиров :ref:`int<class_int>` и возвращать :ref:`bool<class_bool>`.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_MultiplayerSynchronizer_method_get_visibility_for:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`bool<class_bool>` **get_visibility_for**\ (\ peer\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_MultiplayerSynchronizer_method_get_visibility_for>`
|
||
|
||
Запрашивает текущую видимость для однорангового узла ``peer``.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_MultiplayerSynchronizer_method_remove_visibility_filter:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
|void| **remove_visibility_filter**\ (\ filter\: :ref:`Callable<class_Callable>`\ ) :ref:`🔗<class_MultiplayerSynchronizer_method_remove_visibility_filter>`
|
||
|
||
Удаляет фильтр видимости одноранговых узлов из этого синхронизатора.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_MultiplayerSynchronizer_method_set_visibility_for:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
|void| **set_visibility_for**\ (\ peer\: :ref:`int<class_int>`, visible\: :ref:`bool<class_bool>`\ ) :ref:`🔗<class_MultiplayerSynchronizer_method_set_visibility_for>`
|
||
|
||
Устанавливает видимость ``peer`` на ``visible``. Если ``peer`` равен ``0``, вместо этого будет обновлено значение :ref:`public_visibility<class_MultiplayerSynchronizer_property_public_visibility>`.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_MultiplayerSynchronizer_method_update_visibility:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
|void| **update_visibility**\ (\ for_peer\: :ref:`int<class_int>` = 0\ ) :ref:`🔗<class_MultiplayerSynchronizer_method_update_visibility>`
|
||
|
||
Обновляет видимость ``for_peer`` в соответствии с фильтрами видимости. Если ``for_peer`` равен ``0`` (по умолчанию), обновляются видимости всех пиров.
|
||
|
||
.. |virtual| replace:: :abbr:`virtual (Этот метод обычно должен быть переопределен пользователем, чтобы иметь какой-либо эффект.)`
|
||
.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
|
||
.. |const| replace:: :abbr:`const (Этот метод не имеет побочных эффектов. Он не изменяет ни одну из переменных-членов экземпляра.)`
|
||
.. |vararg| replace:: :abbr:`vararg (Этот метод принимает любое количество аргументов после описанных здесь.)`
|
||
.. |constructor| replace:: :abbr:`constructor (Этот метод используется для создания типа.)`
|
||
.. |static| replace:: :abbr:`static (Этот метод не нуждается в вызове экземпляра, поэтому его можно вызвать напрямую, используя имя класса.)`
|
||
.. |operator| replace:: :abbr:`operator (Этот метод описывает допустимый оператор для использования с этим типом в качестве левого операнда.)`
|
||
.. |bitfield| replace:: :abbr:`BitField (Это значение является целым числом, составленным как битовая маска следующих флагов.)`
|
||
.. |void| replace:: :abbr:`void (Нет возвращаемого значения.)`
|