Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
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 ( WebRTCPeerConnection peer, int peer_id, int unreliable_lifetime=1 ) |
|
create_client ( int peer_id, Array channels_config=[] ) |
|
create_mesh ( int peer_id, Array channels_config=[] ) |
|
create_server ( Array channels_config=[] ) |
|
get_peers ( ) |
|
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。
如果给定的 peer_id
在对等体映射中,则返回 true
(尽管它可能没有连接)。
void remove_peer ( int peer_id )
从 mesh 结构中移除具有给定 peer_id
的对等体。如果该对等体已连接,并且为它发出过 MultiplayerPeer.peer_connected,那么 MultiplayerPeer.peer_disconnected 也将被发出。