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.

MultiplayerSynchronizer

繼承: Node < Object

將屬性從多人遊戲權威同步到遠程對等體。

說明

預設情況下,MultiplayerSynchronizer 會將配置的屬性同步到所有對等體。

可以使用 set_visibility_for() 直接處理可見性,也可以通過 add_visibility_filter()update_visibility() 在需要時進行處理。

MultiplayerSpawner 會根據同步器的可見性來處理節點,只要 root_path 的節點是出生出來的。

內部而言,MultiplayerSynchronizer 使用 MultiplayerAPI.object_configuration_add() 來通知同步開始,將位於 root_pathNode 作為 object 傳入、將自己作為 configuration 傳入。使用 MultiplayerAPI.object_configuration_remove() 通知同步結束的方法相同。

注意:不支援對 ResourceObject 型別屬性進行同步。對等體的唯一屬性也無法進行同步,例如 Object 的實例 ID(見 Object.get_instance_id())或 RID

屬性

float

delta_interval

0.0

bool

public_visibility

true

SceneReplicationConfig

replication_config

float

replication_interval

0.0

NodePath

root_path

NodePath("..")

VisibilityUpdateMode

visibility_update_mode

0

方法

void

add_visibility_filter(filter: Callable)

bool

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() 手動更新。


屬性說明

float delta_interval = 0.0 🔗

  • void set_delta_interval(value: float)

  • float get_delta_interval()

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 🔗

  • void set_visibility_public(value: bool)

  • bool is_visibility_public()

預設情況下,同步是否應該對所有對等體可見。有關配置細細微性可見性選項的方法,請參閱 set_visibility_for()add_visibility_filter()


SceneReplicationConfig replication_config 🔗

包含要同步的屬性的資源。


float replication_interval = 0.0 🔗

  • void set_replication_interval(value: float)

  • float get_replication_interval()

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 🔗

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。如果 peer0,則會改為更新 public_visibility 的值。


void update_visibility(for_peer: int = 0) 🔗

根據可見性篩檢程式更新 for_peer 的可見性。如果 for_peer0(預設值),則更新所有對等體的可見性。