This document is about: PUN 1
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. を20,1,20にスケールします。

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

room for 1: wall 1 transform values
Room for 1: 壁1の変換値
room for 1: wall 2 transform values
Room for 1: 壁2の変換値
room for 1: wall 3 transform values
Room for 1: 壁3の変換値
room for 1: wall 4 transform values
Room for 1: 壁4の変換値

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

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

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

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

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

  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;
    
    namespace Com.MyCompany.MyGame
    {
        public class GameManager: MonoBehaviour {
    
            #region Photon Messages
    
            /// <summary>
            /// Called when the local player left the room. We need to load the launcher scene.
            /// </summary>
            public 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箇所で再利用や修正をおこなえます。

  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
  5. RectTransformの高さを50に設定します。

  6. Panel GameObjectのTop Panelで右クリックしてUI/Buttonを追加し、Leave buttonと命名します。

  7. Leave buttonの子テキストを選択し、テキストにLeave Gameを設定します。

  8. OnClickボタンのイベントをHierarchy内のGame Managerインスタンスに接続し、LeaveRoom()を呼びます。

button onclick action
onClickボタンの退出アクション
  1. LeaveボタンをシーンHierarchyからAssets Browserにドラッグして、 プレハブに変換します。 Leave buttonはHierarchy内で青色に変わります。
  2. シーンを保存してから、プロジェクトを保存します。

他のルームの作成

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

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

Room for 2

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

room for 2: wall 1 transform values
Room for 2: 壁1の変換値
room for 2: wall 2 transform values
Room for 2: 壁2の変換値
room for 2: wall 3 transform values
Room for 2: 壁3の変換値
room for 2: wall 4 transform values
Room for 2: 壁4の変換値

Room for 3

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

room for 3: wall 1 transform values
Room for 3: 壁1の変換値
room for 3: wall 2 transform values
Room for 3: 壁2の変換値
room for 3: wall 3 transform values
Room for 3: 壁3の変換値
room for 3: wall 4 transform values
Room for 3: 壁4の変換値

Room for 4

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

room for 4: wall 1 transform values
Room for 4: 壁1の変換値
room for 4: wall 2 transform values
Room for 4: 壁2の変換値
room for 4: wall 3 transform values
Room for 4: 壁3の変換値
room for 4: wall 4 transform values
Room for 4: 壁4の変換値

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

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

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

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

次に進む 前に戻る

Back to top