> ## 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.

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

> Instale o plug-in PlayFab Multiplayer para Unity e faça suas primeiras chamadas às APIs de Lobby e Matchmaking a partir de um projeto do Unity, incluindo considerações de configuração do GDK.

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

Comece a usar o plug-in PlayFab Multiplayer para Unity. Siga as etapas abaixo para instalar o pacote e experimentar o código de exemplo de uma tarefa básica.

Este início rápido ajuda você a fazer suas primeiras chamadas de API usando o PlayFab Multiplayer SDK para Unity. Antes de continuar, conclua o [Início rápido: biblioteca de cliente do PlayFab para C# no Unity](/pt-BR/services/playfab/sdks/unity3d/quickstart), que garante que você tenha uma conta do PlayFab e esteja familiarizado com o login no PlayFab a partir do seu jogo e com o PlayFab Game Manager.

<Note>
  Se você pretende usar este plug-in para desenvolver jogos baseados no Microsoft Game Development Kit (GDK), precisará adquirir e instalar o GDK separadamente. Consulte também os detalhes sobre o complemento do Unity para Game Core em consoles XBOX.
</Note>

## 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, consulte [Download Unity](https://unity3d.com/get-unity/download). Verifique o suporte ao Unity na documentação da sua plataforma específica, se necessário. A versão mínima do Unity compatível é o Unity 2017 LTS.

* Um projeto do Unity, que pode ser qualquer um dos seguintes:

  * Um projeto totalmente novo: para obter mais informações, consulte [Iniciar o Unity pela primeira vez](/pt-BR/services/playfab/sdks/unity3d/quickstart).
  * Um projeto de tutorial guiado. Para obter mais informações, consulte [Getting Started with Unity](https://learn.unity.com/).
  * Um projeto existente.

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

## Baixar e instalar o plug-in PlayFab Multiplayer para Unity

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

1. Baixe o pacote Asset do [Multiplayer Unity Plugin](https://github.com/PlayFab/PlayFabMultiplayerUnity) do PlayFab (use um ponto de distribuição de acordo com sua plataforma).
2. **Importante!** Consulte as informações do arquivo README 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 PlayFab Multiplayer Unity Plugin para o seu projeto, selecione **Import**.

Observação: talvez seja necessário instalar uma versão mais recente do SDK "principal" do PlayFab para Unity, se necessário.

## Configurar sua cena

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

Antes de usar a API Multiplayer, você **precisa ter um jogador do PlayFab conectado**. Para obter informações sobre como conectar um jogador, consulte [Fazer sua primeira chamada de API no Início rápido: biblioteca de cliente do PlayFab para C# no Unity](/pt-BR/services/playfab/sdks/unity3d/quickstart#making-your-first-api-call).

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

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

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

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

5. Selecione **Add Component**.

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

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

8. Localize 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.Multiplayer;
   using PlayFab.ClientModels;
   ```

10. Adicione o código a seguir no 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: `C \# 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>

O Microsoft GDK e o Windows só oferecem 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. Localize a configuração **Allow unsafe Code** e selecione-a.
6. Feche as janelas **Build Settings** e **Project Settings**.

## Criar um lobby e ingressar nele

Esta parte do guia mostra como criar um lobby e ingressar nele.

1. Abra o script HelloMultiplayerLogic.cs. No método `OnLoginSuccess`, adicione o código a seguir para criar um lobby e ingressar nele:

   ```csharp theme={null}
   string entityId = ...; // PlayFab user's entity Id
   string entityType = ...; // PlayFab user's entity type

   PlayFabMultiplayer.OnLobbyCreateAndJoinCompleted += this.PlayFabMultiplayer_OnLobbyCreateAndJoinCompleted;
   PlayFabMultiplayer.OnLobbyDisconnected += this.PlayFabMultiplayer_OnLobbyDisconnected;

   var createConfig = new LobbyCreateConfiguration()
   {
       MaxMemberCount = 10,
       OwnerMigrationPolicy = LobbyOwnerMigrationPolicy.Automatic,
       AccessPolicy = LobbyAccessPolicy.Public
   };

   createConfig.LobbyProperties["Prop1"] = "Value1";
   createConfig.LobbyProperties["Prop2"] = "Value2";

   var joinConfig = new LobbyJoinConfiguration();
   joinConfig.MemberProperties["MemberProp1"] = "MemberValue1";
   joinConfig.MemberProperties["MemberProp2"] = "MemberValue2";

   PlayFabMultiplayer.CreateAndJoinLobby(
       new PFEntityKey(
           entityId,
           entityType),
       createConfig,
       joinConfig);
   ```

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

   ```csharp theme={null}
   private void PlayFabMultiplayer_OnLobbyCreateAndJoinCompleted(Lobby lobby, int result)
   {
       if (LobbyError.SUCCEEDED(result))
       {
           // Lobby was successfully created
           Debug.Log(lobby.ConnectionString);
       }
       else
       {
           // Error creating a lobby
           Debug.Log("Error creating a lobby");
       }
   }
   ```

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

   ```csharp theme={null}
   private void PlayFabMultiplayer_OnLobbyDisconnected(Lobby lobby)
   {
       // Disconnected from lobby
       Debug.Log("Disconnected from lobby!");
   }
   ```

4. Salve e selecione Play no Unity Editor. A cadeia de conexão do lobby é exibida na janela Console.

## Ingressar em um lobby

Esta parte do guia mostra como ingressar em um lobby existente que outro cliente criou.

1. Abra o script HelloMultiplayerLogic.cs. No método OnLoginSuccess, adicione o código a seguir para ingressar em um lobby:

   ```csharp theme={null}
   PFEntityKey entityKey = ...; // PlayFab user's entity key

   string connectionString = "<your lobby connection string>";

   PlayFabMultiplayer.JoinLobby(
           entityKey,
           connectionString,
           null);
   ```

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

   ```csharp theme={null}
   PlayFabMultiplayer.OnLobbyJoinCompleted += this.PlayFabMultiplayer_OnLobbyJoinCompleted;
   ```

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

   ```csharp theme={null}
   private void PlayFabMultiplayer_OnLobbyJoinCompleted(Lobby lobby, PFEntityKey newMember, int reason)
   {
       if (LobbyError.SUCCEEDED(reason))
       {
           // Successfully joined a lobby
           Debug.Log("Joined a lobby");
       }
       else
       {
           // Error joining a lobby
           Debug.Log("Error joining a lobby");
       }
   }
   ```

4. Salve e selecione Play no Unity Editor. A cadeia de caracteres "Joined a lobby" é exibida na janela Console.

## Localizar lobbies

Esta parte do guia mostra como localizar lobbies existentes que outros clientes criaram.

1. Abra o script HelloMultiplayerLogic.cs. No método OnLoginSuccess, adicione o código a seguir para localizar lobbies:

   ```csharp theme={null}
   PFEntityKey entityKey = ...; // PlayFab user's entity key

   LobbySearchConfiguration config = new LobbySearchConfiguration();
   PlayFabMultiplayer.FindLobbies(entityKey, config);
   ```

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

   ```csharp theme={null}
   PlayFabMultiplayer.OnLobbyFindLobbiesCompleted += this.PlayFabMultiplayer_OnLobbyFindLobbiesCompleted;
   ```

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

   ```csharp theme={null}
   private void PlayFabMultiplayer_OnLobbyFindLobbiesCompleted(
       IList<LobbySearchResult> searchResults, 
       PFEntityKey newMember, 
       int reason)
   {
       if (LobbyError.SUCCEEDED(reason))
       {
           // Successfully found lobbies
           Debug.Log("Found lobbies");

           // Iterate through lobby search results
           foreach (LobbySearchResult result in searchResults)
           {
               // Examine a search result
           }
       }
       else
       {
           // Error finding lobbies
           Debug.Log("Error finding lobbies");
       }
   }
   ```

4. Salve e selecione Play no Unity Editor. A cadeia de caracteres "Found lobbies" é exibida na janela Console.

## Criar um tíquete de matchmaking

Esta parte do guia mostra como criar um tíquete de matchmaking. Execute-o com o cenário "Ingressar em um tíquete de matchmaking" em outro cliente, abaixo.

1. Abra o script HelloMultiplayerLogic.cs. No método `OnLoginSuccess`, adicione o código a seguir para criar um tíquete de matchmaking:

   ```csharp theme={null}
   PFEntityKey entityKey = ...; // PlayFab user's entity key
   PFEntityKey remoteEntityKey = ...; // another PlayFab user's entity key
   string remoteUserAttributesJson = ...; // JSON string with another PlayFab user's attributes for matchmaking

   PlayFabMultiplayer.OnMatchmakingTicketStatusChanged += PlayFabMultiplayer_OnMatchmakingTicketStatusChanged;

   List<MatchUser> localUsers = new List<MatchUser>();
   localUsers.Add(new MatchUser(entityKey, remoteUserAttributesJson));

   List<PFEntityKey> membersToMatchWith = new List<PFEntityKey>();
   membersToMatchWith.Add(remoteEntityKey);

   PlayFabMultiplayer.CreateMatchmakingTicket(
       localUsers,
       "QuickMatchQueueName",
       membersToMatchWith);
   ```

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

   ```csharp theme={null}
   private void PlayFabMultiplayer_OnMatchmakingTicketStatusChanged(MatchmakingTicket ticket)
   {
       // Store and print matchmaking ticket
       Debug.Log(ticket.TicketId);

       // Examine matchmaking ticket status
       Debub.Log(ticket.Status)

       // Share matchmaking ticket with other clients taking part in matchmaking

       // Examine ticket
   }
   ```

3. Salve e selecione Play no Unity Editor.

Se membersToMatchWith for especificado, um manipulador de eventos OnMatchmakingTicketStatusChanged será disparado e o Status será WaitingForPlayers. Nesse caso, quando outro cliente chamar JoinMatchmakingTicketFromId, um novo manipulador de eventos OnMatchmakingTicketStatusChanged será disparado e, desta vez, o status será WaitingForMatch.

Caso contrário, um manipulador de eventos OnMatchmakingTicketStatusChanged será disparado e o status será WaitingForMatch.

## Ingressar em um tíquete de matchmaking

Esta parte do guia mostra como ingressar em um tíquete de matchmaking existente que outro cliente criou. Execute-o com o cenário "Criar um tíquete de matchmaking" em outro cliente, acima.

1. Abra o script HelloMultiplayerLogic.cs. No método OnLoginSuccess, adicione o código a seguir para ingressar em um tíquete de matchmaking:

   ```csharp theme={null}
   PFEntityKey entityKey = ...; // PlayFab user's entity key
   string ticketId = ...; // Matchmaking ticket obtained from the client that created the ticket

   PlayFabMultiplayer.OnMatchmakingTicketCompleted += PlayFabMultiplayer_OnMatchmakingTicketStatusChanged;

   // Create JSON string with PlayFab user's attributes for matchmaking. This will need to be shared with other clients taking part in matchmaking
   string uniqueId = System.Guid.NewGuid().ToString();
   string userAttributesJson = "{\"MatchIdentifier\": \"" + uniqueId + "\"}";

   PlayFabMultiplayer.JoinMatchmakingTicketFromId(
       new MatchUser(entityKey, userAttributesJson),
       ticketId,
       "QuickMatchQueueName",
       new List<PFEntityKey>());
   ```

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

   ```csharp theme={null}
   private void PlayFabMultiplayer_OnMatchmakingTicketStatusChanged(MatchmakingTicket ticket)
   {
       // Store and print matchmaking ticket
       Debug.Log(ticket.TicketId);

       // Examine matchmaking ticket status
       Debub.Log(ticket.Status)

       // Share matchmaking ticket with other clients taking part in matchmaking

       // Examine ticket
   }
   ```

3. Salve e selecione Play no Unity Editor.

Um OnMatchmakingTicketStatusChanged será disparado com o Status WaitingForMatch.

## Concluir um tíquete de matchmaking

Esta parte do guia mostra como o matchmaking é concluído. Execute-o com o cenário "Criar um tíquete de matchmaking" em outro cliente, acima. Opcionalmente, você pode executá-lo com o cenário "Ingressar em um tíquete de matchmaking".

1. Uma partida será encontrada quando vários tíquetes na mesma fila estiverem qualificados para serem combinados. Nesse caso,
   o manipulador de eventos OnMatchmakingTicketCompleted será disparado.

2. Assine o manipulador OnMatchmakignTicketCompleted

   ```csharp theme={null}
   PlayFabMultiplayer.OnMatchmakingTicketCompleted += PlayFabMultiplayer_OnMatchmakingTicketCompleted;
   ```

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

   ```csharp theme={null}
   private void PlayFabMultiplayer_OnMatchmakingTicketCompleted(MatchmakingTicket ticket, int result)
   {
       if (LobbyError.SUCCEEDED(result))
       {
           // Successfully completed matchmaking ticket
           Debug.Log("Completed matchmaking ticket");

           // Examine matchmaking details
           MatchmakingMatchDetails details = ticket.GetMatchDetails();
       }
       else
       {
           // Error completing a matchmaking ticket
           Debug.Log("Error completing a matchmaking ticket");
       }
   }
   ```


## Related topics

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