複製

GameObjectを同期させるには、それにStrixReplicatorコンポーネントを追加する必要があります。これは事前にエディターで行っておきます。全てのレプリケーターオブジェクトは、全てのクライアント間で共有するレジストリに登録する必要があるからです。レプリケーターコンポーネントを実行時に追加しないでください。

オブジェクトが複製されるプレイヤー同士のワールドはレベルを同じにすることを強くお勧めします。複製されたオブジェクトは、プレイヤーのワールド内に存在する実際のオブジェクトであり、ワールド内のどのオブジェクトとも相互作用できます。Strixは非専用サーバーで構成されているため、同期逸脱の問題を起こさないように注意してください。

レプリケーターには2つのタイプがあります。

  1. シーン - シーンオブジェクトにアタッチ

  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 TypeNetwork Instance Idというプロパティがあることにお気づきかもしれません。これらは、オブジェクトタイプとオブジェクトの識別のために、Strixが内部で使用するものです。

StrixReplicatorには、他にもスクリプト用の(インスペクターでは表示されない)プロパティがいくつかあります。その中で次のものが特に有用です。

isSync

bool読み取り専用

trueの場合、これはローカル(オリジナル)のオブジェクトであり、1つ以上のレプリカが(他のクライアント上に)存在します。

ownerUid

UID読み取り専用

このレプリカのオーナーを表すUIDです。

roomMember

CustomizableMatchRoomMember読み取り専用

このレプリカのオーナーを表すCustomizableMatchRoomMemberオブジェクトです。

同期

オブジェクトの状態を同期させるには、オブジェクトにStrixBehaviourスクリプトを追加する必要があります。

変数の複製を参照してください。

RPC

レプリケーターでは、リモートプロシージャコールを使用して、リモートクライアントでアクションを実行できます。

RPCを参照してください。

注釈

StrixBehaviourスクリプトがレプリケーターを持つオブジェクト上にある場合、スクリプト内からstrixReplicatorメンバーを通じてそのレプリケーターにアクセスできます。