このクイック スタートでは、Party SDK for Unity をインストールし、最初の API 呼び出しを行って、Party ネットワークでプレイヤーを一緒に参加させることができます。 続行する前に、PlayFab アカウントから、「ゲーム マネージャーを使用して Party 機能を有効にする」を完了していることを確認してください。
注意
このプラグインを使用して Microsoft Game Development Kit (GDK) に基づくゲームを開発する場合は、GDK を個別に入手してインストールする必要があります。 Xbox コンソールの Game Core 用 Unity アドオンの詳細もご覧ください。
要件
インストール済みの Unity エディターのコピー。 Unity Hub を介して個人的に使用するために Unity をインストールする、または業務用に Unity+ をインストールするには、「Unity のダウンロード」を参照してください。 必要に応じて、特定のプラットフォームの説明書で Unity サポートを確認してください。 サポートされている Unity の最小バージョンは Unity 2017 LTS です。
Unity プロジェクトです。次のいずれかのオプションになります。
- まったく新しいプロジェクト: 詳細については、「Unity を初めて起動する」を参照してください。
- ガイド付きチュートリアル プロジェクト。 詳細については、「Unity の使用を開始する」を参照してください。
- 既存のプロジェクト。
PlayFab "コア" Unity3D SDK。 Unity3D SDK のインストールについては、「クイックスタート: Unity の C# 用 PlayFab クライアント ライブラリ」の「PlayFab SDK のダウンロードとインストール」セクションを参照してください。
PlayFab Party Unity プラグインをダウンロードしてインストールする
PlayFab Party Unity プラグインをダウンロードしてインストールする手順に従います。
- PlayFab Party Unity プラグイン アセット パッケージをダウンロードします (プラットフォームに応じて配布ポイントを使用します)。
- 重要! プラグインで公開されている README ファイルの情報を参照してください。 特定のバージョンごとに調整されており、プラットフォームに固有の重要な手順が含まれている場合があります。
- Unity プロジェクトを開きます。
- .unitypackage を保存した場所に移動し、それをダブルクリックしてインポート ダイアログを開きます。
- PlayFab Party Unity プラグインをプロジェクトにインポートするには、[インポート] を選択します。
シーンを設定する
ガイドのこの部分では、シーンに PlayFabMultiplayerManager
を追加して、Unity から PlayFab Party API を呼び出せるようにする方法を説明します。
ネットワークを作成する前に、PlayFab プレーヤーにログインしておく必要があります。 プレーヤーへのログインについては、「クイックスタート: Unity の C# 用 PlayFab クライアント ライブラリ」の「最初の API 呼び出しを行う」を参照してください。
Unity エディターの [プロジェクト] ウィンドウで、[アセット] > [PlayFabPartySDK] > [プレハブ] に移動します。
[プレハブ] フォルダーから、PlayFabMultiplayerManager を [階層] ウィンドウのシーンにドラッグ アンド ドロップします。
"HelloPartyLogic" という名前の空のゲーム オブジェクトをシーンに作成します。
[HelloPartyLogic ゲーム オブジェクト] を選択して、[インスペクター] を開きます。
[コンポーネントの追加] を選択します。
「HelloPartyLogic」と入力し、Enter キーを押して、新しいスクリプト メニューを表示します。
もう一度 Enter キーを押して、新しいスクリプト HelloPartyLogic.cs を作成します。
[プロジェクト] ウィンドウでスクリプトを見つけてダブルクリックし、スクリプトを編集します。
次のステートメントをスクリプトに追加します。
using PlayFab; using PlayFab.Party; using PlayFab.ClientModels;
Start メソッドに次のコードを追加して、PlayFab にログインします。
// Log into playfab var request = new LoginWithCustomIDRequest { CustomId = UnityEngine.Random.value.ToString(), CreateAccount = true }; PlayFabClientAPI.LoginWithCustomID(request, OnLoginSuccess, OnLoginFailure);
次のメソッドをクラスに追加します。
private void OnLoginSuccess(LoginResult result) { } private void OnLoginFailure(PlayFabError error) { }
注意
次のエラーが表示される場合があります。
Error CS0227 Unsafe code may only appear if compiling with /unsafe
The plugin requires unsafe code because it interops with a native DLL.
Mismatch between the processor architecture of the project being built "MSIL" and the processor architecture of the reference "XGamingRuntime", "AMD64".
Microsoft GDK および Windows は x64 のみをサポートします。
これらの問題を解決するには:
- Unity エディターで、[ファイル] > [ビルド設定] を選択します。
- プラットフォームを選択します。 次に、[アーキテクチャ] ドロップダウンから、x86\_64 または x64 のいずれかを選択します。
- [プレーヤーの設定] を選択します。
- 右側のウィンドウで、[その他の設定] を選択します。
- [安全でないコードを許可する] 設定を見つけて選択します。
- [ビルドの設定] ウィンドウと [プロジェクトの設定] ウィンドウを閉じます。
ネットワークへの接続
ガイドのこの部分では、ネットワークを作成して参加する方法を説明します。
HelloPartyLogic.cs スクリプトを開きます。
OnLoginSuccess
メソッドで、次のコードを追加し、ネットワークを作成して参加します。PlayFabMultiplayerManager.Get().CreateAndJoinNetwork(); PlayFabMultiplayerManager.Get().OnNetworkJoined += OnNetworkJoined;
OnNetworkJoined イベント ハンドラーを定義するには、次のコードをクラスに追加します。
private void OnNetworkJoined(object sender, string networkId) { // Print the Network ID so you can give it to the other client. Debug.Log(networkId); }
Unity エディターで保存して [再生] を選択します。 ネットワーク ID が [コンソール] ウィンドウに表示されます。
既存のネットワークに参加する
ガイドのこの部分では、別のクライアントが作成した既存のネットワークに参加する方法を説明します。
HelloPartyLogic.cs スクリプトを開きます。 OnLoginSuccess メソッドで、次のコードを追加してネットワークに参加します。
string networkId = "<your network id>"; PlayFabMultiplayerManager.Get().JoinNetwork(networkId);
ローカル クライアントがネットワークに参加したときに発生するイベントを定義するには、
OnLoginSuccess
メソッドに次のコードを追加します。PlayFabMultiplayerManager.Get().OnNetworkJoined += OnNetworkJoined;
OnNetworkJoined イベント ハンドラーを定義するには、次のコードをクラスに追加します。
private void OnNetworkJoined(object sender, string networkId) { // Print the Network ID so you can give it to the other client. Debug.Log("Network joined!"); }
参加したい他のプレイヤーにホストからネットワーク ID を取得する方法はたくさんあります。 その方法の例については、この Unity プラグインのサンプルを参照してください。
Unity エディターで保存して [再生] を選択します。 [コンソール] ウィンドウに "Network joined!" という文字列が表示されます。
他のプレイヤーへのアクセス
ガイドのこの部分では、ローカル プレーヤーを含む、ネットワーク上の他のプレーヤーにアクセスする方法を説明します。
ネットワークに出入りする新しいプレーヤーをリッスンするには、OnRemotePlayerJoined イベントと OnRemotePlayerLeft イベントに登録します。
HelloPartyLogic.cs スクリプトを開きます。 OnLoginSuccess メソッドで、次のコードを追加し、ネットワークを作成して参加します。
PlayFabMultiplayerManager.Get().OnRemotePlayerJoined += OnRemotePlayerJoined; PlayFabMultiplayerManager.Get().OnRemotePlayerLeft += OnRemotePlayerLeft;
次のメソッドをクラスに追加します。
private void OnRemotePlayerLeft(object sender, PlayFabPlayer player) { } private void OnRemotePlayerJoined(object sender, PlayFabPlayer player) { }
ローカル プレーヤーにアクセスするには、OnRemotePlayerJoined メソッドに次のコードを追加します。
var localPlayer = PlayFabMultiplayerManager.Get().LocalPlayer;
PlayFabPlayer クラスには、プレーヤーを識別し、ミュートし、チャット UI でチャット状態をレンダリングするためのプロパティが含まれています。
データ メッセージの送受信
ガイドのこの部分では、データ メッセージを送受信する方法を説明します。 データ メッセージの送受信を開始する前に、ネットワークに参加する必要があります。
HelloPartyLogic.cs スクリプトを開きます。 OnLoginSuccess メソッドで、次のコードを追加し、データ メッセージをリッスンします。
PlayFabMultiplayerManager.Get().OnDataMessageReceived += LocalPlayer_OnDataMessageReceived;
クラスに
OnDataMessageRecieved
イベント ハンドラーを追加します。private void OnDataMessageReceived(object sender, PlayFabPlayer from, byte[] buffer) { Debug.Log(Encoding.Default.GetString(buffer)); }
データ メッセージを送信するには、次のコードを Update メソッドに追加します。
if (Input.GetButtonDown("Fire1")) { byte[] requestAsBytes = Encoding.UTF8.GetBytes("Hello (data message)"); PlayFabMultiplayerManager.Get().SendDataMessageToAllPlayers(requestAsBytes); }
HelloPartyLogic.cs を保存し、Unity エディターで [再生] を選択します。
- 2 番目のクライアントで、「ネットワークへの接続」の手順を繰り返して、ネットワークを作成して参加します。
- 最初のクライアントに返されたネットワーク ID をコピーして、ネットワークに接続します。
- シーンを選択してメッセージを送信します。 [コンソール] ウィンドウに "こんにちは (データ メッセージ)"と表示されます。
チャット メッセージの送受信
ガイドのこの部分では、チャット メッセージを送受信し、リモート プレーヤーをミュートする方法を説明します。 テキスト チャットに加えて、Party はプレーヤー間のボイス チャットを自動的に有効にします。
チャット メッセージの送受信を開始する前に、ネットワークに参加する必要があります。
HelloPartyLogic.cs スクリプトを開きます。 OnLoginSuccess メソッドで、次のコードを追加し、チャット メッセージをリッスンします。
PlayFabMultiplayerManager.Get().OnChatMessageReceived += OnChatMessageReceived;
クラスにイベント ハンドラー
OnChatMessageReceived
を追加します。private void OnChatMessageReceived(object sender, PlayFabPlayer from, string message, ChatMessageType type) { Debug.Log(message); }
HelloPartyLogic.cs を保存し、Unity エディターで [再生] を押します。
2 番目のクライアントで、「ネットワークへの接続」の手順を繰り返して、ネットワークを作成して参加します。
最初のクライアントに返されたネットワーク ID をコピーして、ネットワークに接続します。
シーンを選択すると、メッセージが送信され、[コンソール] ウィンドウに表示されます。
プレーヤーに他のプレーヤーをミュートするオプションを提供する場合は、IsMuted プロパティを true に設定します。
private void OnRemotePlayerJoined(object sender, PlayFabPlayer player) { // This player will not be able to send text or voice communication. // Data messages can still be sent.+ player.IsMuted = true; }
カスタム ピア接続構成オプションを使用したネットワークへの接続
ガイドのこの部分では、カスタム ピア接続構成オプションを使用してネットワークを作成して参加する方法を示します。 既定のオプションは P2P ですが、ここに示されているフラグの任意の組み合わせを使用して: DirectPeerConnectivityOptions、ユーザーはこのオプションを変更できます。 この例では、P2P をセットする方法を示します。
HelloPartyLogic.cs スクリプトを開きます。
OnLoginSuccess
メソッドで、次のコードを追加し、ネットワークを作成して参加します。PlayfabNetworkConfiguration networkConfiguration = new PlayfabNetworkConfiguration(); networkConfiguration.DirectPeerConnectivityOptions = PARTY_DIRECT_PEER_CONNECTIVITY_OPTIONS_ANY_PLATFORM_TYPE | PARTY_DIRECT_PEER_CONNECTIVITY_OPTIONS_ANY_ENTITY_LOGIN_PROVIDER; PlayFabMultiplayerManager.Get().CreateAndJoinNetwork(networkConfiguration); PlayFabMultiplayerManager.Get().OnNetworkJoined += OnNetworkJoined;
タイトルの一時停止の処理
一部のプラットフォームでは、iOS、Switch、GDK などのタイトルの実行を一時的に中断できます。 タイトルが中断されると、ネットワーク スタックが無効になり、PlayFab Party は PlayFab Party ネットワークへの接続を維持できなくなります。 PlayFab Party を使用する場合、タイトルの一時停止と再開の実行を処理するには、特別な考慮事項が必要です。
iOS
iOS では、PlayFab パーティー ネットワークを終了して、再び接続する必要があります。この作業は ResetParty() を呼び出すことで実行できます。
Switch と GDK
Nintendo Switch と Microsoft GDK では、PlayFab パーティーと PlayFabMultiplayerManager に関連付けられているすべてのリソースをクリーンアップし、タイトルの実行が再開されるまで待ってから PlayFab Party を再初期化し、ネットワークに再接続する必要があります。
"タイトルの中断中にPlayFab パーティーをクリーンアップするには、Suspend()を呼び出します。 タイトルが実行を再開したら、Resume() を呼び出して PlayFab Party を再初期化します。
PlayFab Party と PlayFabMultiplayerManager に関連付けられているすべてのリソースが正常に初期化されたら、手順を繰り返して既存のネットワークに参加します。