MultiplayerAPI

继承: RefCounted < Object

派生: MultiplayerAPIExtension, SceneMultiplayer

高级多人API接口。

描述

高级多人API实现的基类。另请参阅MultiplayerPeer

默认情况下,SceneTree引用了此类的实现,并使用它来提供跨整个场景的多人应用功能(即RPC)。

可以通过调用SceneTree.set_multiplayer()方法覆盖特定树分支使用的MultiplayerAPI实例,从而有效地允许在同一场景中运行客户端和服务器。

也可以通过脚本或本机扩展来扩展或替换默认实现。有关扩展的详细信息,请参阅MultiplayerAPIExtension,有关默认实现的详细信息,请参阅SceneMultiplayer

属性

方法


信号

connected_to_server() 🔗

此MultiplayerAPI的multiplayer_peer成功连接到服务器时发出。仅在客户端发出。


connection_failed() 🔗

当此MultiplayerAPI的multiplayer_peer无法与服务器建立连接时发出。仅在客户端发出。


peer_connected(id: int) 🔗

当此MultiplayerAPI的multiplayer_peer与新对等点连接时发出。ID是新对等点的对等点ID。当其他客户端连接到同一服务器时,客户端会收到通知。连接到服务器后,客户端也会收到服务器的此信号(ID为1)。


peer_disconnected(id: int) 🔗

当此MultiplayerAPI的multiplayer_peer与对等点断开连接时发出。当其他客户端与同一服务器断开连接时,客户端会收到通知。


server_disconnected() 🔗

此MultiplayerAPI的multiplayer_peer与服务器断开连接时发出。仅在客户端发出。


枚举

enum RPCMode: 🔗

RPCMode RPC_MODE_DISABLED = 0

Item.rpc_config()一起使用以禁用所有RPC调用的方法或属性,使其不可用。所有方法的默认值。

RPCMode RPC_MODE_ANY_PEER = 1

Item.rpc_config()一起使用,以设置任何对等点都可以远程调用的方法。类似于@rpc("any_peer")注释。接受来自所有远程对等点的调用,无论它们是否是节点的权限。

RPCMode RPC_MODE_AUTHORITY = 2

Item.rpc_config()一起使用,用于将方法设置为只能由当前多人应用权限(默认为服务器)远程调用。类似于@rpc(“权限”)注释。参见Item.set_multiplayer_authority()


属性说明

MultiplayerPeer multiplayer_peer 🔗

处理RPC系统的对等对象(设置时有效地启用网络)。根据对等体本身,MultiplayerAPI将成为网络服务器(检查is_server()),并将根节点的网络模式设置为权限,或者它将成为常规客户端对等体。默认情况下,所有子节点都设置为继承网络模式。网络相关事件(连接、断开连接、新客户端)的处理是通过连接到MultiplayerAPI的信号来完成的。


方法说明

MultiplayerAPI create_default_interface() static 🔗

返回默认MultiplayerAPI的新实例。


StringName get_default_interface() static 🔗

返回默认的MultiplayerAPI实现类名。当SceneMultiplayer可用时,这通常是"SceneMultiplayer"。参见set_default_interface()


PackedInt32Array get_peers() 🔗

返回此MultiplayerAPI的multiplayer_peer的所有连接对等点的对等点ID。


int get_remote_sender_id() 🔗

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

注意:此方法在RPC之外调用时返回0。因此,当代码执行延迟时(例如使用S3Script的wait it关键字),原始对等ID可能会丢失。


int get_unique_id() 🔗

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


bool has_multiplayer_peer() 🔗

如果有multiplayer_peer集,则返回true


bool is_server() 🔗

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


Error object_configuration_add(object: Object, configuration: Variant) 🔗

通知MultiplayerAPI给定object的新configurationSceneTree内部使用此方法来配置此MultiplayerAPI的根路径(传递null和有效的ItemPath作为configuration)。MultiplayerAPI实现可以进一步使用此方法来提供附加功能,请参阅具体实现(例如SceneMultiplayer)以了解他们如何使用它的详细信息。

注意:此方法在通过MultiplayerAPIExtension扩展或覆盖MultiplayerAPI行为时最相关。


Error object_configuration_remove(object: Object, configuration: Variant) 🔗

通知MultiplayerAPI删除给定objectconfigurationSceneTree内部使用此方法来配置此MultiplayerAPI的根路径(传递null和一个空的ItemPath作为configuration)。MultiplayerAPI实现可以进一步使用此方法来提供附加功能,请参阅具体实现(例如SceneMultiplayer)以了解他们如何使用它的详细信息。

注意:此方法在通过MultiplayerAPIExtension扩展或覆盖MultiplayerAPI行为时最相关。


Error poll() 🔗

用于轮询MultiplayerAPI的方法。如果您将SceneTree.multiplayer_poll设置为false,您只需要担心这个问题。默认情况下,SceneTree将为您轮询其MultiplayerAPI。

注意:此方法导致RPC被调用,因此它们将在此函数的相同上下文中执行(例如_process物理Thread)。


Error rpc(peer: int, object: Object, method: StringName, arguments: Array = []) 🔗

向目标peer发送RPC。将使用提供的arguments在远程object上调用给定的method。根据实现和RPC配置,也可以在本地调用RPC。请参阅Item.rpc()Item.rpc_config()

注意:更喜欢使用Item.rpc()Item.rpc_id()my_method.rpc(peer1,arg2,…)(在S3Script中),因为它们更快。这种方法在扩展或替换多人应用功能时与MultiplayerAPIExtension结合使用时最有用。


void set_default_interface(interface_name: StringName) static 🔗

设置默认的MultiplayerAPI实现类。模块和扩展可以使用此方法来配置引擎启动时SceneTree将使用哪个实现。