Engine続行するにはJavascriptを有効化してください。Realtimeインディーかプロのディベロッパーかを問わず、誰でもリアルタイムマルチプレイヤーゲームを開発してグローバルに配信可能です。PUNインディーかプロのディベロッパーかを問わず、誰でもリアルタイムマルチプレイヤーゲームを開発してグローバルに配信可能です。Quantumマルチプレイヤーゲーム開発の革新に参加しよう!MOBA、ブローラー、RTS、戦闘ゲーム、スポーツゲームを迅速な予測ネットワーキングエンジンで開発できます。Chat同時接続数をスケールできるクロスプラットフォームのチャットシステムをあなたのアプリに簡単に統合できます。Voice大規模かつインターナショナルな最先端のライブボイスチャット。すべてのマルチプレイヤーエンジンと併用可能。Classic(PUN1とも呼ばれます)はPUNのはじめの主要バージョンです。現在は、リファクタリングおよび機能拡張されたPUN2に切り替わっています。新しいプロジェクトはPUN2をご利用いただき、また可能であれば既存のプロジェクトについてもPUN1からPUN2へ移行していただくよう強く推奨しています。Cloassicは今後数か月メンテナンスされます。重要なバグの修正や新しいUnityバージョンのサポートは行いますが、新機能の追加はPUN2のみとなります。v24-ゲームマネージャーとレベルこのセクションでは、現在のルームでプレイしているプレイヤーの数に基づいて、様々なレベルの読み込みを処理する追加機能について説明します。Contentsアリーナルーチンの読み込みプレイヤーの接続を監視ロビーからアリーナを読み込みアリーナルーチンの読み込み4つの異なるルームを作成し、最後の文字がプレイヤーの数になるよう命名したため、ルーム内の現在のプレイヤ数と関連シーンの結合が非常に容易になりました。これは「設定より規約」という、とても効果的な技術です。「設定」にもとづくアプローチをとった場合には、ルーム内の特定のプレイヤー数のシーン名をルックアップテーブルリストで維持するなどの方法になります。スクリプトはそのリストを確認し、名前と関係ないシーンを返すことになります。「設定」は基本的により多くのスクリプトを必要とするので、ここでは関連のない機能でコードを乱すことのないよう「規約」を使用します。GameManagerスクリプトを開きます。今回のために作成するプライベートメソッド専用の新たなリージョン内に、新しいメソッドを追加してみましょう。GameManagerスクリプトの保存を忘れないでください。"+PhotonNetwork.room.playerCount);}#endregionGameManagerスクリプトを保存します。このメソッドを呼び出すとき、入室しているルームのPlayerCountプロパティにもとづいて、適切なルームを読み込みます。重要な注意点が2つあります。PhotonNetwork.LoadLevel()はマスターの場合のみ呼び出されるべきです。このため、まず自身がPhotonNetwork.isMasterClientを使用しているマスターである点を確認します。これを確認するのは、呼び出し元の責任です。この点については、このセクションの次項で説明します。希望のレベルを読み込むには、PhotonNetwork.LoadLevel()を使用します。このゲームではPhotonNetwork.automaticallySyncSceneを有効化済みで、ルーム内のすべての接続済みクライアントにこのレベルを読み込むには、Photonに依存するようにします。Unityを直接使用することはありません。適切なレベルを読み込む機能を設定したので、この機能をプレイヤーの接続や切断と連携させてみましょう。MonoBehaviourです。チュートリアルの前の部分でPhotonのコールバックを取得するための様々な方法を説明しました。GameManagerは、プレイヤーの接続や切断をリッスンする必要があります。これを実装してみましょう。GameManagerスクリプトを開きます。基本クラスをMonoBehaviourからPhoton.PunBehaviourに変更します。{以下のPhotonコールバックメッセージを追加し、GameManagerスクリプトを保存します。}}#endregionPhoton.PunBehaviourで定義されているため、OnLeftRoomシグネチャを以下のように変更します。OnLeftRoom()GameManagerスクリプトを保存します。プレイヤーがルームに入室または退室する度に通知され、上記で構築したLoadArena()メソッドを呼び出します。LoadArena()を呼び出すのは、PhotonNetwork.isMasterClientを使用しているマスターである場合のみです。ロビーに戻り、ルームに参加するときに正しいシーンを読み込めるようにしましょう。Topロビーからアリーナを読み込みスクリプトLauncherを編集します。OnJoinedRoom()メソッドに以下を追加します。1");}スクリプトLauncherを保存します。これをテストしてみましょう。シーンLauncherを開いて実行します。「Play」をクリックし、システムを接続させてルームに参加します。これでロビーが動作するようになりました。ルームを退出してロビーに戻ってくると、自動的に再参加してしまいます。この問題に対処しましょう​。理由が分からない場合は、「簡単に」ログを分析してください。上記で「」をつけたのは、問題を概観して確認すべき場所を把握し、デバッグの方法を理解するには経験が必要なためです。自分で試してみてください。問題の原因を見つけることができない場合は、以下をおこなってみましょう。Launcherシーンを実行します。1」が読み込まれるまで待ちます。Unityコンソールをクリアします。Room」を押します。PUN"がログに記録されている点を確認します。Launcherシーンを停止します。PUN」をダブルクリックしてください。スクリプトが読み込まれ、デバッグコールの行が指し示されます。接続済みの通知を受けるたびに、自動的にJoinRandomRoomに参加しますが、これは修正する必要があります。これを修正するには、コンテキストを認識する必要があります。ユーザーが「Play」ボタンをクリックすると、接続手順がユーザーから開始されたことを認識するためにフラグを立てる必要があります。次に、様々なPhotonコールバック内で必要に応じて行動するために、このフラグを確認します。スクリプトLauncherを編集します。プライベート変数リージョンで新しいプロパティを作成します。isConnecting;connect()メソッドの先頭に、以下を追加します。true;OnConnectedToMaster()メソッドで、以下のようにPhotonNetwork.JoinRandomRoom()をif文で囲みます。}スクリプトLauncherを保存します。テストをおこない、Launcherシーンを実行してロビーとゲームの間を行き来すると、すべてが順調だと分かります。シーンの自動同期をテストするにはアプリケーションをパブリッシュし(テストを迅速におこなうには、デスクトップにパブリッシュします)、二人のプレイヤーをルームに接続および参加させるためUnityに沿って実行する必要があります。Unityエディターが先にルームを作成する場合には、それがマスタークライアントになります。2"を取得した点を確認できます。多くの点を説明し終えましたが、まだ半分が残っています。次のセクションではプレイヤー自身について説明します。多くの点を説明していますので時々コンピュータから離れて休憩を取ってください!特定の機能について質問がある場合や、チュートリアル中にこのドキュメントで説明していないエラーや問題が発生した場合は、フォーラムに投稿してください。