MonobitTransformView のカスタマイズ

目次

  概要
  MonobitTransformView.cs を開く
  MonobitTransformView.Awake() メソッドを変更する
  変更したプログラムの保存


概要

MonobitTransformView から、親オブジェクトに移動した MonobitView を参照できるようにする

  前述の 同期用のコンポーネント追加 において、MonobitView コンポーネントを
  「MonobitTransformViewコンポーネントを追加したオブジェクト」の親オブジェクトに移動させましたが、
  この状態だと MonobitTransformView コンポーネントから MonobitView を参照できなくなってしまいます。

  原則的に MonobitTransformView と MonobitView は同一のオブジェクトに存在させる必要があるのですが、
  ここではイレギュラーな操作を行っているため、MonobitTransformView から 親オブジェクトのMonobitView を
  参照できるように、プログラムを変更します。


MonobitTransformView.cs を開く

MonobbitTransformView のソーススクリプトファイルを開く

  まずは、変更するソースファイルを開きます。

  Assets/Monobit Unity Networking/Plugins/MonobitNetwork フォルダを開き、
  その中にある MonobitTransformView.cs をダブルクリックしてください。


MonobitTransformView.Awake() メソッドを変更する

MonobitView を探索する処理を変更する

  MonobitTransformView コンポーネントから、MonobitView を探索する処理について変更を加えます。

  MonobitTransformView.cs の 54 行目付近にある Awake() メソッドの中身を、以下のように書き換えてください。
        /**
         * 起動関数.
         */
        void Awake()
        {
            // すべての親オブジェクトに対して MonobitView コンポーネントを検索する
            if (GetComponentInParent<MonobitView>() != null)
            {
                m_MonobitView = GetComponentInParent<MonobitView>();
            }
            // 親オブジェクトに存在しない場合、すべての子オブジェクトに対して MonobitView コンポーネントを検索する
            else if (GetComponentInChildren<MonobitView>() != null)
            {
                m_MonobitView = GetComponentInChildren<MonobitView>();
            }
            // 親子オブジェクトに存在しない場合、自身のオブジェクトに対して MonobitView コンポーネントを検索して設定する
            else
            {
                m_MonobitView = GetComponent<MonobitView>();
            }
        }

  元々自分自身のオブジェクトが保有する MonobitView コンポーネントのみ検索していたものを
  自分自身の親オブジェクト、または自分自身の子オブジェクトに対してコンポーネント検索を行うように変更を加えます。

  これにより、MonobitView コンポーネントが自身のオブジェクト階層内で移動させても、
  オブジェクトの通信に支障がなくなります。

  本来であればこのような措置は必要ないのですが、例外的に以下の要件を満たす場合、
  コードの変更が必要になってしまいます。
・親オブジェクト自身がアニメーション情報を持っていない場合
・親オブジェクト自身が移動や回転などの姿勢変更をしない場合
  今回のサンプルデモが不幸にもこのケースに当てはまるため、
  このような措置対応が必要です。


変更したプログラムの保存

スクリプトを保存する

  変更した MonobitTransformView.cs を保存しましょう。

  Visual Studio のメニューから [ファイル] > [すべて保存] を選択してください。