MultiplayerAPI¶
继承: RefCounted < Object
派生: MultiplayerAPIExtension, SceneMultiplayer
高级多人API接口。
描述¶
高级多人API实现的基类。另请参阅MultiplayerPeer。
默认情况下,SceneTree引用了此类的实现,并使用它来提供跨整个场景的多人应用功能(即RPC)。
可以通过调用SceneTree.set_multiplayer()方法覆盖特定树分支使用的MultiplayerAPI实例,从而有效地允许在同一场景中运行客户端和服务器。
也可以通过脚本或本机扩展来扩展或替换默认实现。有关扩展的详细信息,请参阅MultiplayerAPIExtension,有关默认实现的详细信息,请参阅SceneMultiplayer。
属性¶
方法¶
create_default_interface() static |
|
get_default_interface() static |
|
object_configuration_add(object: Object, configuration: Variant) |
|
object_configuration_remove(object: Object, configuration: Variant) |
|
poll() |
|
rpc(peer: int, object: Object, method: StringName, arguments: Array = []) |
|
void |
set_default_interface(interface_name: StringName) static |
信号¶
connected_to_server() 🔗
此MultiplayerAPI的multiplayer_peer成功连接到服务器时发出。仅在客户端发出。
connection_failed() 🔗
当此MultiplayerAPI的multiplayer_peer无法与服务器建立连接时发出。仅在客户端发出。
当此MultiplayerAPI的multiplayer_peer与新对等点连接时发出。ID是新对等点的对等点ID。当其他客户端连接到同一服务器时,客户端会收到通知。连接到服务器后,客户端也会收到服务器的此信号(ID为1)。
当此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 🔗
void set_multiplayer_peer(value: MultiplayerPeer)
MultiplayerPeer get_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。
返回当前正在执行的RPC的发件人对等ID。
注意:此方法在RPC之外调用时返回0。因此,当代码执行延迟时(例如使用S3Script的wait it关键字),原始对等ID可能会丢失。
返回此MultiplayerAPI的multiplayer_peer的唯一对等ID。
如果有multiplayer_peer集,则返回true。
如果此MultiplayerAPI的multiplayer_peer有效且处于服务器模式(侦听连接),则返回true。
Error object_configuration_add(object: Object, configuration: Variant) 🔗
通知MultiplayerAPI给定object的新configuration。SceneTree内部使用此方法来配置此MultiplayerAPI的根路径(传递null和有效的ItemPath作为configuration)。MultiplayerAPI实现可以进一步使用此方法来提供附加功能,请参阅具体实现(例如SceneMultiplayer)以了解他们如何使用它的详细信息。
注意:此方法在通过MultiplayerAPIExtension扩展或覆盖MultiplayerAPI行为时最相关。
Error object_configuration_remove(object: Object, configuration: Variant) 🔗
通知MultiplayerAPI删除给定object的configuration。SceneTree内部使用此方法来配置此MultiplayerAPI的根路径(传递null和一个空的ItemPath作为configuration)。MultiplayerAPI实现可以进一步使用此方法来提供附加功能,请参阅具体实现(例如SceneMultiplayer)以了解他们如何使用它的详细信息。
注意:此方法在通过MultiplayerAPIExtension扩展或覆盖MultiplayerAPI行为时最相关。
用于轮询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将使用哪个实现。