This document is about: PUN 2
SWITCH TO

PUN Classic (v1)、PUN 2、Boltはメンテナンスモードとなっております。Unity2022についてはPUN 2でサポートいたしますが、新機能が追加されることはありません。お客様のPUNプロジェクトおよびBoltプロジェクトが停止することはなく、将来にわたってパフォーマンス性能が落ちることはありません。 今後の新しいプロジェクトについては、Photon FusionまたはQuantumへ切り替えていただくようよろしくお願いいたします。

3 - ゲームシーン

このセクションでは、プレイヤーがプレイする様々なシーンの作成について説明します。

各シーンは、特定のプレイヤー数に合わせてあります。プレイヤー数が増えるにつれて、すべてのプレイヤーが十分に動き回れるよう、徐々に大きくなります。

このチュートリアルでは後に、プレイヤー数にもとづいて適切なレベルを読み込むためのロジックを実装します。このために、各レベルの名前が以下の形式になるよう規則を使用します:「Room for X」で、Xはプレイヤー数を表します。

最初のルームの作成

  1. 新しいシーンを作成し、Room for 1正確 に名付けてください。
  2. キューブを作成し、floorと命名します。
  3. キューブを0,0,0に配置します。ロジックシステムがプレイヤーを中止により上(0,x,0)にスポーンするので、これは重要です。
  4. floorを20,1,20にスケールします。

プレイするにはこれで十分ですが、床エリア内にプレイヤーを留まらせるために壁が必要です。 単純にキューブをさらに作成し、壁として機能するように回転、配置、拡張をおこないます。 floor GameObjectに合わせるための、4つの壁の位置とスケールは以下のとおりです。

room for 1: wall 1 transform values
Room for 1: Wall 1 Transform values
room for 1: wall 2 transform values
Room for 1: Wall 2 Transform values
room for 1: wall 3 transform values
Room for 1: Wall 3 Transform values
room for 1: wall 4 transform values
Room for 1: Wall 4 Transform values

この時点で、Room For 1シーンを忘れずに保存してください。

ゲームマネージャープレハブ

すべての場合において、ユーザーインタフェースの最低限の要件はルームから退出可能にすることです。 このためには[UI Button]が必要ですが、ローカルのプレイヤーをルームから退室させるためにPhotonを呼び出すスクリプトも必要です。そのために、 Game Managerプレハブと呼ばれるものの作成から始めましょう。最初のタスクは、現在ローカルプレイヤーがいるルームを終了する処理です。

  1. 新しいc# スクリプトGameManagerを作成します。

  2. シーンに空のGameObjectを作成し、Game Manager0と名付けます。

  3. GameManagerスクリプトをGameObject Game Managerにドロップします。

  4. Game ManagerをシーンHierarchyからAssets Browserにドラッグして、プレハブに変換します。Game ManagerはHierarchy内で青色に変わります。

  5. GameManagerスクリプトを編集します。

  6. 以下で置換します。

    C#

    using System;
    using System.Collections;
    
    using UnityEngine;
    using UnityEngine.SceneManagement;
    
    using Photon.Pun;
    using Photon.Realtime;
    
    namespace Com.MyCompany.MyGame
    {
        public class GameManager : MonoBehaviourPunCallbacks
        {
    
            #region Photon Callbacks
    
            /// <summary>
            /// Called when the local player left the room. We need to load the launcher scene.
            /// </summary>
            public override void OnLeftRoom()
            {
                SceneManager.LoadScene(0);
            }
    
            #endregion
    
            #region Public Methods
    
            public void LeaveRoom()
            {
                PhotonNetwork.LeaveRoom();
            }
    
            #endregion  
        }
    }
    
  7. GameManagerスクリプトを保存します。

パブリックメソッドLeaveRoom()の作成が完了しました。このパブリックメソッドによって、ローカルのプレイヤーはPhoton Networkのルームから明示的に退室させられます。抽象化をおこなうため、弊社はこれを独自のパブリックメソッドに実装しました。 後になって、さらに機能を実装する必要が生じる可能性があります。データの保存、ユーザーがゲームから退出する際の確認ステップの挿入などです。

私達のゲームの要件にもとづくと、ルーム内にいない場合にはLauncherシーンを表示する必要があります。このため、OnLeftRoom()PhotonコールバックをリッスンしてロビーシーンLauncherを読み込む必要があります。このシーンは、本セクションの設定シーンのリストを作成にて設定するビルド設定で0にインデックスされています。

なぜこのようにプレハブを作る必要があるのでしょうか? これは、私達のゲームの要件では同じゲームが複数のシーンを含んでおり、このGame Managerを再利用する必要があるためです。 Unityでは、 GameObjectsを再利用するのに最適な方法はGameObjectをプレハブに変換することです。

次にGameManager LeaveRoom()メソッドを呼ぶUIボタンを作成してみましょう。

ルームボタンプレハブを終了

繰り返しになりますが、Game Managerと同様に、この機能を必要とするシーンが複数あります。このボタンをプレハブにしておけば、今後必要になった際に一箇所で再利用や修正を行えます。

  1. シーンRoom for 1にいることを確認してください。

  2. Unityのメニュー'GameObject/UI/Panel'を使用して、UIパネルを作成しTop Panelと名付けてください。

  3. ImageCanvas Rendererコンポーネントを削除して、このパネルをクリアします。 ビジュアル上の好みに合わせて、削除せずに残すこともできます。

  4. ShiftキーとAltキーを押しながら、垂直のアンカープリセットをtopに、水平のアンカープリセットをstretchに設定します。 RectTransformアンカーは最初は難しいかもしれませんが、慣れると非常に便利です。

recttransform anchors
RectTransform Anchors
  1. RectTransformの高さを50に設定します。
  2. Panel GameObjectのTop Panelで右クリックしてUI/Buttonを追加し、Leave Buttonと名付けます。
  3. Leave Buttonの子テキストを選択し、テキストにLeave Gameを設定します。
  4. OnClickボタンのイベントをHierarchy内のGame Manager に接続し、LeaveRoom()を呼びます。
button onclick action
Button onClick Leave Action
  1. LeaveボタンをシーンHierarchyからAssets Browserにドラッグして、 プレハブに変換します。
  2. シーンを保存したら、プロジェクトを保存します。

他のルームの作成

1つのルームが完成したので、これを3回複製して適切な名前を付けましょう。(複製した際にUnityによってすでにおこなわれているはずです。)

繰り返しの処理を迅速に行うには、位置、回転、スケールが以下のように変更される点に留意してください。

Room for 2

床のスケール: 36,1,36

room for 2: wall 1 transform values
Room for 2: Wall 1 Transform values
room for 2: wall 2 transform values
Room for 2: Wall 2 Transform values
room for 2: wall 3 transform values
Room for 2: Wall 3 Transform values
room for 2: wall 4 transform values
Room for 2: Wall 4 Transform values

Room for 3

床のスケール: 50,1,50

room for 3: wall 1 transform values
Room for 3: Wall 1 Transform values
room for 3: wall 2 transform values
Room for 3: Wall 2 Transform values
room for 3: wall 3 transform values
Room for 3: Wall 3 Transform values
room for 3: wall 4 transform values
Room for 3: Wall 4 Transform values

Room for 4

床のスケール: 60,1,60

room for 4: wall 1 transform values
Room for 4: Wall 1 Transform values
room for 4: wall 2 transform values
Room for 4: Wall 2 Transform values
room for 4: wall 3 transform values
Room for 4: Wall 3 Transform values
room for 4: wall 4 transform values
Room for 4: Wall 4 Transform values

ビルド設定シーンのリスト

このリストは、編集やパブリッシュをおこなう際のより適切なオペレーションに必須です。アプリケーションを構築する際には、Unityにも含まれるよう、全てのシーンをビルド設定に追加する必要があります。

  1. メニュー「"File/Build Settings"」からビルド設定を開きます。
  2. 全てのシーンをドラッグアンドドロップします。Unityがデフォルトでこのリスト上の最初のシーンを読み込んで表示するため、Launcherシーンを最初にする必要があります。
build settings: scenes in build
Build Settings: Scenes In Build

基本的なシーンの設定が完了しました。これで全ての接続を開始できます。次のセクションでおこなってみましょう。

次に進む.
前に戻る.

Back to top