オーナーと所有権¶
複製されたオブジェクトには必ずオーナーが決まっています。オーナーとは、オブジェクトそのものと、そのオブジェクトの動作と、そのオブジェクトの状態に関して責任を持つクライアントです。
例えば、オーナーがオブジェクトを移動すると、新しい位置が他の全てのクライアントに送信され、各クライアントのローカルなレプリカに変更が適用されます。
オブジェクトのオーナーではないクライアントがオブジェクトの位置を変更しても、そのクライアントのローカルなレプリカの位置のみが変更され、その変更はたぶん次の更新処理の際に上書きされることになります。
所有権の移譲¶
通常、オブジェクトを生成したルームメンバーがオブジェクトのオーナーですが、所有権が他のルームメンバーへ移譲されることもあります。オブジェクトのオーナーがルームから退出したときに、そのオブジェクトのConnectionClosedBehaviour
プロパティがChangeOwnership
に設定されていると、この移譲が行われます。
この機能はAIが制御するキャラクター(NPC)に役立ちます。NPCが常にルーム内に存在し、最後のメンバーが退出するまで誰かがそれを制御することを保証できるためです。
オーナーと複製の確認¶
StrixReplicatorには、スクリプトで所有権と複製を処理する際に便利な情報を提供するプロパティが2つあります。これらのプロパティは、StrixBehaviour
クラスを継承したスクリプトで直接利用できます。
isLocal |
このレプリケーターがアタッチされているオブジェクトのオーナーである場合、trueになります。 |
isSync |
このレプリケーターがアタッチされているオブジェクトに1つ以上のレプリカがある場合、trueになります。 |