Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

WebRTCMultiplayerPeer

继承: MultiplayerPeer < PacketPeer < RefCounted < Object

简单的接口,用于创建由 WebRTCPeerConnection 组成的点对点网状网络,与 MultiplayerAPI 兼容。

描述

这个类构建了一个完整的 WebRTCPeerConnection 网状结构(每个对等体有一个连接),可用作 MultiplayerAPI.multiplayer_peer

可以通过 add_peer 添加每个 WebRTCPeerConnection,或通过 remove_peer 移除它们。必须在 WebRTCPeerConnection.STATE_NEW 状态下添加对等体,以允许它创建适当的通道。这个类不会创建提交或设置描述,它只会轮询它们,并通知连接和断开连接。

当通过 create_clientcreate_server 创建对等体时, MultiplayerPeer.is_server_relay_supported 方法将返回 true,在 MultiplayerAPI 实现支持时启用对等体交换和数据包中继。

注意:导出到 Android 时,在导出项目或使用一键部署前,请确保在 Android 导出预设中启用了 INTERNET 权限。否则,任何类型的网络通信都将被 Android 阻止。

方法

Error

add_peer ( WebRTCPeerConnection peer, int peer_id, int unreliable_lifetime=1 )

Error

create_client ( int peer_id, Array channels_config=[] )

Error

create_mesh ( int peer_id, Array channels_config=[] )

Error

create_server ( Array channels_config=[] )

Dictionary

get_peer ( int peer_id )

Dictionary

get_peers ( )

bool

has_peer ( int peer_id )

void

remove_peer ( int peer_id )


方法说明

Error add_peer ( WebRTCPeerConnection peer, int peer_id, int unreliable_lifetime=1 )

以给定的 peer_id 添加一个新的对等体到网状结构。该 WebRTCPeerConnection 必须处于 WebRTCPeerConnection.STATE_NEW 状态。

将为可靠的、不可靠的和有序的传输创建三个通道。在创建不可靠和有序通道时,unreliable_lifetime 的值将被传递给 "maxPacketLifetime"选项(见 WebRTCPeerConnection.create_data_channel)。


Error create_client ( int peer_id, Array channels_config=[] )

将多人游戏对等体初始化为客户端,对等体 ID 为 peer_id(必须在 2 和 2147483647 之间)。在这种模式下,你应当只调用 add_peer 一次,使用 1 作为 peer_id。这种模式会启用 MultiplayerPeer.is_server_relay_supported,允许上层 MultiplayerAPI 执行对等体交换和数据包接力。

你也可以指定 channels_config 数组,数组中的元素为 TransferMode,会用于创建额外的通道(WebRTC 的每个通道仅支持一种传输模式)。


Error create_mesh ( int peer_id, Array channels_config=[] )

将多人游戏对等体初始化为网状(即所有对等体都互相连接),对等体 ID 为 peer_id(必须在 1 和 2147483647 之间)。


Error create_server ( Array channels_config=[] )

将多人游戏对等体作为服务器进行初始化(唯一 ID 为 1)。这种模式会启用 MultiplayerPeer.is_server_relay_supported,允许上层 MultiplayerAPI 执行对等体交换和数据包接力。

你也可以指定 channels_config 数组,数组中的元素为 TransferMode,会用于创建额外的通道(WebRTC 的每个通道仅支持一种传输模式)。


Dictionary get_peer ( int peer_id )

返回 ID 为 peer_id 的对等体的字典表示,其中包含三个字段。"connection" 包含与这个对等体的 WebRTCPeerConnection"channels" 是三个 WebRTCDataChannel 的数组,而 "connected" 则是代表对等体目前是否已连接的布尔值(三个通道均已开放)。


Dictionary get_peers ( )

返回一个字典,其键是对等体的 id,其值是对等体的表示,如 get_peer


bool has_peer ( int peer_id )

如果给定的 peer_id 在对等体映射中,则返回 true(尽管它可能没有连接)。


void remove_peer ( int peer_id )

从 mesh 结构中移除具有给定 peer_id 的对等体。如果该对等体已连接,并且为它发出过 MultiplayerPeer.peer_connected,那么 MultiplayerPeer.peer_disconnected 也将被发出。