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

# Inicio rápido del complemento de Party para Unity

> Inicio rápido para agregar el complemento de PlayFab Party a un proyecto de Unity: instale el paquete, autentique a los jugadores y habilite el chat de voz entre puntos de conexión.

# Inicio rápido: Complemento de PlayFab Party para Unity

Este inicio rápido le ayuda a instalar el SDK de Party para Unity y a realizar sus primeras llamadas a la API para unir a los jugadores en una red de Party. Antes de continuar, asegúrese de haber completado [Habilitación de la característica de Party a través de Game Manager](/services/playfab/multiplayer/networking/enable-party) desde su cuenta de PlayFab.

<Note>
  Si tiene previsto usar este complemento para desarrollar juegos basados en el Microsoft Game Development Kit (GDK), debe adquirir e instalar el GDK por separado. Consulte también los detalles sobre el complemento de Unity para Game Core en las consolas XBOX.
</Note>

## Requisitos

* Una [cuenta de desarrollador de PlayFab](https://developer.playfab.com).

* Una copia instalada del editor de Unity. Para instalar Unity para uso personal a través de Unity Hub, o Unity+ para uso profesional, consulte [Descargar Unity](https://unity3d.com/get-unity/download). Compruebe la compatibilidad con Unity en la documentación de su plataforma específica si es necesario. La versión mínima compatible de Unity es Unity 2017 LTS.

* Un proyecto de Unity, que puede ser cualquiera de las siguientes opciones:

  * Un proyecto totalmente nuevo: para obtener más información, consulte [Iniciar Unity por primera vez](/services/playfab/sdks/unity3d/quickstart).
  * Un proyecto de tutorial guiado. Para obtener más información, consulte [Introducción a Unity](https://learn.unity.com/).
  * Un proyecto existente.

* El SDK "principal" de PlayFab para Unity3D. Para obtener información sobre la instalación del SDK de Unity3D, consulte la sección "Descargar e instalar el SDK de PlayFab" de [Inicio rápido: Biblioteca cliente de PlayFab para C# en Unity](/services/playfab/sdks/unity3d/quickstart#download-and-install-playfab-sdk).

## Descarga e instalación del complemento de PlayFab Party para Unity

Siga los pasos para descargar e instalar el complemento de PlayFab Party para Unity.

1. Descargue el paquete de recursos del [complemento de Party para Unity](https://github.com/playfab/PlayFabPartyUnity) de PlayFab (use un punto de distribución según su plataforma).
2. **¡Importante!** Consulte la información del [archivo README](https://github.com/PlayFab/PlayFabPartyUnity/blob/master/README.md) publicado con el complemento. Está adaptado a cada versión concreta y puede incluir instrucciones importantes específicas de su plataforma.
3. Abra su proyecto de Unity.
4. Vaya a la ubicación donde guardó el archivo .unitypackage y haga doble clic en él para abrir el cuadro de diálogo de importación.
5. Para importar el complemento de PlayFab Party para Unity en su proyecto, seleccione **Import**.

## Configuración de la escena

Esta parte de la guía le muestra cómo agregar `PlayFabMultiplayerManager` a su escena para poder llamar a las API de PlayFab Party desde Unity.

Antes de poder crear una red, **debe tener un jugador de PlayFab con sesión iniciada**. Para obtener información sobre cómo iniciar la sesión de un jugador, consulte [Realización de la primera llamada a la API en Inicio rápido: Biblioteca cliente de PlayFab para C# en Unity](/services/playfab/sdks/unity3d/quickstart#making-your-first-api-call).

1. En el editor de Unity, en la ventana Project, vaya a **Assets > PlayFabPartySDK > Prefabs**.

2. Desde la carpeta Prefabs, arrastre y suelte **PlayFabMultiplayerManager** en su escena en la ventana **Hierarchy**.

3. Cree un Game Object vacío en su escena llamado "HelloPartyLogic".

4. Seleccione el Game Object HelloPartyLogic para abrir el **Inspector**.

5. Seleccione **Add Component**.

6. Escriba "HelloPartyLogic" y presione Entrar para mostrar el menú de script nuevo.

7. Presione Entrar de nuevo para crear el nuevo script, HelloPartyLogic.cs.

8. Busque el script en la ventana **Project** y haga doble clic en él para editarlo.

9. Agregue la siguiente instrucción using a su script:

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

10. Agregue el siguiente código en el método Start para iniciar sesión en PlayFab.

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

11. Agregue los siguientes métodos a la clase.

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

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

<Note>
  Es posible que reciba los siguientes errores: `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>

El GDK de Microsoft y Windows solo admiten x64.

Para resolver estos problemas:

1. En el editor de Unity, seleccione **File > Build Settings.**
2. Seleccione su plataforma. Después, en la lista desplegable **Architecture**, seleccione x86\_64 o x64.
3. Seleccione **Player Settings.**
4. En el panel derecho, seleccione Other Setting.
5. Busque el ajuste **Allow unsafe Code** y selecciónelo.
6. Cierre las ventanas **Build Settings** y **Project Settings**.

## Conexión a una red

Esta parte de la guía le muestra cómo crear una red y unirse a ella.

1. Abra el script HelloPartyLogic.cs. En el método `OnLoginSuccess`, agregue el siguiente código para crear una red y unirse a ella:

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

2. Para definir el controlador de eventos OnNetworkJoined, agregue el siguiente código a la clase:

   ```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. Guarde y seleccione Play en el editor de Unity. El identificador de red se muestra en la ventana Console.

## Unión a una red existente

Esta parte de la guía le muestra cómo unirse a una red existente creada por otro cliente.

1. Abra el script HelloPartyLogic.cs. En el método OnLoginSuccess, agregue el siguiente código para unirse a una red:

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

2. Para definir un evento que se desencadene cuando el cliente local se una a la red, agregue el siguiente código al método `OnLoginSuccess`:

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

3. Para definir el controlador de eventos OnNetworkJoined, agregue el siguiente código a la clase:

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

   Hay muchas maneras de hacer llegar el identificador de red del host a otros jugadores que quieran unirse. Consulte el ejemplo incluido en este complemento de Unity para ver cómo hacerlo.

4. Guarde y seleccione Play en el editor de Unity. La cadena "Network joined!" se muestra en la ventana Console.

## Acceso a otros jugadores

Esta parte de la guía le muestra cómo acceder a otros jugadores de la red, incluido el jugador local.

Para escuchar cuándo se unen nuevos jugadores a la red y cuándo la abandonan, regístrese en los eventos OnRemotePlayerJoined y OnRemotePlayerLeft.

1. Abra el script HelloPartyLogic.cs. En el método OnLoginSuccess, agregue el siguiente código para crear una red y unirse a ella:

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

2. Agregue los siguientes métodos a la clase:

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

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

3. Para acceder al jugador local, agregue el siguiente código al método OnRemotePlayerJoined:

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

La clase PlayFabPlayer contiene propiedades para identificar al jugador, silenciarlo y representar su estado de chat en una interfaz de usuario de chat.

## Envío y recepción de mensajes de datos

Esta parte de la guía le muestra cómo enviar y recibir mensajes de datos. Antes de poder empezar a enviar y recibir mensajes de datos, debe unirse a una red.

1. Abra el script HelloPartyLogic.cs. En el método OnLoginSuccess, agregue el siguiente código para escuchar mensajes de datos:

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

2. Agregue el controlador de eventos `OnDataMessageRecieved` a la clase:

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

3. Para enviar un mensaje de datos, agregue el siguiente código al método Update:

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

Guarde HelloPartyLogic.cs y seleccione Play en el editor de Unity.

1. En un segundo cliente, repita los pasos de [Conexión a una red](#connecting-to-a-network) para crear una red y unirse a ella.
2. Copie el identificador de red devuelto a su primer cliente y conéctese a la red.
3. Seleccione en la escena para enviar un mensaje. "Hello (data message)" se muestra en la ventana Console.

## Envío y recepción de mensajes de chat

Esta parte de la guía le muestra cómo enviar y recibir mensajes de chat y silenciar a jugadores remotos. Además del chat de texto, Party habilita automáticamente el chat de voz entre jugadores.

Antes de poder empezar a enviar y recibir mensajes de chat, debe unirse a una red.

1. Abra el script HelloPartyLogic.cs. En el método OnLoginSuccess, agregue el siguiente código para escuchar mensajes de chat:

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

2. Agregue el controlador de eventos `OnChatMessageReceived` a la clase;

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

Guarde HelloPartyLogic.cs y presione Play en el editor de Unity.

1. En un segundo cliente, repita los pasos de [Conexión a una red](#connecting-to-a-network) para crear una red y unirse a ella.
2. Copie el identificador de red devuelto a su primer cliente y conéctese a la red.
3. Cuando seleccione en la escena, se enviará un mensaje que se mostrará en la ventana Console.
4. Si quiere dar a sus jugadores la opción de silenciar a otros jugadores, establezca la propiedad IsMuted en 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;
   }
   ```

## Conexión a una red con opciones personalizadas de configuración de conectividad entre pares

Esta parte de la guía le muestra cómo crear una red con opciones personalizadas de configuración de conectividad entre pares y unirse a ella. La opción
predeterminada es P2P; sin embargo, mediante cualquier combinación de las marcas presentadas aquí: [DirectPeerConnectivityOptions](/services/playfab/multiplayer/networking/unity-party-api-reference/enums/partyunitydirectpeerconnectivityoptions), el usuario puede modificar esta opción. En este ejemplo se muestra cómo se establece P2P:

1. Abra el script HelloPartyLogic.cs. En el método `OnLoginSuccess`, agregue el siguiente código para crear una red y unirse a ella:

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

## Control de la suspensión del título

Algunas plataformas admiten la suspensión temporal de la ejecución de su título: iOS, Switch y GDK.
Cuando su título se suspende, la pila de red queda invalidada y PlayFab Party no puede mantener una conexión con la red de PlayFab Party.
Se requiere una consideración especial para controlar la suspensión y reanudación de la ejecución de su título cuando se usa PlayFab Party.

### iOS

En iOS, debe abandonar la red de PlayFab Party y volver a conectarse a ella, lo que puede lograrse llamando a [ResetParty()](/services/playfab/multiplayer/networking/unity-party-api-reference/classes/playfabmultiplayermanager/methods/playfabunityresetparty)

### Switch y GDK

En Nintendo Switch y el GDK de Microsoft, debe limpiar PlayFab Party y todos los recursos asociados a PlayFabMultiplayerManager y, a continuación, esperar hasta que se reanude la ejecución del título antes de reinicializar PlayFab Party y volver a conectarse a su red.

"Para limpiar PlayFab Party durante una suspensión del título, llame a [Suspend()](/services/playfab/multiplayer/networking/unity-party-api-reference/classes/playfabmultiplayermanager/methods/playfabunitysuspend). Una vez que el título haya reanudado la ejecución, llame a [Resume()](/services/playfab/multiplayer/networking/unity-party-api-reference/classes/playfabmultiplayermanager/methods/playfabunityresume) para reinicializar PlayFab Party.

Una vez que PlayFab Party y todos los recursos asociados a PlayFabMultiplayerManager se hayan inicializado correctamente, repita los pasos de [Unión a una red existente](#joining-an-existing-network).


## Related topics

- [Inicio rápido del complemento de Unity de Multiplayer](/es/services/playfab/multiplayer/lobby/lobby-matchmaking-sdks/multiplayer-unity-plugin-quickstart.md)
- [Inicio rápido de Unity](/es/services/playfab/sdks/unity3d/quickstart.md)
- [Integración del complemento de PlayFab del Marketplace de Unreal Engine](/es/services/playfab/multiplayer/networking/party-unreal-engine-oss-playfab-plugin-integration.md)
- [Información general del complemento de Party para Unity](/es/services/playfab/multiplayer/networking/party-unity-overview.md)
- [Notas de la versión del complemento de PlayFab Party para Unity](/es/services/playfab/multiplayer/networking/party-unity-release-notes.md)
