多叶剑¶
类别: 核心
简要说明¶
高级多人API。
属性¶
假 |
||
假 |
方法¶
无效 |
clear ( ) |
get_network_connected_peers ( ) const |
|
get_network_unique_id ( ) const |
|
get_rpc_sender_id ( ) const |
|
has_network_peer ( ) const |
|
is_network_server ( ) const |
|
无效 |
poll ( ) |
send_bytes ( PoolByteArray bytes, int id=0, TransferMode mode=2 ) |
|
无效 |
set_root_node ( Node node ) |
信号¶
connected_to_server ( )
当这个多叶龙 network_peer 已成功连接到服务器。仅在客户端上发出。
connection_failed ( )
当这个多叶龙 network_peer 无法建立到服务器的连接。仅在客户端上发出。
network_peer_connected ( int id )
当这个多叶龙 network_peer 与新的对等机连接。ID是新对等机的对等机ID。当其他客户端连接到同一服务器时,客户端会收到通知。在连接到服务器时,客户机还接收服务器的此信号(ID为1)。
network_peer_disconnected ( int id )
当这个多叶龙 network_peer 从对等机断开连接。当其他客户端与同一服务器断开连接时,客户端会收到通知。
network_peer_packet ( int id, PoolByteArray packet )
当这个多叶龙 network_peer 接收 packet
使用自定义数据(请参见 send_bytes )ID是发送数据包的对等机的对等机ID。
server_disconnected ( )
当这个多叶龙 network_peer 断开与服务器的连接。仅在客户端上发出。
枚举¶
枚举 RPCMode :
RPC_MODE_DISABLED = 0 ---用于 Node.rpc_config 或 Node.rset_config 禁用所有RPC调用的方法或属性,使其不可用。所有方法的默认值。
RPC_MODE_REMOTE = 1 ---用于 Node.rpc_config 或 Node.rset_config 只在远程端(而不是本地端)设置要调用的方法或要更改的属性。类似于
remote
关键字。从所有远程对等机接受调用和属性更改,无论它们是节点的主节点还是木偶节点。RPC_MODE_MASTER = 2 ---用于 Node.rpc_config 或 Node.rset_config 为该节点设置只在网络主机上调用的方法或要更改的属性。类似于
master
关键字。只接受来自节点网络玩偶的调用或属性更改,请参见 Node.set_network_master .RPC_MODE_PUPPET = 3 ---用于 Node.rpc_config 或 Node.rset_config 为该节点设置只在Puppets上调用的方法或要更改的属性。类似于
puppet
关键字。只接受来自节点的网络主节点的调用或属性更改,请参见 Node.set_network_master .RPC_MODE_SLAVE = 3 --- 已弃用。 使用 RPC_MODE_PUPPET 相反。类似于
slave
关键字。RPC_MODE_REMOTESYNC = 4 ---表现得像 RPC_MODE_REMOTE 但也要在本地更改呼叫或属性。类似于
remotesync
关键字。RPC_MODE_SYNC = 4 --- 已弃用。 使用 RPC_MODE_REMOTESYNC 相反。类似于
sync
关键字。RPC_MODE_MASTERSYNC = 5 ---表现得像 RPC_MODE_MASTER 但也要在本地更改呼叫或属性。类似于
mastersync
关键字。RPC_MODE_PUPPETSYNC = 6 ---表现得像 RPC_MODE_PUPPET 但也要在本地更改呼叫或属性。类似于
puppetsync
关键字。
描述¶
这个类实现了高级多人API背后的大部分逻辑。
默认情况下, SceneTree 具有对此类的引用,该类用于在整个场景中提供多人功能(即rpc/rset)。
可以通过设置 Node.custom_multiplayer 属性,有效地允许在同一场景中运行客户机和服务器。
属性描述¶
bool allow_object_decoding
违约 |
假 |
设定器 |
设置允许对象解码(值) |
吸气剂 |
_object_decoding_allowed()允许吗? |
如果 true
(或者如果 network_peer 有 PacketPeer.allow_object_decoding 设置为 true
)multiplayerapi将允许在rpcs/rset期间对对象进行编码和解码。
警告: 反序列化对象可以包含执行的代码。如果序列化对象来自不受信任的源,请不要使用此选项,以避免潜在的安全威胁,如远程代码执行。
NetworkedMultiplayerPeer network_peer
设定器 |
设置网络对等(值) |
吸气剂 |
获取网络对等机() |
处理RPC系统的对等对象(设置时有效启用网络)。根据对等机本身,multiplayerapi将成为网络服务器(请检查 is_network_server )并将根节点的网络模式设置为master(请参见 NETWORK_MODE_*
中的常量 Node 否则,它将成为根节点设置为puppet的常规对等机。默认情况下,所有子节点都设置为继承网络模式。处理网络相关事件(连接、断开连接、新客户机)是通过连接多个Ayerapi的信号来完成的。
bool refuse_new_network_connections
违约 |
假 |
设定器 |
设置“拒绝”新网络连接(值) |
吸气剂 |
是否拒绝新的网络连接 |
如果 true
多层面的 network_peer 拒绝新的传入连接。
方法说明¶
void clear ( )
清除当前的multiplayerapi网络状态(除非您知道自己在做什么,否则不应调用此状态)。
PoolIntArray get_network_connected_peers ( ) const
返回此multiplayerapi的所有连接对等机的对等机ID network_peer .
int get_network_unique_id ( ) const
返回此multiplayerapi的唯一对等ID network_peer .
int get_rpc_sender_id ( ) const
返回当前正在执行的RPC的发送方对等ID。
注: 如果不在RPC中,此方法将返回0。
bool has_network_peer ( ) const
返回 true
如果有 network_peer 集合。
bool is_network_server ( ) const
返回 true
如果这辆多轮车 network_peer 处于服务器模式(正在侦听连接)。
void poll ( )
用于轮询multiplayerapi的方法。如果你使用 Node.custom_multiplayer 覆盖或设置 SceneTree.multiplayer_poll 到 false
. 默认情况下, SceneTree 将为您投票。
注: 此方法导致调用rpcs和rset,因此它们将在此函数的同一上下文中执行(例如 _process
, physics
, Thread )
Error send_bytes ( PoolByteArray bytes, int id=0, TransferMode mode=2 )
发送给定的原始 bytes
到特定的对等机 id
(见 NetworkedMultiplayerPeer.set_target_peer )默认ID为 0
即向所有同行广播。
void set_root_node ( Node node )
设置要用于RPC的基根节点。将使用相对路径来查找应在其上执行RPC的节点,而不是绝对路径。
这有效地允许场景树的不同分支由不同的multiplayerapi管理,例如允许在同一场景中运行客户机和服务器。