Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Agrega Firebase a tu proyecto de Unity

Mejora tus juegos de Unity con nuestros SDK de Firebase Unity.

Para demostrarte lo fácil que es integrar Firebase a tu proyecto de Unity, creamos “MechaHamster”, un juego de muestra que puedes descargar desde GitHub, App Store y Google Play Store.

MechaHamster (GitHub)

MechaHamster (App Store)

MechaHamster (Play Store)


Obtén más información acerca de cómo mejorar tus juegos con Firebase en nuestra página de juegos de Firebase.

¿Ya agregaste Firebase a tu proyecto de Unity? Asegúrate de usar la versión más reciente del SDK de Firebase Unity.

Requisitos previos

  • Instala Unity 5.3 o una versión más reciente.

  • Instala lo siguiente (solo en iOS):

    • Xcode 9.4.1 o una versión más reciente
    • CocoaPods 1.4.0 o una versión más reciente
  • Asegúrate de que tu proyecto de Unity cumpla con estos requisitos:

    • iOS: Debe orientarse a iOS 8 o una versión más reciente.
    • Android: Debe orientarse al nivel de API 16 (Jelly Bean) o una versión más reciente.
  • Configura un dispositivo físico o usa un emulador para ejecutar tu app.

    • iOS: Configura un dispositivo iOS físico o usa el simulador de iOS.

    • Android: Los emuladores deben usar una imagen que cuente con Google Play.

Si solo quieres probar un producto de Firebase, pero aún no tienes un proyecto de Unity, puedes descargar una de estas muestras de inicio rápido.

Paso 1: Crea un proyecto de Firebase

Antes de que puedas agregar Firebase al proyecto de Unity, deberás crear un proyecto de Firebase para conectarlo con el de Unity. Consulta el artículo Información sobre los proyectos de Firebase para obtener detalles sobre el tema.

Paso 2: Registra tu app con Firebase

Puedes registrar una o más apps o juegos para conectarlos con el proyecto de Firebase.

  1. Dirígete a Firebase console.

  2. En el centro de la página de descripción general del proyecto, haz clic en el ícono de Unity () para iniciar el flujo de trabajo de configuración.

    Si ya agregaste una app a tu proyecto de Firebase, haz clic en Agregar app para que se muestren las opciones de plataforma.

  3. Selecciona qué destino de compilación del proyecto de Unity quieres registrar. Si quieres registrar ambos destinos a la vez, este es el momento de hacerlo.

  4. Ingresa el ID del proyecto de Unity específico de cada plataforma.

    • iOS: Ingresa el ID de iOS del proyecto de Unity en el campo iOS bundle ID.

    • Android: Ingresa el ID de Android del proyecto de Unity en el campo Android package name.
      Por lo general, los términos ID de la aplicación y nombre del paquete se utilizan de manera intercambiable.

  5. Ingresa el sobrenombre específico de cada plataforma para el proyecto de Unity (opcional).
    Los sobrenombres son identificadores internos y convenientes que solo tú puedes ver en Firebase console.

  6. Haz clic en Registrar app.

Paso 3: Agrega los archivos de configuración de Firebase

  1. Usa el flujo de trabajo de configuración de Firebase console para obtener los archivos de configuración de Firebase específicos de las plataformas.

    • iOS: Haz clic en Download GoogleService-Info.plist.

    • Android: Haz clic en Download google-services.json.

  2. Abre la ventana Project del proyecto de Unity y transfiere los archivos de configuración a la carpeta Assets.

  3. Vuelve a Firebase console y, en el flujo de trabajo de configuración, haz clic en Next.

Paso 4: Agrega los SDK de Firebase Unity

Puedes agregar productos de Firebase admitidos a tu proyecto de Unity con Unity Package Manager o puedes instalar los SDK de forma manual.

Unity Package Manager

Si usas Unity 2018.4 o una versión posterior, y .NET 4.x o .NET Standard 2.0, puedes instalar los componentes del SDK de Firebase con Unity Package Manager:

  1. Agrega Game Package Registry by Google a tu proyecto de Unity.

    • Si nunca importaste el SDK de Firebase y EDM4U (conocido formalmente como el Agente de resolución de Servicios de Play), puedes agregar el siguiente bloque a Packages/manifest.json.

      "scopedRegistries": [
        {
          "name": "Game Package Registry by Google",
          "url": "https://unityregistry-pa.googleapis.com",
          "scopes": [
            "com.google"
          ]
        }
      ]
      

      Ten en cuenta que otros SDK, como el de Facebook, pueden contener EDM4U en su .unitypackage. Verifica si existen carpetas Assets/ExternalDependencyManager o Assets/PlayServicesResolver. Si existen, quítalas antes de instalar cualquier SDK de Firebase mediante Unity Package Manager.

    • Si necesitas migrar un SDK existente o prefieres un método más interactivo, importa la versión más reciente de External Dependency Manager for Unity (EDM4U).

      Unity Package Manager Resolver te pedirá que agregues Game Package Registry by Google a tu proyecto. Selecciona el registro y haz clic en el botón Add Selected Registries.

      • EDM4U agrega el registro a Packages/manifest.json en tu carpeta actual de proyectos de Unity.

      • También puedes agregar este registro más adelante con las opciones de menú Assets > External Dependency Manager > Unity Package Manager Resolver > Add Registries o Window > Google >Game Package Registry > Add To Project.

  2. Migra los paquetes de Firebase y EDM4U importados a través de .unitypackage a Unity Package Manager. Esto se puede hacer mediante uno de los siguientes métodos.

    • Una vez que EDM4U haya agregado el registro, aparecerá un diálogo titulado “Migrating Packages”. En este cuadro, se enumeran todos los paquetes disponibles para instalar mediante Unity Package Manager. Recomendamos que selecciones todas las opciones y hagas clic en el botón Apply.

    • También puedes abrir este diálogo manualmente más adelante si usas las opciones de menú Assets > External Dependency Manager > Unity Package Manager Resolver > Migrate Packages.

    • También puedes migrar de forma manual todos los paquetes importados mediante .unitypackage con los siguientes pasos.

      1. Quita el SDK de Firebase Unity y EDM4U de tu carpeta Assets. EDM4U proporciona una herramienta para desinstalar paquetes administrados, a los que se puede acceder mediante las opciones de menú Assets > External Dependency Manager > Version Handler > Uninstall Managed Packages. Selecciona todos los SDK de Firebase, además de External Dependency Manager, y haz clic en Uninstall Selected Packages.

        • También puedes quitar el SDK de forma manual de la carpeta Assets.
      2. Para instalar los componentes del SDK de Firebase Unity con Unity Package Manager, selecciona Window > Package Manager y busca Firebase. Los componentes del SDK de Firebase Unity se pueden instalar, actualizar y quitar a través de esta interfaz.

  3. Ahora puedes explorar y también instalar los componentes del SDK de Firebase Unity o los paquetes de Google con Unity Package Manager. Para ello, selecciona Window > Package Manager. Todos estos componentes se pueden instalar, actualizar y quitar a través de esta interfaz.

Instalación manual

  1. En Firebase console, haz clic en Descargar el SDK de Firebase Unity y descomprímelo en el lugar que prefieras.

    • Puedes volver a descargar el SDK de Firebase Unity cuando quieras.

    • El SDK de Firebase Unity no es específico para cada plataforma.

  2. Abre el proyecto de Unity, ve a Assets > Import Package > Custom Package.

  3. En el SDK descomprimido, selecciona los productos de Firebase admitidos que deseas usar en la app.

    Si Analytics está habilitado

    • Agrega el paquete de Firebase para Google Analytics: FirebaseAnalytics.unitypackage.
    • Agrega los paquetes de cualquier otro producto de Firebase que quieras usar en tu app. Por ejemplo, para usar Firebase Authentication y Firebase Realtime Database:
      FirebaseAuth.unitypackage y FirebaseDatabase.unitypackage

    Si Analytics está inhabilitado

    Agrega los paquetes de los productos de Firebase que deseas usar en tu app. Por ejemplo, para usar Firebase Authentication y Firebase Realtime Database:
    FirebaseAuth.unitypackage y FirebaseDatabase.unitypackage

  4. En la ventana Import Unity Package, haz clic en Import.

  5. Vuelve a Firebase console y, en el flujo de trabajo de configuración, haz clic en Next.

Paso 5: Confirma los requisitos de la versión de los Servicios de Google Play

El SDK de Firebase Unity en Android requiere los Servicios de Google Play actualizados para poder usarlo.

Se debe agregar el siguiente código al inicio de la aplicación. Puedes buscar los Servicios de Google Play y, de forma opcional, actualizarlos a la versión que requiera el SDK de Firebase Unity. De esta manera, es posible llamar a otros métodos en el SDK.

Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => {
  var dependencyStatus = task.Result;
  if (dependencyStatus == Firebase.DependencyStatus.Available) {
    // Create and hold a reference to your FirebaseApp,
    // where app is a Firebase.FirebaseApp property of your application class.
       app = Firebase.FirebaseApp.DefaultInstance;

    // Set a flag here to indicate whether Firebase is ready to use by your app.
  } else {
    UnityEngine.Debug.LogError(System.String.Format(
      "Could not resolve all Firebase dependencies: {0}", dependencyStatus));
    // Firebase Unity SDK is not safe to use here.
  }
});

Listo. El proyecto de Unity se registró y configuró para usar Firebase.

Problemas conocidos

Compatibilidad de .NET con Unity 2017.x y versiones posteriores

En Unity 2017 y versiones posteriores, Firebase admite .NET 4.x como opción de compilación experimental. Los complementos de Firebase usan componentes del SDK de Parse para proporcionar algunas clases de .NET 4.x en versiones anteriores de .NET.

Por lo tanto, el SDK de Firebase Unity 5.4.0 y versiones posteriores proporcionan complementos compatibles con .NET 3.x o .NET 4.x en sus directorios dotnet3 y dotnet4 del SDK de Firebase Unity.

Cuando importes un complemento de Firebase que no sea compatible con la versión de .NET habilitada en tu proyecto, verás errores de compilación de algunos tipos en .NET Framework que implementa el SDK de Parse.

Sigue estos pasos para solucionar el error de compilación si usas .NET 3.x:

  1. Quita o inhabilita los siguientes DLL para todas las plataformas:
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll
  2. Habilita los siguientes DLL para todas las plataformas:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll

Sigue estos pasos para solucionar el error de compilación si usas .NET 4.x:

  1. Quita o inhabilita los siguientes DLL para todas las plataformas:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll
  2. Habilita los siguientes DLL para todas las plataformas:
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll

Si importas otro complemento de Firebase, haz lo siguiente:

  • En el proyecto de Unity, navega hasta Assets > Play Services Resolver > Version Handler > Update a fin de habilitar los DLL correctos del proyecto.

Compilación Unity 2017.1 IL2CPP en proyectos .NET 4.x

En Unity 2017 y versiones posteriores, Firebase admite .NET 4.x como opción de compilación experimental. Los complementos de Firebase usan componentes del SDK de Parse para proporcionar algunas clases de .NET 4.x en versiones anteriores de .NET.

Por lo tanto, el SDK de Firebase Unity en su versión 5.4.0, y sus versiones posteriores, proporciona DLL de desvío que reenvían los tipos Parse (por ejemplo, implementación Parse de System.Threading.Tasks.Task) al framework de .NET. Lamentablemente, el IL2CPP (transpilador que convierte C# en C++) que incluye Unity 2017.1.x no procesa correctamente los DLL de desvío de tipos, lo que genera errores de compilación como el siguiente:

Fatal error in Unity CIL Linker Mono.Cecil.ResolutionException: Failed to
resolve System.Threading.Tasks.TaskCompletionSource`1<T>

Todavía no hay una solución alternativa para los errores de compilación de .NET 4.x IL2CPP en Unity 2017.1., por lo que debes actualizar a Unity 2017.2 o una versión posterior a fin de usar .NET 4.x en los proyectos compilados con IL2CPP.

Herramientas de redes de Unity 2017.2

Firebase Realtime Database crea conexiones de red TLS con la pila de herramientas de redes de .NET. La función TLS presenta errores en Unity 2017.2 cuando se usa .NET 4.6, lo que causa que el complemento de Realtime Database falle en editores y en computadoras de escritorio.

No hay una solución alternativa para este problema, por lo que debes usar una versión diferente de Unity, como 2017.1 o 2017.3.

Falta el archivo de configuración de Firebase para Android en Unity 2020.

Con el fin de admitir las versiones de Unity que no tienen la capacidad de personalizar la compilación de Gradle, la herramienta del editor de Firebase genera Assets/Plugins/Android/Firebase/res/values/google-services.xml como un recurso de Android para empaquetarse en una compilación de Android; por lo tanto, el SDK de Firebase puede usarlo para inicializar la instancia predeterminada de FirebaseApp.

En Unity 2020, todos los recursos de Android deben estar en directorios con un sufijo .androidlib. Si el proyecto usa un SDK de Firebase que genera un directorio Assets/Plugins/Android/Firebase, cámbiale el nombre a Assets/Plugins/Android/Firebase.androidlib. Asegúrate de que contenga AndroidManifest.xml, project.properties y res/values/google-services.xml.

Conflicto de instalación cuando se usa Unity Packager Manager

Se puede instalar un paquete desde diferentes fuentes. Por ejemplo, External Dependency Manager for Unity (EDM4U abreviado, antes conocido como el agente de resolución de Servicios de Play o Unity Jar Resolver) puede instalarse de cualquiera de las siguientes maneras.

  • Importa External Dependency Manager de .unitypackage.
  • Importa el SDK de Firebase o algún otro SDK que contenga EDM4U en su .unitypackage.
  • Instala External Dependency Manager mediante Unity Package Manager
  • Instala el SDK de Firebase o algún otro SDK que configure EDM4U como su dependencia mediante Unity Package Manager.

Cuando EDM4U se instala a través de .unitypackage y Unity Package Manager al mismo tiempo, se produce un conflicto de instalación, y Unity puede mostrar un error sobre un conflicto de GUID o un conflicto de símbolos. Por el momento, EDM4U no ofrece resolución para tales situaciones. Cuando esto sucede, aquí te mostramos una solución alternativa:

  • Si migraste Firebase y EDM4U a Unity Package Manager antes y, además, importas otro SDK que contiene EDM4U en .unitypackage, como el SDK de Google Ads o el de Facebook, puedes quitar las carpetas Assets/ExternalDependencyManager o Assets/PlayServicesResolver.
  • Si instalaste accidentalmente EDM4U mediante Unity Package Manager antes de quitarlo de Assets, usa los siguientes pasos para resolver el conflicto:
    1. Quita las carpetas Assets/ExternalDependencyManager o Assets/PlayServicesResolver.
    2. Desinstala todos los paquetes de Firebase y EDM4U de Unity Package Manager
    3. Vuelve a instalar todos los paquetes necesarios de Firebase y EDM4U de UPM.

Problemas con Firebase instalado a través de Unity Package Manager en Unity 2018

Cuando se instala Firebase mediante Unity Package Manager en Unity 2018, EDM4U no puede descubrir algunas de las dependencias nativas de iOS y Android para Firebase. Esto se debe a que los archivos en paquetes instalados como dependencia no se registran en AssetDatabase de Unity. El problema más común es no poder crear un FirebaseApp en Android debido a un DllNotFoundException.

Por ejemplo, cuando Realtime Database se instala a través de Unity Package Manager, Auth y Firebase App (Core) se instalan automáticamente como sus dependencias. Sin embargo, EDM4U no puede descubrir AuthDependencies.xml ni AppDependencies.xml, que contienen sus dependencias nativas de iOS y Android, debido a que no están registradas en AssetDatabase en Unity 2018. Por lo tanto, es posible que falten algunas bibliotecas nativas en la compilación de Android o iOS.

La solución alternativa para este problema es asegurarte de que todos los paquetes de Firebase se instalen explícitamente a través de Unity Package Manager. Por ejemplo, si deseas instalar Realtime Database, asegúrate de hacer clic en install para Auth y Firebase App (Core) a través de Unity Package Manager también.

Un error en el archivo dex único mientras se compila la app para Android

Cuando compilas una app para Android, es posible que experimentes una falla de compilación relacionada con un archivo dex único. El mensaje de error es similar al siguiente, si el proyecto está configurado para usar el sistema de compilación de Gradle.

Cannot fit requested classes in a single dex file.

Los archivos Dalvik Executable (.dex) se usan para contener un conjunto de definiciones de clase y sus datos adjuntos asociados de aplicaciones para Android (.apk). Un solo archivo dex se limita a la referencia a 65,536 métodos. La compilación fallará si la cantidad total de métodos de todas las bibliotecas de Android de tu proyecto supera este límite.

Unity agregó la reducción en su versión 2017.2 que usa Proguard (y otras herramientas en algunas versiones de Unity) para quitar el código que no se usa, lo que puede reducir la cantidad total de métodos de referencia en un solo archivo dex. Esta opción se encuentra en Player Settings > Android > Publishing Settings > Minify. Las opciones pueden variar en distintas versiones de Unity, así que consulta la documentación oficial de Unity.

Si la cantidad de métodos a los que se hace referencia aún excede el límite, otra opción es habilitar multidex. Hay muchas formas de lograrlo en Unity:

  • Si Custom Gradle Template en Player Settings está habilitado, modifica mainTemplate.gradle.
  • Si usas Android Studio para compilar el proyecto exportado, modifica el archivo build.gradle de nivel de módulo.

Puedes encontrar más información en la guía del usuario de multidex.

Configura un flujo de trabajo para computadoras de escritorio (versión Beta)

Cuando creas un juego, suele ser más fácil probarlo en el editor de Unity y en plataformas de escritorio antes de implementarlo y probarlo en dispositivos móviles en una etapa posterior del desarrollo. Para admitir este flujo de trabajo, proporcionamos un subconjunto de los SDK de Firebase Unity que se pueden ejecutar en Windows, macOS, Linux y desde el editor de Unity.

  1. Para configurar un proyecto de Unity en plataformas de escritorio, sigue las mismas instrucciones de las plataformas móviles (comienza con el paso Registra tu app en Firebase).

  2. Ejecuta el proyecto de Unity en su IDE, o bien selecciona que deseas compilar tu proyecto de Unity para computadoras de escritorio.

  3. (Opcional) Ejecuta el proyecto de Unity en el modo de edición.

    El SDK de Firebase Unity también se puede ejecutar en el modo de edición de Unity, lo que te permite usarlo en complementos del editor.

    1. Cuando crees un FirebaseApp que usa el editor, no uses la instancia predeterminada.

    2. En su lugar, proporciona un nombre único para la llamada FirebaseApp.Create().

      Esto es importante para evitar conflictos en las opciones entre la instancia que usa el IDE de Unity y la instancia que usa tu proyecto de Unity.

Productos de Firebase admitidos

Consulta la documentación de referencia para obtener más información sobre las bibliotecas de Firebase Unity.

El SDK de Firebase Unity admite los siguientes productos de Firebase en iOS y Android:

Producto de Firebase Paquete de Unity
AdMob Se distribuye por separado en el complemento de AdMob para Unity
Analytics FirebaseAnalytics.unitypackage
Authentication FirebaseAuth.unitypackage
Cloud Firestore (Alfa) FirebaseFirestore.unitypackage
Cloud Functions FirebaseFunctions.unitypackage
Cloud Messaging FirebaseMessaging.unitypackage
(recomendado) FirebaseAnalytics.unitypackage
Cloud Storage FirebaseStorage.unitypackage
Crashlytics FirebaseCrashlytics.unitypackage
(recomendado) FirebaseAnalytics.unitypackage
Dynamic Links FirebaseDynamicLinks.unitypackage
(recomendado) FirebaseAnalytics.unitypackage
Realtime Database FirebaseDatabase.unitypackage
Remote Config FirebaseRemoteConfig.unitypackage
(recomendado) FirebaseAnalytics.unitypackage

Productos de Firebase admitidos (computadoras de escritorio)

El SDK de Firebase Unity incluye compatibilidad con flujos de trabajo de escritorio para un subconjunto de productos, lo que permite usar ciertas partes de Firebase en el editor de Unity y en versiones independientes para computadoras de escritorio en Windows, macOS y Linux.

Producto de Firebase (computadoras de escritorio) Paquete de Unity
Authentication FirebaseAuth.unitypackage
Cloud Functions FirebaseFunctions.unitypackage
Cloud Firestore (Alfa) FirebaseFirestore.unitypackage
Cloud Storage FirebaseStorage.unitypackage
Realtime Database FirebaseDatabase.unitypackage
Remote Config FirebaseRemoteConfig.unitypackage

Las bibliotecas de escritorio restantes son implementaciones auxiliares (no funcionales) que Firebase proporciona a fin de realizar compilaciones para Windows, macOS y Linux. Por lo tanto, no es necesario que compiles código de manera condicional orientado a la versión para computadoras de escritorio.

Próximos pasos