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

# Início rápido do plug-in do Party para Unity

> Início rápido para adicionar o plug-in do PlayFab Party a um projeto do Unity: instalar o pacote, autenticar jogadores e habilitar o chat de voz entre pontos de extremidade.

# Início rápido: plug-in do PlayFab Party para Unity

Este início rápido ajuda você a instalar o SDK do Party para Unity e a fazer suas primeiras chamadas de API para reunir jogadores em uma rede do Party. Antes de continuar, certifique-se de ter concluído [Habilitar o recurso Party por meio do Game Manager](https://docs.xbox.com/pt-BR/services/playfab/multiplayer/networking/enable-party.md) na sua conta do PlayFab.

> [!NOTE]
>
> Se você pretende usar este plug-in para desenvolver jogos baseados no Microsoft Game Development Kit (GDK), precisará obter e instalar o GDK separadamente. Confira também os detalhes sobre o complemento do Unity para Game Core em consoles XBOX.

## Requisitos

* Uma [conta de desenvolvedor do PlayFab](https://developer.playfab.com).

* Uma cópia instalada do Unity Editor. Para instalar o Unity para uso pessoal por meio do Unity Hub, ou o Unity+ para uso profissional, confira [Baixar o Unity](https://unity3d.com/get-unity/download). Se necessário, verifique o suporte ao Unity na documentação da sua plataforma específica. A versão mínima do Unity com suporte é o Unity 2017 LTS.

* Um projeto do Unity, que pode ser qualquer uma das seguintes opções:

  * Um projeto totalmente novo: para obter mais informações, confira [Iniciando o Unity pela primeira vez](https://docs.xbox.com/pt-BR/services/playfab/sdks/unity3d/quickstart.md).
  * Um projeto de tutorial guiado. Para obter mais informações, confira [Introdução ao Unity](https://learn.unity.com/).
  * Um projeto existente.

* O Unity3D SDK "principal" do PlayFab. Para obter informações sobre como instalar o Unity3D SDK, confira a seção "Baixar e instalar o PlayFab SDK" de [Início rápido: biblioteca de cliente do PlayFab para C# no Unity](https://docs.xbox.com/pt-BR/services/playfab/sdks/unity3d/quickstart.md#download-and-install-playfab-sdk).

## Baixar e instalar o plug-in do PlayFab Party para Unity

Siga as etapas para baixar e instalar o plug-in do PlayFab Party para Unity.

1. Baixe o pacote de ativos do [plug-in do Party para Unity](https://github.com/playfab/PlayFabPartyUnity) do PlayFab (use um ponto de distribuição de acordo com a sua plataforma).
2. **Importante!** Confira as informações no [arquivo README](https://github.com/PlayFab/PlayFabPartyUnity/blob/master/README.md) publicado com o plug-in. Ele é adaptado a cada versão específica e pode incluir instruções importantes específicas da sua plataforma.
3. Abra seu projeto do Unity.
4. Navegue até o local em que você salvou o .unitypackage e clique duas vezes nele para abrir a caixa de diálogo de importação.
5. Para importar o plug-in do PlayFab Party para Unity no seu projeto, selecione **Import**.

## Configurar sua cena

Esta parte do guia mostra como adicionar o `PlayFabMultiplayerManager` à sua cena para permitir que você chame as APIs do PlayFab Party a partir do Unity.

Antes de criar uma rede, você **precisa ter um jogador do PlayFab conectado**. Para obter informações sobre como conectar um jogador, confira [Fazendo sua primeira chamada de API em Início rápido: biblioteca de cliente do PlayFab para C# no Unity](https://docs.xbox.com/pt-BR/services/playfab/sdks/unity3d/quickstart.md#making-your-first-api-call).

1. No Unity Editor, na janela Project, navegue até **Assets > PlayFabPartySDK > Prefabs**.

2. Na pasta Prefabs, arraste e solte o **PlayFabMultiplayerManager** na sua cena, na janela **Hierarchy**.

3. Crie um Game Object vazio na sua cena chamado "HelloPartyLogic".

4. Selecione o Game Object HelloPartyLogic para abrir o **Inspector**.

5. Selecione **Add Component**.

6. Digite "HelloPartyLogic" e pressione Enter para mostrar o menu de novo script.

7. Pressione Enter novamente para criar o novo script, HelloPartyLogic.cs.

8. Encontre o script na janela **Project** e clique duas vezes nele para editá-lo.

9. Adicione a seguinte instrução using ao seu script:

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

10. Adicione o código a seguir ao método Start para fazer login no PlayFab.

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

11. Adicione os seguintes métodos à classe.

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

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

> [!NOTE]
>
> Você pode receber os seguintes erros: `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".`

O Microsoft GDK e o Windows só dão suporte a x64.

Para resolver esses problemas:

1. No Unity Editor, selecione **File > Build Settings.**
2. Selecione sua plataforma. Em seguida, na lista suspensa **Architecture**, selecione x86\_64 ou x64.
3. Selecione **Player Settings.**
4. No painel direito, selecione Other Setting.
5. Encontre a configuração **Allow unsafe Code** e selecione-a.
6. Feche as janelas **Build Settings** e **Project Settings**.

## Conectando-se a uma rede

Esta parte do guia mostra como criar uma rede e ingressar nela.

1. Abra o script HelloPartyLogic.cs. No método `OnLoginSuccess`, adicione o código a seguir para criar uma rede e ingressar nela:

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

2. Para definir o manipulador de eventos OnNetworkJoined, adicione o código a seguir à classe:

   ```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. Salve e selecione Play no Unity Editor. A ID da rede é exibida na janela Console.

## Ingressando em uma rede existente

Esta parte do guia mostra como ingressar em uma rede existente criada por outro cliente.

1. Abra o script HelloPartyLogic.cs. No método OnLoginSuccess, adicione o código a seguir para ingressar em uma rede:

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

2. Para definir um evento que é disparado quando seu cliente local ingressa na rede, adicione o código a seguir ao método `OnLoginSuccess`:

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

3. Para definir o manipulador de eventos OnNetworkJoined, adicione o código a seguir à classe:

   ```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!");
       }
   ```

   Há muitas maneiras de levar a ID da rede do host para outros jogadores que desejam ingressar. Consulte o exemplo neste plug-in do Unity para ver como fazer isso.

4. Salve e selecione Play no Unity Editor. A cadeia de caracteres "Network joined!" é exibida na janela Console.

## Acessando outros jogadores

Esta parte do guia mostra como acessar outros jogadores na rede, incluindo o jogador local.

Para escutar novos jogadores entrando e saindo da rede, registre-se nos eventos OnRemotePlayerJoined e OnRemotePlayerLeft.

1. Abra o script HelloPartyLogic.cs. No método OnLoginSuccess, adicione o código a seguir para criar uma rede e ingressar nela:

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

2. Adicione os seguintes métodos à classe:

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

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

3. Para acessar o jogador local, adicione o código a seguir ao método OnRemotePlayerJoined:

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

A classe PlayFabPlayer contém propriedades para identificar o jogador, silenciá-lo e renderizar seu estado de chat em uma interface do usuário de chat.

## Enviando e recebendo mensagens de dados

Esta parte do guia mostra como enviar e receber mensagens de dados. Antes de começar a enviar e receber mensagens de dados, você precisa ingressar em uma rede.

1. Abra o script HelloPartyLogic.cs. No método OnLoginSuccess, adicione o código a seguir para escutar mensagens de dados:

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

2. Adicione o manipulador de eventos `OnDataMessageRecieved` à classe:

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

3. Para enviar uma mensagem de dados, adicione o código a seguir ao método Update:

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

Salve o HelloPartyLogic.cs e selecione Play no Unity Editor.

1. Em um segundo cliente, repita as etapas de [Conectando-se a uma rede](#conectando-se-a-uma-rede) para criar uma rede e ingressar nela.
2. Copie a ID da rede retornada para o seu primeiro cliente e conecte-se à rede.
3. Clique na cena para enviar uma mensagem. "Hello (data message)" é exibido na janela Console.

## Enviando e recebendo mensagens de chat

Esta parte do guia mostra como enviar e receber mensagens de chat e silenciar jogadores remotos. Além do chat de texto, o Party habilita automaticamente o chat de voz entre os jogadores.

Antes de começar a enviar e receber mensagens de chat, você precisa ingressar em uma rede.

1. Abra o script HelloPartyLogic.cs. No método OnLoginSuccess, adicione o código a seguir para escutar mensagens de chat:

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

2. Adicione o manipulador de eventos `OnChatMessageReceived` à classe:

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

Salve o HelloPartyLogic.cs e pressione Play no Unity Editor.

1. Em um segundo cliente, repita as etapas de [Conectando-se a uma rede](#conectando-se-a-uma-rede) para criar uma rede e ingressar nela.
2. Copie a ID da rede retornada para o seu primeiro cliente e conecte-se à rede.
3. Quando você clica na cena, uma mensagem é enviada e exibida na janela Console.
4. Se quiser dar aos seus jogadores a opção de silenciar outros jogadores, defina a propriedade IsMuted como 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;
   }
   ```

## Conectando-se a uma rede com opções personalizadas de configuração de conectividade ponto a ponto

Esta parte do guia mostra como criar uma rede e ingressar nela com opções personalizadas de configuração de conectividade ponto a ponto. A opção
padrão é P2P; no entanto, usando qualquer combinação dos sinalizadores apresentados aqui: [DirectPeerConnectivityOptions](https://docs.xbox.com/pt-BR/services/playfab/multiplayer/networking/unity-party-api-reference/enums/partyunitydirectpeerconnectivityoptions.md), o usuário pode modificar essa opção. Este exemplo mostra como o P2P é definido:

1. Abra o script HelloPartyLogic.cs. No método `OnLoginSuccess`, adicione o código a seguir para criar uma rede e ingressar nela:

   ```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;
   ```

## Lidando com a suspensão do título

Algumas plataformas dão suporte à suspensão temporária da execução do seu título: iOS, Switch e GDK.
Quando seu título é suspenso, a pilha de rede é invalidada e o PlayFab Party não consegue manter uma conexão com a rede do PlayFab Party.
É necessária uma atenção especial para lidar com a suspensão e a retomada da execução do seu título ao usar o PlayFab Party.

### iOS

No iOS, você deve sair da rede do PlayFab Party e se reconectar a ela, o que pode ser feito chamando [ResetParty()](https://docs.xbox.com/pt-BR/services/playfab/multiplayer/networking/unity-party-api-reference/classes/playfabmultiplayermanager/methods/playfabunityresetparty.md)

### Switch e GDK

No Nintendo Switch e no Microsoft GDK, você deve limpar o PlayFab Party e todos os recursos associados ao PlayFabMultiplayerManager e, em seguida, aguardar a retomada da execução do título antes de reinicializar o PlayFab Party e se reconectar à sua rede.

Para limpar o PlayFab Party durante a suspensão de um título, chame [Suspend()](https://docs.xbox.com/pt-BR/services/playfab/multiplayer/networking/unity-party-api-reference/classes/playfabmultiplayermanager/methods/playfabunitysuspend.md). Depois que o título retomar a execução, chame [Resume()](https://docs.xbox.com/pt-BR/services/playfab/multiplayer/networking/unity-party-api-reference/classes/playfabmultiplayermanager/methods/playfabunityresume.md) para reinicializar o PlayFab Party.

Depois que o PlayFab Party e todos os recursos associados ao PlayFabMultiplayerManager forem inicializados com êxito, repita as etapas para [Ingressar em uma rede existente](#ingressando-em-uma-rede-existente).


## Related topics

- [Início rápido do plug-in Multiplayer para Unity](https://docs.xbox.com/pt-BR/services/playfab/multiplayer/lobby/lobby-matchmaking-sdks/multiplayer-unity-plugin-quickstart.md)
- [Início rápido do Unity](https://docs.xbox.com/pt-BR/services/playfab/sdks/unity3d/quickstart.md)
- [Visão geral do plug-in do Party para Unity](https://docs.xbox.com/pt-BR/services/playfab/multiplayer/networking/party-unity-overview.md)
- [Início rápido da Unreal Engine](https://docs.xbox.com/pt-BR/services/playfab/sdks/unreal/quickstart.md)
- [Guia de integração do plug-in do PlayFab SDK do Unreal Engine Marketplace](https://docs.xbox.com/pt-BR/services/playfab/multiplayer/networking/party-unreal-engine-oss-playfab-plugin-integration.md)
