> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Party Unity plugin quickstart

> PlayFab Party プラグインを Unity プロジェクトに追加するためのクイックスタート: パッケージのインストール、プレイヤーの認証、およびエンドポイント間のボイス チャットの有効化。

# クイックスタート: PlayFab Party Unity プラグイン

このクイックスタートは、Unity 用 Party SDK をインストールし、プレイヤーを Party ネットワークに参加させるための最初の API 呼び出しを行うのに役立ちます。続行する前に、PlayFab アカウントで [Game Manager 経由で Party 機能を有効にする](/services/playfab/multiplayer/networking/enable-party) を完了していることを確認してください。

<Note>
  Microsoft Game Development Kit (GDK) に基づくゲームを開発するためにこのプラグインを使用する場合は、GDK を別途取得してインストールする必要があります。XBOX コンソール上の Game Core 用 Unity アドオンに関する詳細も参照してください。
</Note>

## 要件

* [PlayFab 開発者アカウント](https://developer.playfab.com)。

* インストール済みの Unity Editor のコピー。Unity Hub 経由で個人使用のために Unity をインストールするか、専門的な使用のために Unity+ をインストールするには、[Unity のダウンロード](https://unity3d.com/get-unity/download) を参照してください。必要に応じて、特定のプラットフォームのドキュメントで Unity のサポートを確認してください。サポートされている最小 Unity バージョンは Unity 2017 LTS です。

* Unity プロジェクト。以下のいずれかのオプションが可能です:

  * まったく新しいプロジェクト: 詳細については、[初めて Unity を起動する](/services/playfab/sdks/unity3d/quickstart) を参照してください。
  * ガイド付きチュートリアル プロジェクト。詳細については、[Getting Started with Unity](https://learn.unity.com/) を参照してください。
  * 既存のプロジェクト。

* PlayFab の「コア」 Unity3D SDK。Unity3D SDK のインストールに関する情報は、[クイックスタート: Unity での C# 用 PlayFab クライアント ライブラリ](/services/playfab/sdks/unity3d/quickstart#download-and-install-playfab-sdk) の「PlayFab SDK のダウンロードとインストール」セクションを参照してください。

## PlayFab Party Unity プラグインのダウンロードとインストール

以下の手順に従って、PlayFab Party Unity プラグインをダウンロードしてインストールします。

1. PlayFab [Party Unity プラグイン](https://github.com/playfab/PlayFabPartyUnity) アセット パッケージをダウンロードします (プラットフォームに応じた配布ポイントを使用してください)。
2. **重要!** プラグインと共に公開されている [README ファイル](https://github.com/PlayFab/PlayFabPartyUnity/blob/master/README.md) の情報を参照してください。各特定のバージョンに合わせてカスタマイズされており、プラットフォーム固有の重要な指示が含まれている場合があります。
3. Unity プロジェクトを開きます。
4. .unitypackage を保存した場所に移動し、それをダブルクリックしてインポート ダイアログを開きます。
5. PlayFab Party Unity プラグインをプロジェクトにインポートするには、**Import** を選択します。

## シーンのセットアップ

このガイドのこの部分では、Unity から PlayFab Party API を呼び出せるように、`PlayFabMultiplayerManager` をシーンに追加する方法を示します。

ネットワークを作成する前に、**PlayFab プレイヤーがログインしている必要があります**。プレイヤーのログインに関する情報は、[クイックスタート: Unity での C# 用 PlayFab クライアント ライブラリの最初の API 呼び出しを行う](/services/playfab/sdks/unity3d/quickstart#making-your-first-api-call) を参照してください。

1. Unity Editor で、Project ウィンドウで **Assets > PlayFabPartySDK > Prefabs** に移動します。

2. Prefabs フォルダーから、**PlayFabMultiplayerManager** を **Hierarchy** ウィンドウのシーンにドラッグ アンド ドロップします。

3. シーンに「HelloPartyLogic」という空の Game Object を作成します。

4. HelloPartyLogic Game Object を選択して **Inspector** を開きます。

5. **Add Component** を選択します。

6. 「HelloPartyLogic」と入力して Enter キーを押し、新しいスクリプト メニューを表示します。

7. もう一度 Enter キーを押して、新しいスクリプト HelloPartyLogic.cs を作成します。

8. **Project** ウィンドウでスクリプトを見つけ、それをダブルクリックしてスクリプトを編集します。

9. スクリプトに次の using ステートメントを追加します:

   ```csharp theme={null}
   using PlayFab;
   using PlayFab.Party;
   using PlayFab.ClientModels;
   ```

10. Start メソッドに、PlayFab にログインするための次のコードを追加します。

    ```csharp theme={null}
    // Log into playfab
    var request = new LoginWithCustomIDRequest { CustomId = UnityEngine.Random.value.ToString(), CreateAccount = true };
    PlayFabClientAPI.LoginWithCustomID(request, OnLoginSuccess, OnLoginFailure);
    ```

11. クラスに次のメソッドを追加します。

    ```csharp theme={null}
    private void OnLoginSuccess(LoginResult result)
    {
    }

    private void OnLoginFailure(PlayFabError error)
    {
    }
    ```

<Note>
  次のエラーが表示される場合があります: `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".`
</Note>

Microsoft GDK と Windows は x64 のみをサポートします。

これらの問題を解決するには:

1. Unity Editor で、**File > Build Settings** を選択します。
2. プラットフォームを選択します。次に **Architecture** ドロップダウンから、x86\_64 または x64 を選択します。
3. **Player Settings** を選択します。
4. 右ペインで、Other Setting を選択します。
5. **Allow unsafe Code** 設定を見つけて選択します。
6. **Build Settings** と **Project Settings** ウィンドウを閉じます。

## ネットワークへの接続

このガイドのこの部分では、ネットワークを作成して参加する方法を示します。

1. HelloPartyLogic.cs スクリプトを開きます。`OnLoginSuccess` メソッドで、ネットワークを作成して参加するために次のコードを追加します:

   ```csharp theme={null}
   PlayFabMultiplayerManager.Get().CreateAndJoinNetwork();
   PlayFabMultiplayerManager.Get().OnNetworkJoined += OnNetworkJoined;
   ```

2. OnNetworkJoined イベント ハンドラーを定義するには、次のコードをクラスに追加します:

   ```csharp theme={null}
   private void OnNetworkJoined(object sender, string networkId)
   {
       // Print the Network ID so you can give it to the other client.
       Debug.Log(networkId);
   }
   ```

3. Unity Editor で保存し、Play を選択します。ネットワーク ID が Console ウィンドウに表示されます。

## 既存のネットワークへの参加

このガイドのこの部分では、別のクライアントが作成した既存のネットワークに参加する方法を示します。

1. HelloPartyLogic.cs スクリプトを開きます。OnLoginSuccess メソッドで、ネットワークに参加するために次のコードを追加します:

   ```csharp theme={null}
   string networkId = "<your network id>";
   PlayFabMultiplayerManager.Get().JoinNetwork(networkId);
   ```

2. ローカル クライアントがネットワークに参加したときに発火するイベントを定義するには、次のコードを `OnLoginSuccess` メソッドに追加します:

   ```csharp theme={null}
   PlayFabMultiplayerManager.Get().OnNetworkJoined += OnNetworkJoined;
   ```

3. OnNetworkJoined イベント ハンドラーを定義するには、次のコードをクラスに追加します:

   ```csharp theme={null}
       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 プラグインのサンプルを参照してください。

4. Unity Editor で保存し、Play を選択します。文字列「Network joined!」が Console ウィンドウに表示されます。

## 他のプレイヤーへのアクセス

このガイドのこの部分では、ローカル プレイヤーを含め、ネットワーク上の他のプレイヤーにアクセスする方法を示します。

新しいプレイヤーがネットワークに参加したり退出したりするのをリッスンするには、OnRemotePlayerJoined および OnRemotePlayerLeft イベントに登録します。

1. HelloPartyLogic.cs スクリプトを開きます。OnLoginSuccess メソッドで、ネットワークを作成して参加するために次のコードを追加します:

   ```csharp theme={null}
   PlayFabMultiplayerManager.Get().OnRemotePlayerJoined += OnRemotePlayerJoined;
   PlayFabMultiplayerManager.Get().OnRemotePlayerLeft += OnRemotePlayerLeft;
   ```

2. クラスに次のメソッドを追加します:

   ```csharp theme={null}
   private void OnRemotePlayerLeft(object sender, PlayFabPlayer player)
   {
   }

   private void OnRemotePlayerJoined(object sender, PlayFabPlayer player)
   {
   }
   ```

3. ローカル プレイヤーにアクセスするには、次のコードを OnRemotePlayerJoined メソッドに追加します:

   ```csharp theme={null}
   var localPlayer = PlayFabMultiplayerManager.Get().LocalPlayer;
   ```

PlayFabPlayer クラスには、プレイヤーを識別するプロパティ、ミュート、およびチャット UI でのチャット状態をレンダリングするプロパティが含まれています。

## データ メッセージの送受信

このガイドのこの部分では、データ メッセージを送受信する方法を示します。データ メッセージの送受信を開始する前に、ネットワークに参加する必要があります。

1. HelloPartyLogic.cs スクリプトを開きます。OnLoginSuccess メソッドで、データ メッセージをリッスンするために次のコードを追加します:

   ```csharp theme={null}
   PlayFabMultiplayerManager.Get().OnDataMessageReceived += LocalPlayer_OnDataMessageReceived;
   ```

2. `OnDataMessageRecieved` イベント ハンドラーをクラスに追加します:

   ```csharp theme={null}
   private void OnDataMessageReceived(object sender, PlayFabPlayer from, byte[] buffer)
   {
       Debug.Log(Encoding.Default.GetString(buffer));
   }
   ```

3. データ メッセージを送信するには、次のコードを Update メソッドに追加します:

   ```csharp theme={null}
   if (Input.GetButtonDown("Fire1"))
   {
       byte[] requestAsBytes = Encoding.UTF8.GetBytes("Hello (data message)");
       PlayFabMultiplayerManager.Get().SendDataMessageToAllPlayers(requestAsBytes);
   }
   ```

HelloPartyLogic.cs を保存し、Unity Editor で Play を選択します。

1. 2 つ目のクライアントで、[ネットワークへの接続](#connecting-to-a-network) の手順を繰り返してネットワークを作成して参加します。
2. 最初のクライアントに返されたネットワーク ID をコピーして、ネットワークに接続します。
3. シーン上を選択してメッセージを送信します。「Hello (data message)」が Console ウィンドウに表示されます。

## チャット メッセージの送受信

このガイドのこの部分では、チャット メッセージを送受信し、リモート プレイヤーをミュートする方法を示します。テキスト チャットに加えて、Party はプレイヤー間のボイス チャットを自動的に有効にします。

チャット メッセージの送受信を開始する前に、ネットワークに参加する必要があります。

1. HelloPartyLogic.cs スクリプトを開きます。OnLoginSuccess メソッドで、チャット メッセージをリッスンするために次のコードを追加します:

   ```csharp theme={null}
   PlayFabMultiplayerManager.Get().OnChatMessageReceived += OnChatMessageReceived;
   ```

2. イベント ハンドラー `OnChatMessageReceived` をクラスに追加します。

   ```csharp theme={null}
   private void OnChatMessageReceived(object sender, PlayFabPlayer from, string message, ChatMessageType type)
   {
       Debug.Log(message);
   }
   ```

HelloPartyLogic.cs を保存し、Unity Editor で Play を押します。

1. 2 つ目のクライアントで、[ネットワークへの接続](#connecting-to-a-network) の手順を繰り返してネットワークを作成して参加します。
2. 最初のクライアントに返されたネットワーク ID をコピーして、ネットワークに接続します。
3. シーンを選択すると、メッセージが送信され、Console ウィンドウに表示されます。
4. 他のプレイヤーをミュートするオプションをプレイヤーに提供したい場合は、IsMuted プロパティを true に設定します。

   ```csharp theme={null}
   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](/services/playfab/multiplayer/networking/unity-party-api-reference/enums/partyunitydirectpeerconnectivityoptions) では、ユーザーはこのオプションを変更できます。この例では、P2P の設定方法を示します:

1. HelloPartyLogic.cs スクリプトを開きます。`OnLoginSuccess` メソッドで、ネットワークを作成して参加するために次のコードを追加します:

   ```csharp theme={null}
   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 Party ネットワークから退出して再接続する必要があります。これは [ResetParty()](/services/playfab/multiplayer/networking/unity-party-api-reference/classes/playfabmultiplayermanager/methods/playfabunityresetparty) を呼び出すことで実現できます。

### Switch および GDK

Nintendo Switch および Microsoft GDK では、PlayFab Party と PlayFabMultiplayerManager に関連付けられたすべてのリソースをクリーンアップし、タイトルの実行が再開されるまで待機してから PlayFab Party を再初期化してネットワークに再接続する必要があります。

「タイトルの中断中に PlayFab Party をクリーンアップするには、[Suspend()](/services/playfab/multiplayer/networking/unity-party-api-reference/classes/playfabmultiplayermanager/methods/playfabunitysuspend) を呼び出します。タイトルの実行が再開されたら、[Resume()](/services/playfab/multiplayer/networking/unity-party-api-reference/classes/playfabmultiplayermanager/methods/playfabunityresume) を呼び出して PlayFab Party を再初期化します。

PlayFab Party と PlayFabMultiplayerManager に関連付けられたすべてのリソースが正常に初期化されたら、[既存のネットワークへの参加](#joining-an-existing-network) の手順を繰り返します。


## Related topics

- [Party Unity plugin overview](/ja-jp/services/playfab/multiplayer/networking/party-unity-overview.md)
- [PlayFab Party Unity plugin Release Notes](/ja-jp/services/playfab/multiplayer/networking/party-unity-release-notes.md)
- [PlayFab Online Subsystem (OSS) Quickstart](/ja-jp/services/playfab/multiplayer/networking/party-unreal-engine-oss-quickstart.md)
- [Matchmaking quickstart](/ja-jp/services/playfab/multiplayer/matchmaking/quickstart.md)
- [Matchmaking SDK quickstart](/ja-jp/services/playfab/multiplayer/matchmaking/quickstart-client-sdk.md)
