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(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(預設值),則更新所有對等體的可見性。