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.

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 阻止。

方法

Error

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

Error

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

Error

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

Error

create_server(channels_config: Array = [])

Dictionary

get_peer(peer_id: int)

Dictionary

get_peers()

bool

has_peer(peer_id: int)

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()


bool has_peer(peer_id: int) 🔗

如果給定的 peer_id 在對等體對應中,則返回 true(儘管它可能沒有連接)。


void remove_peer(peer_id: int) 🔗

從 mesh 結構中移除具有給定 peer_id 的對等體。如果該對等體已連接,並且為它發出過 MultiplayerPeer.peer_connected,那麼 MultiplayerPeer.peer_disconnected 也將被發出。