WebRTCMultiplayerPeer
继承: MultiplayerPeer < PacketPeer < RefCounted < Object
简单的接口,用于创建由 WebRTCPeerConnection 组成的点对点网状网络,与 MultiplayerAPI 兼容。
描述
这个类构建了一个完整的 WebRTCPeerConnection 网状结构(每个对等体有一个连接),可用作 MultiplayerAPI.multiplayer_peer。
可以通过 add_peer 添加每个 WebRTCPeerConnection,或通过 remove_peer 移除它们。必须在 WebRTCPeerConnection.STATE_NEW 状态下添加对等体,以允许它创建适当的通道。这个类不会创建提交或设置描述,它只会轮询它们,并通知连接和断开连接。
当通过 create_client 或 create_server 创建对等体时, MultiplayerPeer.is_server_relay_supported 方法将返回 true
,在 MultiplayerAPI 实现支持时启用对等体交换和数据包中继。
注意:导出到 Android 时,在导出项目或使用一键部署前,请确保在 Android 导出预设中启用了 INTERNET
权限。否则,任何类型的网络通信都将被 Android 阻止。
方法
add_peer(peer: WebRTCPeerConnection, peer_id: int, unreliable_lifetime: int = 1) | |
create_client(peer_id: int, channels_config: Array = []) | |
create_mesh(peer_id: int, channels_config: Array = []) | |
create_server(channels_config: Array = []) | |
void | remove_peer(peer_id: int) |
方法说明
Error add_peer(peer: WebRTCPeerConnection, peer_id: int, unreliable_lifetime: int = 1) 🔗
以给定的 peer_id
添加一个新的对等体到网状结构。该 WebRTCPeerConnection 必须处于 WebRTCPeerConnection.STATE_NEW 状态。
将为可靠的、不可靠的和有序的传输创建三个通道。在创建不可靠和有序通道时,unreliable_lifetime
的值将被传递给 "maxPacketLifetime"
选项(见 WebRTCPeerConnection.create_data_channel)。
Error create_client(peer_id: int, channels_config: Array = []) 🔗
将多人游戏对等体初始化为客户端,对等体 ID 为 peer_id
(必须在 2 和 2147483647 之间)。在这种模式下,你应当只调用 add_peer 一次,使用 1
作为 peer_id
。这种模式会启用 MultiplayerPeer.is_server_relay_supported,允许上层 MultiplayerAPI 执行对等体交换和数据包接力。
你也可以指定 channels_config
数组,数组中的元素为 TransferMode,会用于创建额外的通道(WebRTC 的每个通道仅支持一种传输模式)。
Error create_mesh(peer_id: int, channels_config: Array = []) 🔗
将多人游戏对等体初始化为网状(即所有对等体都互相连接),对等体 ID 为 peer_id
(必须在 1 和 2147483647 之间)。
Error create_server(channels_config: Array = []) 🔗
将多人游戏对等体作为服务器进行初始化(唯一 ID 为 1
)。这种模式会启用 MultiplayerPeer.is_server_relay_supported,允许上层 MultiplayerAPI 执行对等体交换和数据包接力。
你也可以指定 channels_config
数组,数组中的元素为 TransferMode,会用于创建额外的通道(WebRTC 的每个通道仅支持一种传输模式)。
Dictionary get_peer(peer_id: int) 🔗
返回 ID 为 peer_id
的对等体的字典表示,其中包含三个字段。"connection"
包含与这个对等体的 WebRTCPeerConnection,"channels"
是三个 WebRTCDataChannel 的数组,而 "connected"
则是代表对等体目前是否已连接的布尔值(三个通道均已开放)。
Dictionary get_peers() 🔗
返回一个字典,其键是对等体的 id,其值是对等体的表示,如 get_peer。
如果给定的 peer_id
在对等体映射中,则返回 true
(尽管它可能没有连接)。
void remove_peer(peer_id: int) 🔗
从 mesh 结构中移除具有给定 peer_id
的对等体。如果该对等体已连接,并且为它发出过 MultiplayerPeer.peer_connected,那么 MultiplayerPeer.peer_disconnected 也将被发出。