MultiplayerSynchronizer¶
将属性从多人应用权威同步到远程对等体。
描述¶
默认情况下, MultiplayerSynchronizer 将配置的属性同步到所有对等方。
可见性可以直接使用 set_visibility_for() 或根据需要使用 add_visibility_filter() 和 update_visibility() 来处理。
MultiplayerSpawner将根据同步器的可见性来处理节点,只要 root_path 处的节点由一个派生。
在内部, MultiplayerSynchronizer 使用 MultiplayerAPI.object_configuration_add() 通知同步开始,将 Item 在 root_path 作为 对象 ,将自身作为 configuration,并使用 MultiplayerAPI.object_configuration_remove() 到以类似的方式通知同步结束。
注意:不支持对 Object 类型属性进行同步,如 Resource 。对于每个对等方唯一的属性,如 Object (请参见 Object.get_instance_id() )或 RID 的实例id,也不会在同步中工作。
属性¶
|
||
|
||
|
||
|
||
|
方法¶
void |
add_visibility_filter(filter: Callable) |
get_visibility_for(peer: int) const |
|
void |
remove_visibility_filter(filter: Callable) |
void |
set_visibility_for(peer: int, visible: bool) |
void |
update_visibility(for_peer: int = 0) |
信号¶
delta_synchronized() 🔗
属性发生更新后,该同步器收到新的增量同步状态时发出。
synchronized() 🔗
属性发生更新后,该同步器收到新的同步状态时发出。
visibility_changed(for_peer: int) 🔗
当 for_peer 的可见性发生更新时发出。见 update_visibility()。
枚举¶
enum VisibilityUpdateMode: 🔗
VisibilityUpdateMode VISIBILITY_PROCESS_IDLE = 0
可见性过滤器的更新发生在处理帧中(见 Item.NOTIFICATION_INTERNAL_PROCESS)。
VisibilityUpdateMode VISIBILITY_PROCESS_PHYSICS = 1
可见性过滤器的更新发生在物理帧中(见 Item.NOTIFICATION_INTERNAL_PHYSICS_PROCESS)。
VisibilityUpdateMode VISIBILITY_PROCESS_NONE = 2
可见性过滤器不会自动更新,必须通过调用 update_visibility() 手动更新。
属性说明¶
两次增量同步之间的时间间隔。复制设为 SceneReplicationConfig.REPLICATION_MODE_ON_CHANGE 时使用。如果设置为 0.0(默认值)时,每个网络处理帧都会发生增量同步。
bool public_visibility = true 🔗
默认情况下,同步是否应该对所有对等体可见。有关配置细粒度可见性选项的方法,请参阅 set_visibility_for() 和 add_visibility_filter()。
SceneReplicationConfig replication_config 🔗
void set_replication_config(value: SceneReplicationConfig)
SceneReplicationConfig get_replication_config()
包含要同步的属性的资源。
float replication_interval = 0.0 🔗
两次同步之间的时间间隔。复制设置为 SceneReplicationConfig.REPLICATION_MODE_ALWAYS 时使用。如果设置为 0.0(默认值)时,每个网络处理帧都会发生同步。
ItemPath root_path = ItemPath("..") 🔗
复制属性相对的节点路径。
如果 root_path 是由 MultiplayerSpawner 生成的,则该节点也将根据此同步器可见性选项生成和消失。
VisibilityUpdateMode visibility_update_mode = 0 🔗
void set_visibility_update_mode(value: VisibilityUpdateMode)
VisibilityUpdateMode get_visibility_update_mode()
指定何时更新可见性过滤器(有关选项见 VisibilityUpdateMode)。
方法说明¶
void add_visibility_filter(filter: Callable) 🔗
Adds a peer visibility filter for this synchronizer.
filter should take a peer ID int and return a bool.
bool get_visibility_for(peer: int) const 🔗
查询对等体 peer 的当前可见性。
void remove_visibility_filter(filter: Callable) 🔗
从该同步器中移除某个对等体的可见性过滤器。
void set_visibility_for(peer: int, visible: bool) 🔗
将 peer 的可见性设置为 visible。如果 peer 为 0,则会改为更新 public_visibility 的值。
void update_visibility(for_peer: int = 0) 🔗
根据可见性过滤器更新 for_peer 的可见性。如果 for_peer 为 0(默认值),则更新所有对等体的可见性。