Files
godot-docs-l10n/classes/ru/class_multiplayersynchronizer.rst
2025-09-30 13:31:55 +02:00

337 lines
19 KiB
ReStructuredText
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

: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 (Нет возвращаемого значения.)`