Engine続行するにはJavascriptを有効化してください。Realtimeインディーかプロのディベロッパーかを問わず、誰でもリアルタイムマルチプレイヤーゲームを開発してグローバルに配信可能です。PUNインディーかプロのディベロッパーかを問わず、誰でもリアルタイムマルチプレイヤーゲームを開発してグローバルに配信可能です。Quantumマルチプレイヤーゲーム開発の革新に参加しよう!MOBA、ブローラー、RTS、戦闘ゲーム、スポーツゲームを迅速な予測ネットワーキングエンジンで開発できます。Chat同時接続数をスケールできるクロスプラットフォームのチャットシステムをあなたのアプリに簡単に統合できます。Voice大規模かつインターナショナルな最先端のライブボイスチャット。すべてのマルチプレイヤーエンジンと併用可能。Classic(PUN1とも呼ばれます)はPUNのはじめの主要バージョンです。現在は、リファクタリングおよび機能拡張されたPUN2に切り替わっています。新しいプロジェクトはPUN2をご利用いただき、また可能であれば既存のプロジェクトについてもPUN1からPUN2へ移行していただくよう強く推奨しています。Cloassicは今後数か月メンテナンスされます。重要なバグの修正や新しいUnityバージョンのサポートは行いますが、新機能の追加はPUN2のみとなります。Cloudサーバーへの接続とルームの作成や参加に取り組みましょう。新しいシーンを作成し、Launcher.unityとして保存します。Launcherを作成します。Launcherを添付します。C#のスクリプトLauncherを編集して、コンテンツを以下のようにします。ここまでのスクリプトの内容を確認しましょう。Unityの視点から確認して、次にPUN固有の呼び出しを見てみましょう。Namespace:必須ではありませんが、スクリプトに適切なnamespaceを与えることで他のアセットや開発者との競合を防ぐことができます。別の開発者がクラスLauncherを作成したらどうなるでしょう?Unityは警告を出し、あなた、またはその開発者はUnityがプロジェクトを実行できるようにクラス名を変更する必要があります。Storeからダウンロードしたアセットに起因する場合、注意が必要です。クラスは、実際はCom.MyCompany.MyGame.launcherで、あなたが所有しているドメインを使用しています。このため、完全に同一のNamespaceを他の誰かが使用する可能性は非常に低いです。逆ドメイン規則をnamespaceとして使用することによって、安全に作業できます。Com.MyCompany.MyGameは独自の逆ドメイン名とゲーム名で置き換えられます。Componentに変換してGameObjectまたはプレハブにドロップできるようにするため、クラスをMonoBehaviourで派生していることに注目してください。MonoBehaviourを拡張するクラスは、多くの非常に重要なメソッドとプロパティにアクセスすることができます。このケースでは、2つのコールバックメソッド、Awake()とStart()を使用します。ロビー機能が不要で、既存ルームのリストのみが必要なためPhotonNetwork.autoJoinLobbyをfalseに設定します。同じプロジェクトで実際にロビーにautoJoinしたいシーンがあるかも知れないので、この設定は強制的におこなってください。これによって、両方のケースが同一プロジェクト内に存在しても、2つの異なるアプローチ間で切り替える際の潜在的な問題を避けることができます。_gameVersion変数がgameversionを表しています。「1」にしておいてください。点PhotonNetwork.ConnectUsingSettings()であるということです。ゲームにプレイヤー数に応じて調整可能なアリーナが必要な場合があります。この場合には読み込まれたシーンが接続した全プレイヤーにとって同一である点を確認する必要があります。Photonが提供する便利な機能、PhotonNetwork.automaticallySyncSceneを使用しましょう。呼び出し、接続したすべてのプレイヤーは自動的に同じレベルを読み込みます。Settingsから選択してください)を開くことができます。デバッグレベルは、以下のとおりFullに設定する必要があります:PhotonSettingsデバッグレベルのセットアップその後、「Play」を押すことができます。Unityのコンソールには数十件のログが表示されるはずです。masterserver.」を探してください。これは確実に接続されていて、ルームに参加する準備などが整っていることを示します。コーディングを行う際の良い習慣は、潜在的な故障を常にテストすることです。お使いのコンピュータのインターネットをオフにしてシーンをプレイします。known」スクリプトがこの問題を認識してスムーズに反応し、どのような問題や状況にも対応できるのが理想です。それではこれらの両方のケースを処理し、実際にPUNサーバに接続されたかどうかがLauncherスクリプト内で通知されるようにしましょう。これはPUNコールバックの導入として最適です。TopPUNコールバックPUNでのコールバックは非常に柔軟性が高く、3つの異なる実装が提供されます。学習用に3つのアプローチをすべて説明します。状況に応じて最適なものを選んでください。Top「魔法のような」メソッド通常のMonoBehaviourを使用する場合、簡単にプライベートメソッドを作成することができます。そのメソッドまたはPUNからの他のメッセージを実装することができます。これは、Awake()またはStart()などの、UnityがMonoBehavioursに送信しているメインのメソッドと同じ原理に従っています。この「魔法のような」メソッドの入力を誤るとエラーの通知がされません。これは非常に速く実用的な実装ですが、取得した各メソッドの名前を正確に知っていて、このような問題を検知するデバッグの技術を熟知していない限りは使用するべきではありません。IPunCallbacksを提供します。インターフェースメソッドの実装これは、クラスがすべてのインターフェースにコンパイルしていることを確認しながら、開発者がすべてのインターフェース宣言を実装することを強制する非常に安全な方法です。上記のMonoDevelopの場合のように、ほとんどのIDEで簡単にこの作業を行うことができます。何もおこなわないにも関わらずUnityコンパイラのために実装しなければならないメソッドでスクリプトがいっぱいになる可能性があります。これはスクリプトがすべて、またはほとんどのPUN機能を頻繁に使用する場合です。今後のチュートリアルでは、データシリアル化にIPunObservableを使用します。最後に説明する技術は、私たちが頻繁に使う最も便利なものです。MonoBehaviourから派生するクラスを作成する代わりに、Photon.PunBehaviourからクラスを派生します。特定のプロパティや仮想メソッドを使用してオーバーライドすることができます。タイプミスがないことを確認することができ、すべてのメソッドを実装する必要がないので非常に実用的です。オーバーライドする際、ほとんどのスクリプトエディタはデフォルトでベースコールを実装し自動的にそれを埋めますが、今回のケースではその必要がありません。このため、基本的にはPhoton.PunBehaviourにベースメソッドを呼び出さないでください。注:オーバーライドのもう一つの大きな利点は、メソッド名の上にマウスをホバリングすればコンテキストヘルプを利用できることです。それでは、これをOnConnectedToMaster()とOnDisconnectedFromPhoton()のPUNコールバックで実際に実行してみましょう。C#スクリプトLauncherを編集しますベースクラスをMonoBehaviourからPhoton.PunBehaviourへ変更します。CallBacksリージョン内でクラスの最後に以下の2つのメソッドを追加します。}#endregionLauncherスクリプトを保存します。これでインターネット有りまたは無しでこのシーンをプレイする際に、プレイヤーに通知したりロジックを進行するための適切な措置をとることができます。これは、次のセクションでUIの構築を開始する際に説明します。OnConnectedToMaster()メソッドに以下の呼び出しを追加します。PhotonNetwork.JoinRandomRoom();コメントに記載されている通り、ルームへのランダムな参加が失敗した場合はその通知を受信する必要があります。その場合は実際にルームを作成しなければならないため、スクリプトでOnPhotonRandomJoinFailed()PUNコールバックを実装し、PhotonNetwork.CreateRoom()を使用してルームを作成する必要があります。PUNコールバックも必要です。room.");}これでシーンを実行すると、PUNに接続するためのロジックに従うはずです。既存のルームへの参加を試みるか、新しくルームを作成してそれに参加します。以上で、ルームへの接続および参加に関する重要な側面を説明しました。次に、対処が必要となる不便な点がいくつかあります。これらはPUNの習得にはあまり関係ありませんが、全体的な観点からは重要です。TopUnityインスペクターで変数を公開MonoBehavioursは自動的にパブリックプロパティをUnityインスペクターに公開します。これはUnity内の非常に重要な概念です。今回のケースではLogLevelを定義する方法を変更し、コード自体に触れることなく設定できるよう、パブリック変数を作成します。Loglevel;これでスクリプトを特定のタイプのLogLevelになるよう強制的に設定する必要はなくなり、単純にUnityインスペクターで設定して実行することになります。スクリプトを開いて編集や保存をしたり、Unityが再コンパイルして最終実行するのを待つ必要はありません。これによって、生産性や柔軟性が高まりました。ルームごとのプレイヤー数の上限にも同じことを行います。コー​​ド内でこれをハードコーディングするのはベストプラクティスではありません。代わりに、後から決めて再コンパイルをせずに数字を試せるよう、パブリック変数にしましょう。コールを修正し、以前使用していたハードコーディングの番号の代わりにこの新しいパブリック変数を使用します。