オブジェクト所有権チェック

目次

  概要
  事前設定
  MonobitEngine.MonobitView.isMine プロパティ


概要

ネットワーク越しにインスタンスを生成したオブジェクトには「所有権」が存在する

  MonobitEngine.MonobitNetwork.Instantiate メソッド、ならびに、MonobitEngine.MonobitNetwork.InstantiateSceneObject メソッドを用いて
  インスタンス生成されたオブジェクトには、サーバからプレイヤーに対し「所有権」が与えられます。

  サーバから与えられる所有権は、原則的に、以下のように設定されます。
メソッド名 所有権を有するプレイヤー
MonobitEngine.MonobitNetwork.Instantiate インスタンスを生成したプレイヤー
MonobitEngine.MonobitNetwork.InstantiateSceneObject そのルームのホスト

ネットワーク越しに生成されたオブジェクトを「操作」する場合、その「所有権」が存在するかどうかチェックする必要がある

  1つのクライアントでは、「自分が作成したオブジェクト」「他人が作成したオブジェクト」が入り乱れます。
  所有権をチェックせずにオブジェクトを動かそうとすると、他人のキャラクタも操作してしまいます。

  ネットワーク通信同期においては、自分自身が作成した(所有権を持っている)キャラクタのみを操作するというチェックを掛けたうえで
  オブジェクトを操作する必要があります。


事前設定

インスタンス生成前のプレハブに登録された、スクリプトである必要があります

  オブジェクトを「操作」するスクリプトに対するチェックですので、
  インスタンス生成前のプレハブに登録された、スクリプトである必要があります。


MonobitEngine.MonobitView.isMine プロパティ

機能

  該当するオブジェクトの所有権が、操作しているプレイヤー自身にあるかどうかを調べます。

  この値に直接代入することはできません。
  オブジェクトの所有権を変更したい場合には、 オブジェクト所有権の移譲 を御覧ください。

出力型

内容
bool この値が true であれば、そのプレイヤーに所有権が与えられています。

記述例

// ネットワーク越しに作成されたオブジェクトに対し、キー入力操作を実装します。
class Foo : MonobitEngine.MonoBehaviour
{
    ...

    public void Update()
    {
        if( monobitView.isMine )
        {
            /*
             * キー入力による制御
             */
        }
    }

    ...
}