跳到主要内容

MultiplayerAPI

继承

Reference

简要描述

高级多人API。

描述

此类实现了高级多人API背后的大多数逻辑。

默认情况下,SceneTree引用了该类,该类用于在整个场景中提供多人游戏功能(即RPC /RSET)。

通过设置Node.custom_multiplayer属性,可以覆盖特定节点使用的MultiplayerAPI实例,从而有效地允许客户端和服务器在同一场景中运行。

成员

类型属性名默认值
boolallow_object_decodingfalse
NetworkedMultiplayerPeernetwork_peer
boolrefuse_new_network_connectionsfalse

方法

返回值类型方法名称
voidclear()
PoolIntArrayget_network_connected_peers() const
intget_network_unique_id() const
intget_rpc_sender_id() const
boolhas_network_peer() const
boolis_network_server() const
voidpoll()
intsend_bytes(bytes: PoolByteArray, id: int = 0, mode: int = 2)
voidset_root_node(node: Node)

信号

  • **connected_to_server**

当此MultiplayerAPI的network_peer成功连接到服务器时发出。


  • **connection_failed**

当此MultiplayerAPI的network_peer无法建立与服务器的连接时触发。


  • **network_peer_connected**

当此MultiplayerAPI的network_peer与新的对等方连接时触发。


  • **network_peer_disconnected**

当此MultiplayerAPI的network_peer与对等方断开连接时触发。


  • **network_peer_packet**

当此MultiplayerAPI的network_peer收到带有自定义数据的数据包时发出(请参阅send_bytes)。


  • **server_disconnected**

当此MultiplayerAPI的network_peer与服务器断开连接时触发。


枚举

enum RPCMode:

  • **RPC_MODE_DISABLED = 0**

Node.rpc_configNode.rset_config一起使用可禁用所有RPC调用的方法或属性,从而使其不可用。

  • **RPC_MODE_REMOTE = 1**

Node.rpc_configNode.rset_config一起使用,以设置仅在远程端而不是本地端调用的方法或更改属性。

  • **RPC_MODE_MASTER = 2**

Node.rpc_configNode.rset_config一起使用,以设置仅在此节点的网络主机上要调用的方法或要更改的属性。

  • **RPC_MODE_PUPPET = 3**

Node.rpc_configNode.rset_config一起使用,以设置仅在此节点的木偶上调用的方法或要更改的属性。

  • **RPC_MODE_SLAVE = 3**

已弃用。改用RPC_MODE_PUPPET

  • **RPC_MODE_REMOTESYNC = 4**

RPC_MODE_REMOTE一样,也可以在本地更改调用或属性。

  • **RPC_MODE_SYNC = 4**

已弃用。改用RPC_MODE_REMOTESYNC

  • **RPC_MODE_MASTERSYNC = 5**

RPC_MODE_MASTER一样,但也可以在本地更改调用或属性。

  • **RPC_MODE_PUPPETSYNC = 6**

RPC_MODE_PUPPET一样,但也可以在本地更改调用或属性。


常量

成员说明

  • bool allow_object_decoding
Defaultfalse
setterset_allow_object_decoding(value)
getteris_object_decoding_allowed
  • NetworkedMultiplayerPeer network_peer
setterset_network_peer(value)
getterget_network_peer
  • bool refuse_new_network_connections
Defaultfalse
setterset_refuse_new_network_connections(value)
getteris_refusing_new_network_connections

方法说明

  • clear clear()

清除当前的MultiplayerAPI网络状态(除非您知道自己在做什么,否则不应调用此状态)。


  • get_network_connected_peers get_network_connected_peers() const

返回此MultiplayerAPI的network_peer的所有已连接对等方的对等ID。


  • get_network_unique_id get_network_unique_id() const

返回此MultiplayerAPI的network_peer的唯一对等ID。


  • get_rpc_sender_id get_rpc_sender_id() const

返回当前正在执行的RPC的发件人对等ID。

注意:如果不在RPC内,则此方法将返回0。


  • has_network_peer has_network_peer() const

如果设置了network_peer,则返回true


  • is_network_server is_network_server() const

如果此MultiplayerAPI的network_peer处于服务器模式(侦听连接),则返回true


  • poll poll()

用于轮询MultiplayerAPI的方法。

注意:此方法会调用RPC和RSET,因此它们将在此函数的同一上下文中执行(例如_processphysicsThread)。


  • send_bytes send_bytes(bytes: PoolByteArray, id: int = 0, mode: int = 2)

将给定的原始bytes发送到由id标识的特定对等方(请参见NetworkedMultiplayerPeer.set_target_peer)。


  • set_root_node set_root_node(node: Node)

设置要用于RPC的基本根节点。

这有效地允许由不同的MultiplayerAPI管理场景树的不同分支,例如允许在同一场景中同时运行客户端和服务器。