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(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
可見性篩檢程式的更新發生在處理影格中(見 Node.NOTIFICATION_INTERNAL_PROCESS)。
VisibilityUpdateMode VISIBILITY_PROCESS_PHYSICS = 1
可見性篩檢程式的更新發生在物理影格中(見 Node.NOTIFICATION_INTERNAL_PHYSICS_PROCESS)。
VisibilityUpdateMode VISIBILITY_PROCESS_NONE = 2
可見性篩檢程式不會自動更新,必須通過呼叫 update_visibility() 手動更新。
屬性說明
Time interval between delta synchronizations. Used when the replication is set to SceneReplicationConfig.REPLICATION_MODE_ON_CHANGE. If set to 0.0 (the default), delta synchronizations happen every network process frame.
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 🔗
Time interval between synchronizations. Used when the replication is set to SceneReplicationConfig.REPLICATION_MODE_ALWAYS. If set to 0.0 (the default), synchronizations happen every network process frame.
NodePath root_path = NodePath("..") 🔗
複製屬性相對的節點路徑。
如果 root_path 是由 MultiplayerSpawner 生成的,則該節點也將根據此同步器可見性選項生成和消失。
VisibilityUpdateMode visibility_update_mode = 0 🔗
void set_visibility_update_mode(value: VisibilityUpdateMode)
VisibilityUpdateMode get_visibility_update_mode()
Specifies when visibility filters are updated.
方法說明
void add_visibility_filter(filter: Callable) 🔗
為該同步器新增對等體可見性篩檢程式。
filter 應該接受對等體 ID int,返回 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(預設值),則更新所有對等體的可見性。