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(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 也將被發出。