:github_url: hide .. meta:: :keywords: network .. _class_MultiplayerAPI: MultiplayerAPI ============== **Успадковує:** :ref:`RefCounted` **<** :ref:`Object` **Успадковано від:** :ref:`MultiplayerAPIExtension`, :ref:`SceneMultiplayer` Високорівневий багатокористувацький API інтерфейс. .. rst-class:: classref-introduction-group Опис -------- Базовий клас для реалізації багатокористувацького API високого рівня. Дивись також :ref:`MultiplayerPeer`. За замовчуванням :ref:`SceneTree` має посилання на виконання цього класу і використовує його для забезпечення можливостей мультиплеєра (тобто RPCs) на всій сцені. Можливо перевизнати екземпляр MultiplayerAPI, який використовується певними гілочками дерева, викликаючи\ :ref:`SceneTree.set_multiplayer()`, ефективно дозволяючи працювати як клієнт, так і сервер в одній сцені. Також можна розширити або замінити виконання за замовчуванням за допомогою скриптів або рідних розширень. Докладніше про розширення, :ref:`SceneMultiplayer` для деталей щодо реалізації за замовчуванням. .. rst-class:: classref-reftable-group Властивості ---------------------- .. table:: :widths: auto +-----------------------------------------------+-------------------------------------------------------------------------+ | :ref:`MultiplayerPeer` | :ref:`multiplayer_peer` | +-----------------------------------------------+-------------------------------------------------------------------------+ .. rst-class:: classref-reftable-group Методи ------------ .. table:: :widths: auto +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`MultiplayerAPI` | :ref:`create_default_interface`\ (\ ) |static| | +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`StringName` | :ref:`get_default_interface`\ (\ ) |static| | +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedInt32Array` | :ref:`get_peers`\ (\ ) | +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`get_remote_sender_id`\ (\ ) | +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`get_unique_id`\ (\ ) | +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`has_multiplayer_peer`\ (\ ) | +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`is_server`\ (\ ) | +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Error` | :ref:`object_configuration_add`\ (\ object\: :ref:`Object`, configuration\: :ref:`Variant`\ ) | +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Error` | :ref:`object_configuration_remove`\ (\ object\: :ref:`Object`, configuration\: :ref:`Variant`\ ) | +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Error` | :ref:`poll`\ (\ ) | +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Error` | :ref:`rpc`\ (\ peer\: :ref:`int`, object\: :ref:`Object`, method\: :ref:`StringName`, arguments\: :ref:`Array` = []\ ) | +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`set_default_interface`\ (\ interface_name\: :ref:`StringName`\ ) |static| | +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Сигнали -------------- .. _class_MultiplayerAPI_signal_connected_to_server: .. rst-class:: classref-signal **connected_to_server**\ (\ ) :ref:`🔗` Видається, коли цей MultiplayerAPI :ref:`multiplayer_peer` успішно підключився до сервера. Видається лише на клієнтах. .. rst-class:: classref-item-separator ---- .. _class_MultiplayerAPI_signal_connection_failed: .. rst-class:: classref-signal **connection_failed**\ (\ ) :ref:`🔗` Видається, коли цьому MultiplayerAPI :ref:`multiplayer_peer` не вдається встановити з'єднання із сервером. Видається лише на клієнтах. .. rst-class:: classref-item-separator ---- .. _class_MultiplayerAPI_signal_peer_connected: .. rst-class:: classref-signal **peer_connected**\ (\ id\: :ref:`int`\ ) :ref:`🔗` Випробувано, коли це MultiplayerAPI's :ref:`multiplayer_peer` з'єднується з новим однолітком. Ідентифікатор є одностороннім ідентифікатором нового покоління. Клієнти отримують сповіщення при підключенні інших клієнтів до одного сервера. При підключенні до сервера клієнт також отримує цей сигнал для сервера (з ідентифікатором 1). .. rst-class:: classref-item-separator ---- .. _class_MultiplayerAPI_signal_peer_disconnected: .. rst-class:: classref-signal **peer_disconnected**\ (\ id\: :ref:`int`\ ) :ref:`🔗` Випробувано, коли це багатокористувацька :ref:`multiplayer_peer` відключається від однолітків. Клієнти отримують сповіщення, коли інші клієнти відключаються з одного сервера. .. rst-class:: classref-item-separator ---- .. _class_MultiplayerAPI_signal_server_disconnected: .. rst-class:: classref-signal **server_disconnected**\ (\ ) :ref:`🔗` Увімкнено, коли це багатокористувацька :ref:`multiplayer_peer` відключається з сервера. Клієнтам. .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Переліки ---------------- .. _enum_MultiplayerAPI_RPCMode: .. rst-class:: classref-enumeration enum **RPCMode**: :ref:`🔗` .. _class_MultiplayerAPI_constant_RPC_MODE_DISABLED: .. rst-class:: classref-enumeration-constant :ref:`RPCMode` **RPC_MODE_DISABLED** = ``0`` Використовується з :ref:`Node.rpc_config()` для відключення методу або майна для всіх дзвінків RPC, що робить його недоступним. За замовчуванням для всіх методів. .. _class_MultiplayerAPI_constant_RPC_MODE_ANY_PEER: .. rst-class:: classref-enumeration-constant :ref:`RPCMode` **RPC_MODE_ANY_PEER** = ``1`` Використовується з :ref:`Node.rpc_config()`, щоб встановити метод, який можна викликати дистанційно. Анотація ``@rpc("any_peer")``. Дзвінки приймаються з усіх віддалених однолітків, незалежно від того, чи є вони повноваження вузла або ні. .. _class_MultiplayerAPI_constant_RPC_MODE_AUTHORITY: .. rst-class:: classref-enumeration-constant :ref:`RPCMode` **RPC_MODE_AUTHORITY** = ``2`` Використовується з :ref:`Node.rpc_config()`, щоб встановити метод, який можна викликати віддалено тільки чинним органом мультиплеєра (який сервер за замовчуванням). Анотація ``@rpc("авторитет")``. Див. :ref:`Node.set_multiplayer_authority()`. .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Описи властивостей ------------------------------------ .. _class_MultiplayerAPI_property_multiplayer_peer: .. rst-class:: classref-property :ref:`MultiplayerPeer` **multiplayer_peer** :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_multiplayer_peer**\ (\ value\: :ref:`MultiplayerPeer`\ ) - :ref:`MultiplayerPeer` **get_multiplayer_peer**\ (\ ) Об'єкт, що дозволяє працювати в системі RPC (ефективно дозволяє мережі при встановленні). В залежності від самого однолітків, MultiplayerAPI стане мережевим сервером (check with :ref:`is_server()`) і встановить режим мережі кореневих вузлів до влади, або він стане постійним клієнтом. Всі дочірні вершини встановлюються для успадкування мережевого режиму за замовчуванням. Можливість підключення сигналів MultiplayerAPI. .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Описи методів -------------------------- .. _class_MultiplayerAPI_method_create_default_interface: .. rst-class:: classref-method :ref:`MultiplayerAPI` **create_default_interface**\ (\ ) |static| :ref:`🔗` Повертає новий екземпляр за замовчуванням MultiplayerAPI. .. rst-class:: classref-item-separator ---- .. _class_MultiplayerAPI_method_get_default_interface: .. rst-class:: classref-method :ref:`StringName` **get_default_interface**\ (\ ) |static| :ref:`🔗` Повертає ім'я класу за замовчуванням MultiplayerAPI. Це, як правило, ``"SceneMultiplayer"``, коли :ref:`SceneMultiplayer` доступний. Подивитися :ref:`set_default_interface()`. .. rst-class:: classref-item-separator ---- .. _class_MultiplayerAPI_method_get_peers: .. rst-class:: classref-method :ref:`PackedInt32Array` **get_peers**\ (\ ) :ref:`🔗` Повертаємо одноліткові ідентифікатори всіх підключених однолітків цієї мультиплеерації :ref:`multiplayer_peer`. .. rst-class:: classref-item-separator ---- .. _class_MultiplayerAPI_method_get_remote_sender_id: .. rst-class:: classref-method :ref:`int` **get_remote_sender_id**\ (\ ) :ref:`🔗` Повертає ідентифікатор відправника на RPC в даний час. \ **Примітка:** Цей метод повертає ``0`` при підключенні зовні РПК. Таким чином, вихідний ідентифікатор може бути втрачений, коли затримка коду (наприклад, з GDScript ``await`` ключове слово). .. rst-class:: classref-item-separator ---- .. _class_MultiplayerAPI_method_get_unique_id: .. rst-class:: classref-method :ref:`int` **get_unique_id**\ (\ ) :ref:`🔗` Повертає унікальний ідентифікатор вузла цього MultiplayerAPI :ref:`multiplayer_peer`. .. rst-class:: classref-item-separator ---- .. _class_MultiplayerAPI_method_has_multiplayer_peer: .. rst-class:: classref-method :ref:`bool` **has_multiplayer_peer**\ (\ ) :ref:`🔗` Повертає ``true``, якщо встановлено :ref:`multiplayer_peer`. .. rst-class:: classref-item-separator ---- .. _class_MultiplayerAPI_method_is_server: .. rst-class:: classref-method :ref:`bool` **is_server**\ (\ ) :ref:`🔗` Повертає ``true``, якщо значення :ref:`multiplayer_peer` цього MultiplayerAPI є дійсним та перебуває в режимі сервера (очікує з'єднання). .. rst-class:: classref-item-separator ---- .. _class_MultiplayerAPI_method_object_configuration_add: .. rst-class:: classref-method :ref:`Error` **object_configuration_add**\ (\ object\: :ref:`Object`, configuration\: :ref:`Variant`\ ) :ref:`🔗` Визначає багатокористувацьку конфігурацію ``configuration`` для вказаного ``object``. Цей метод використовується внутрішньо :ref:`SceneTree` для налаштування кореневого шляху для цього MultiplayerAPI (passing ``null`` і діє :ref:`NodePath` як ``конфігураціяparam``). Цей метод можна додатково використовувати за допомогою MultiplayerAPI, щоб забезпечити додаткові функції, відносяться до конкретної реалізації (наприклад, :ref:`SceneMultiplayer`) для деталей про те, як вони використовують його. \ **Примітка:** Цей метод є переважно актуальним при розширенні або перенаправленні поведінки MultiplayerAPI через :ref:`MultiplayerAPIExtension`. .. rst-class:: classref-item-separator ---- .. _class_MultiplayerAPI_method_object_configuration_remove: .. rst-class:: classref-method :ref:`Error` **object_configuration_remove**\ (\ object\: :ref:`Object`, configuration\: :ref:`Variant`\ ) :ref:`🔗` Визначає багатокористувацький інтерфейс для видалення ``configuration`` для вказаного ``object``. Цей метод використовується внутрішньо :ref:`SceneTree` для налаштування кореневого шляху для цього MultiplayerAPI (passing ``null`` і порожній :ref:`NodePath` як ``configuration``). Цей метод можна додатково використовувати за допомогою MultiplayerAPI, щоб забезпечити додаткові функції, відносяться до конкретної реалізації (наприклад, :ref:`SceneMultiplayer`) для деталей про те, як вони використовують його. \ **Примітка:** Цей метод є переважно актуальним при розширенні або перенаправленні поведінки MultiplayerAPI через :ref:`MultiplayerAPIExtension`. .. rst-class:: classref-item-separator ---- .. _class_MultiplayerAPI_method_poll: .. rst-class:: classref-method :ref:`Error` **poll**\ (\ ) :ref:`🔗` Метод, який використовується для опитування багатокористувацького середовища. Вам потрібно лише турбуватися про це, якщо ви встановите :ref:`SceneTree.multiplayer_poll` до ``false``. За замовчуванням, :ref:`SceneTree` буде опитувати його MultiplayerAPI(s) для вас. \ **Примітка:** Цей метод призводить до того, що RPCs називається, тому вони будуть виконані в одному контексті цієї функції (наприклад, ``_process``, ``physics``, :ref:`Thread`). .. rst-class:: classref-item-separator ---- .. _class_MultiplayerAPI_method_rpc: .. rst-class:: classref-method :ref:`Error` **rpc**\ (\ peer\: :ref:`int`, object\: :ref:`Object`, method\: :ref:`StringName`, arguments\: :ref:`Array` = []\ ) :ref:`🔗` Надсилає RPC цільовому ``peer``. Даний ``method`` буде викликано на віддаленому ``об’єкті param`` із наданими аргументами ``arguments``. RPC також може викликатися локально залежно від реалізації та конфігурації RPC. Див. :ref:`Node.rpc()` і :ref:`Node.rpc_config()`. \ **Примітка.** Надавайте перевагу використанню :ref:`Node.rpc()`, :ref:`Node.rpc_id()` або ``my_method.rpc(peer, arg1, arg2, ...)`` (у GDScript), оскільки вони швидші. Цей метод здебільшого корисний у поєднанні з :ref:`MultiplayerAPIExtension` під час розширення або заміни можливостей багатокористувацької гри. .. rst-class:: classref-item-separator ---- .. _class_MultiplayerAPI_method_set_default_interface: .. rst-class:: classref-method |void| **set_default_interface**\ (\ interface_name\: :ref:`StringName`\ ) |static| :ref:`🔗` Налаштовує клас реалізації за замовчуванням. Цей метод може використовуватися модулями та розширеннями, які будуть використовуватися :ref:`SceneTree` при запуску двигуна. .. |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 (Значення не повертається.)`