Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
MultiplayerSynchronizer¶
将属性从多人游戏权威同步到远程对等体。
描述¶
默认情况下,MultiplayerSynchronizer 会将配置的属性同步到所有对等体。
可以使用 set_visibility_for 直接处理可见性,也可以通过 add_visibility_filter 和 update_visibility 在需要时进行处理。
MultiplayerSpawner 会根据同步器的可见性来处理节点,只要 root_path 的节点是出生出来的。
内部而言,MultiplayerSynchronizer 使用 MultiplayerAPI.object_configuration_add 来通知同步开始,将位于 root_path 的 Node 作为 object
传入、将自己作为 configuration
传入。使用 MultiplayerAPI.object_configuration_remove 通知同步结束的方法相同。
注意:不支持对 Resource 等 Object 类型属性进行同步。对等体的唯一属性也无法进行同步,例如 Object 的实例 ID(见 Object.get_instance_id)或 RID。
属性¶
|
||
|
||
|
||
|
||
|
方法¶
void |
add_visibility_filter ( Callable filter ) |
get_visibility_for ( int peer ) const |
|
void |
remove_visibility_filter ( Callable filter ) |
void |
set_visibility_for ( int peer, bool visible ) |
void |
update_visibility ( int for_peer=0 ) |
信号¶
delta_synchronized ( )
属性发生更新后,该同步器收到新的增量同步状态时发出。
synchronized ( )
属性发生更新后,该同步器收到新的同步状态时发出。
visibility_changed ( int for_peer )
当 for_peer
的可见性发生更新时发出。见 update_visibility。
枚举¶
enum VisibilityUpdateMode:
VisibilityUpdateMode VISIBILITY_PROCESS_IDLE = 0
可见性过滤器的更新发生在处理帧中(见 Node.NOTIFICATION_INTERNAL_PROCESS)。
VisibilityUpdateMode VISIBILITY_PROCESS_PHYSICS = 1
可见性过滤器的更新发生在物理帧中(见 Node.NOTIFICATION_INTERNAL_PHYSICS_PROCESS)。
VisibilityUpdateMode VISIBILITY_PROCESS_NONE = 2
可见性过滤器不会自动更新,必须通过调用 update_visibility 手动更新。
属性说明¶
float delta_interval = 0.0
两次增量同步之间的时间间隔。当设置为 0.0
(默认值)时,每个网络处理帧都会发生增量同步。
bool public_visibility = true
默认情况下,同步是否应该对所有对等体可见。有关配置细粒度可见性选项的方法,请参阅 set_visibility_for 和 add_visibility_filter。
SceneReplicationConfig replication_config
void set_replication_config ( SceneReplicationConfig value )
SceneReplicationConfig get_replication_config ( )
包含要同步的属性的资源。
float replication_interval = 0.0
两次同步之间的时间间隔。当设置为 0.0
(默认值)时,每个网络处理帧都会发生同步。
NodePath root_path = NodePath("..")
复制属性相对的节点路径。
如果 root_path 是由 MultiplayerSpawner 生成的,则该节点也将根据此同步器可见性选项生成和消失。
VisibilityUpdateMode visibility_update_mode = 0
void set_visibility_update_mode ( VisibilityUpdateMode value )
VisibilityUpdateMode get_visibility_update_mode ( )
指定何时更新可见性过滤器(有关选项见 VisibilityUpdateMode)。
方法说明¶
void add_visibility_filter ( Callable filter )
为该同步器添加对等体可见性过滤器。
filter
应该接受对等体 ID int,返回 bool。
bool get_visibility_for ( int peer ) const
查询对等体 peer
的当前可见性。
void remove_visibility_filter ( Callable filter )
从该同步器中移除某个对等体的可见性过滤器。
void set_visibility_for ( int peer, bool visible )
将 peer
的可见性设置为 visible
。如果 peer
为 0
,则会改为更新 public_visibility 的值。
void update_visibility ( int for_peer=0 )
根据可见性过滤器更新 for_peer
的可见性。如果 for_peer
为 0
(默认值),则更新所有对等体的可见性。