複製¶
GameObjectを同期させるには、それにStrixReplicator
コンポーネントを追加する必要があります。これは事前にエディターで行っておきます。全てのレプリケーターオブジェクトは、全てのクライアント間で共有するレジストリに登録する必要があるからです。レプリケーターコンポーネントを実行時に追加しないでください。
オブジェクトが複製されるプレイヤー同士のワールドはレベルを同じにすることを強くお勧めします。複製されたオブジェクトは、プレイヤーのワールド内に存在する実際のオブジェクトであり、ワールド内のどのオブジェクトとも相互作用できます。Strixは非専用サーバーで構成されているため、同期逸脱の問題を起こさないように注意してください。
レプリケーターには2つのタイプがあります。
シーン - シーンオブジェクトにアタッチ
プレハブ - プレハブオブジェクトにアタッチ
Strixレプリケーター自体は、オブジェクトのインスタンス化と削除のみを同期します。他の状態は同期されません。複製されたオブジェクトは、デフォルトではワールド座標(0, 0, 0)に生成されます。
注釈
レプリカの位置は、スクリプトがレプリカを参照するよりも先に他のコンポーネント(例えばStrixMovementSynchronizer
)によって変更されることがあります。
レプリケーターのプロパティ¶
StrixReplicator
コンポーネントには次のプロパティがあり、インスペクター上で設定できます。
Send Rate |
int |
1秒あたりのオブジェクトのプロパティの更新回数です。 |
|
Instantiable By |
AnyoneまたはRoom Owner |
他のクライアントでこのオブジェクトのレプリカをインスタンス化するユーザーを決定します。
これがAnyoneの場合、ルームの全てのプレイヤーが、他の全てのクライアントでこのGameObjectの新しいレプリカをインスタンス化します。これは、スクリプトによって動的に生成されるオブジェクトに役立ちます。
これがRoom Ownerの場合、ルームオーナーのみがレプリカをインスタンス化します。その結果、どのクライアントにも複数のレプリカが存在しなくなります。これは、シーンに静的に配置されるピックアップのようなオブジェクトに役立ちます。
|
|
Connection Closed Behaviour |
DeleteまたはChange Ownership |
接続が失われたときの動作を決定します。
デフォルトはDeleteで、接続が失われたときにオブジェクトを破壊します。
Change Ownershipに変更すると、オブジェクトの新しいオーナーが選択されて、そのオーナーに権限が移るようになります。
これを使用すると、ルームが空になるまでオブジェクトを存続させることができます。
|
|
Sync Destroy |
bool |
オリジナルが破壊されたときにこのオブジェクトも破壊されるかどうかを決定します。
デフォルトはtrueです。falseの場合、オブジェクトはサーバーから届く削除のメッセージを無視します。
つまり、元のオブジェクトが破壊されても他のクライアントにレプリカが残ります。
これは、プレイヤーが予期せず切断したときに、レベルからオブジェクトをスムーズに削除するために必要になる場合があります。
|
インスペクターには、以下の実行時プロパティも表示されます。これらのプロパティは、デバッグやスクリプトからの利用に役立つかもしれません。
owner |
UID(読み取り専用) |
このレプリカのオーナーを表すUIDです。
スクリプトでは、このプロパティは
ownerUid としてアクセスします。 |
|
isLocal |
bool(読み取り専用) |
trueの場合、これはローカル(オリジナル)のオブジェクトであり、現在のクライアントがオーナーです。falseの場合、これはレプリカオブジェクトです。
スクリプトがこのオブジェクトを変更したりコントロールしたりするべきかどうかを判断する際に役立ちます。
|
注釈
インスペクターには、この他にObject TypeとNetwork Instance Idというプロパティがあることにお気づきかもしれません。これらは、オブジェクトタイプとオブジェクトの識別のために、Strixが内部で使用するものです。
StrixReplicator
には、他にもスクリプト用の(インスペクターでは表示されない)プロパティがいくつかあります。その中で次のものが特に有用です。
isSync |
bool(読み取り専用) |
trueの場合、これはローカル(オリジナル)のオブジェクトであり、1つ以上のレプリカが(他のクライアント上に)存在します。
|
|
ownerUid |
UID(読み取り専用) |
このレプリカのオーナーを表すUIDです。
|
|
roomMember |
CustomizableMatchRoomMember(読み取り専用) |
このレプリカのオーナーを表すCustomizableMatchRoomMemberオブジェクトです。
|