跳转至

MultiplayerAPI

继承

Reference

简要描述

高级多人API。

描述

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

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

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

成员

类型 属性名 默认值
bool allow_object_decoding false
NetworkedMultiplayerPeer network_peer
bool refuse_new_network_connections false

方法

返回值类型 方法名称
void clear()
PoolIntArray get_network_connected_peers() const
int get_network_unique_id() const
int get_rpc_sender_id() const
bool has_network_peer() const
bool is_network_server() const
void poll()
int send_bytes(bytes: PoolByteArray, id: int = 0, mode: int = 2)
void set_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
Default false
setter set_allow_object_decoding(value)
getter is_object_decoding_allowed
  • NetworkedMultiplayerPeer network_peer
setter set_network_peer(value)
getter get_network_peer
  • bool refuse_new_network_connections
Default false
setter set_refuse_new_network_connections(value)
getter is_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管理场景树的不同分支,例如允许在同一场景中同时运行客户端和服务器。