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