常時同期オブジェクトのプレハブ化

目次

  概要
  考察:常に同期させるオブジェクトについて
  プレイヤーのプレハブ化
  敵キャラクタのプレハブ化
  ここまでの内容について、一旦セーブする


概要

まず何よりも「常に同期させるオブジェクトのプレハブ化」が大事

  MUN でマルチプレイを実践する上で、何よりも大事なのが、「常に同期オブジェクトのプレハブ化」です。
  そもそも MUN では、プレハブ化をしない限り、オブジェクトに対する常時同期処理を行なってくれません。
  くれぐれも忘れないように、注意してください。

注記:ここからしばらくの間、実行ボタンを押しても正常な結果を得られません。

  プレハブ化する結果、プレイヤーキャラクタがシーン上から消されますので、
  ここからしばらくの間、実行ボタンを押しても正常な結果は得られません。

  オフラインゲームを作る上でも、出来うることであれば、プレイヤーキャラクタも含め、
  「常に同期させなければならないオブジェクト」について、あらかじめプレハブ化させておくことが望ましいです。


考察:常に同期させるオブジェクトについて

「どんなオブジェクトを常に同期させるか」を考えること

  この工程に入る前に、「どんなオブジェクトを常に同期させるか」を考えることが重要です。
  単純明快な話ですが、常に同期するオブジェクトが多ければ多いほど、通信負荷は増えます。
  出来うる限り最低限の、ただし、ゲームが破綻しない範囲での、オブジェクト同期を行なうようにしましょう。

「常に同期する候補」になり得るものを列挙する

  さて、そのオブジェクトの選定についてですが。
  基本的にゲームに登場する全ての「動く物体」が選定候補です。
  (逆に「動かない物体」については、動かないのですから、わざわざ位置・姿勢を常に同期させる必要はありません。)

  今回のゲームの場合、以下の要素が「常に同期する候補」と言えます。
・プレイヤー
・敵(テディベア)
・プレイヤーの弾
・敵(テディベア)の弾

本当に「常に同期させる必要があるか」を考える

  常に同期させるかどうか判断する、もう1つの基準として、「動きが常に変動する物体」であるかどうかが問われます。
  動きが常に一定の動きをする物体、例えば今回のゲームの場合であれば「弾」など、
  発生するタイミングさえ一致すれば良い物体は「常に同期を取らず、発生時のみ同期を取る」ようにします。

  したがって、今回のゲームの場合、上記からさらに「常に同期する候補」が絞り込めます。
・プレイヤー
・敵(テディベア)
  これを今回プレハブ化します。


プレイヤーのプレハブ化

PlayerをResorcesフォルダに移動する

  プレイヤーをプレハブ化します。
  Hierarchy に表示されている Player を、Assets/Resource フォルダにドラッグ&ドロップしてください。
  Resources フォルダに player.prefab が生成されます。
  (前々章の「ノンプログラミング開発の手引き」を済ませている人は、この時点で
   unitychan_dynamic_locomotion.prefab があると思いますが、それはそのまま残しておきましょう。)

Hierarchy の Player を削除する

  Hierarchy に表示されている Player は不要ですので削除します。
  Hierarchy の Player を右クリックし、ポップアップメニューから Delete を選びます。
  Player が Hierarchy から削除されたことを確認します。


敵キャラクタのプレハブ化

NPC をアクティブにする

  プレハブ化する前に、Hierarchy に表示されている NPC をアクティブにします。
  Hierarchy にある NPC をクリックしてください。
  Inspector に表示されている NPC の項目のチェックボックスを ON にしてください。

Enemy を Resorces フォルダに移動する

  続いて、敵キャラクタをプレハブ化します。
  Hierarchy に表示されている NPC を、Resource フォルダにドラッグ&ドロップしてください。
  (前出で、すでに Resources フォルダを開いていると思いますので、そのまま player と同じフォルダに保存しておいてください)
  Resources フォルダに NPC.prefab が生成されます。

Hierarchy の NPC を削除する

  Hierarchy に表示されている NPC は不要ですので削除します。
  Hierarchy の NPC を右クリックし、ポップアップメニューから Delete を選びます。
  NPC が Hierarchy から削除されたことを確認します。


ここまでの内容について、一旦セーブする

新規シーンファイルにシーンデータを保存する

  新規にシーンファイルを作成し、そこにシーンデータを保存します。
  Unity のメニューから File > Save Scene as... を選択してください。
  ファイル名を Test03 として保存しましょう。

プレハブを保存する

  作成したプレハブを保存するため、プロジェクト全体を保存しましょう。
  Unity のメニューから File > Save Project を選択してください。