MultiplayerAPI
继承
简要描述
高级多人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_config或Node.rset_config一起使用可禁用所有RPC调用的方法或属性,从而使其不可用。
- **RPC_MODE_REMOTE = 1**
与Node.rpc_config或Node.rset_config一起使用,以设置仅在远程端而不是本地端调用的方法或更改属性。
- **RPC_MODE_MASTER = 2**
与Node.rpc_config或Node.rset_config一起使用,以设置仅在此节点的网络主机上要调用的方法或要更改的属性。
- **RPC_MODE_PUPPET = 3**
与Node.rpc_config或Node.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,因此它们将在此函数的同一上下文中执行(例如_process
,physics
,Thread)。
- 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管理场景树的不同分支,例如允许在同一场景中同时运行客户端和服务器。