Google 致力于为黑人社区推动种族平等。查看具体举措
此页面由 Cloud Translation API 翻译。
Switch to English

Aggiungi Firebase al tuo progetto Unity

Potenzia i tuoi giochi Unity con i nostri SDK Firebase Unity.

Per mostrare quanto sia facile collegare Firebase al tuo progetto Unity, abbiamo realizzato un gioco di esempio, MechaHamster, che puoi scaricare da GitHub , App Store e Google Play Store .

MechaHamster (GitHub)

MechaHamster (App Store)

MechaHamster (Play Store)


Scopri ulteriori informazioni su come potenziare i tuoi giochi con Firebase nella nostra pagina dei giochi Firebase .

Hai già aggiunto Firebase al tuo progetto Unity? Assicurati di utilizzare la versione più recente di Firebase Unity SDK .

Prerequisiti

  • Installa Unity 5.3 o successivo.

  • (Solo iOS) Installa quanto segue:

    • Xcode 9.4.1 o successivo
    • CocoaPods 1.4.0 o versioni successive
  • Assicurati che il tuo progetto Unity soddisfi questi requisiti:

    • Per iOS : è destinato a iOS 8 o versioni successive
    • Per Android : ha come target il livello API 16 (Jelly Bean) o successivo
  • Configura un dispositivo fisico o usa un emulatore per eseguire la tua app.

    • Per iOS : configura un dispositivo iOS fisico o utilizza il simulatore iOS.

    • Per Android : gli emulatori devono utilizzare un'immagine di emulatore con Google Play.

Se non hai già un progetto Unity e desideri solo provare un prodotto Firebase, puoi scaricare uno dei nostri esempi di avvio rapido .

Passaggio 1 : crea un progetto Firebase

Prima di poter aggiungere Firebase al tuo progetto Unity, devi creare un progetto Firebase per connetterti al tuo progetto Unity. Visita Comprendere i progetti Firebase per ulteriori informazioni sui progetti Firebase.

Passaggio 2 : registra la tua app con Firebase

Puoi registrare una o più app o giochi per connetterti al tuo progetto Firebase.

  1. Vai alla console Firebase .

  2. Al centro della pagina di panoramica del progetto, fare clic sull'icona Unity ( ) per avviare il flusso di lavoro di configurazione.

    Se hai già aggiunto un'app al tuo progetto Firebase, fai clic su Aggiungi app per visualizzare le opzioni della piattaforma.

  3. Seleziona quale build target del tuo progetto Unity desideri registrare, oppure puoi anche selezionare di registrare entrambe le destinazioni ora contemporaneamente.

  4. Immettere gli ID specifici della piattaforma del progetto Unity.

    • Per iOS : inserisci l'ID iOS del tuo progetto Unity nel campo ID bundle iOS .

    • Per Android : inserisci l'ID Android del tuo progetto Unity nel campo del nome del pacchetto Android .
      I termini nome pacchetto e ID applicazione vengono spesso utilizzati in modo intercambiabile.

  5. (Facoltativo) Immettere i nickname specifici della piattaforma del progetto Unity.
    Questi soprannomi sono identificatori interni e utili e sono visibili solo a te nella console Firebase.

  6. Fare clic su Registra app .

Passaggio 3 : aggiungi i file di configurazione di Firebase

  1. Ottieni i file di configurazione Firebase specifici della piattaforma nel flusso di lavoro di configurazione della console Firebase.

    • Per iOS : fai clic su Scarica GoogleService-Info.plist .

    • Per Android : fai clic su Scarica google-services.json .

  2. Apri la finestra Progetto del tuo progetto Unity, quindi sposta i file di configurazione nella cartella Assets .

  3. Nella console di Firebase, nel flusso di lavoro di configurazione, fai clic su Avanti .

Passaggio 4 : aggiungi gli SDK Firebase Unity

Puoi aggiungere prodotti Firebase supportati al tuo progetto Unity utilizzando Unity Package Manager oppure puoi installare manualmente gli SDK.

Unity Package Manager

Se stai utilizzando Unity 2018.4 o versione successiva e .NET 4.xo .NET Standard 2.0, puoi installare i componenti di Firebase SDK utilizzando Unity Package Manager:

  1. Aggiungi il registro dei pacchetti di gioco di Google al tuo progetto Unity.

    • Se non hai mai importato Firebase SDK e EDM4U (formalmente denominato Play Services Resolver), puoi aggiungere manualmente il seguente blocco a Packages/manifest.json .

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

      Tieni presente che alcuni altri SDK, come l'SDK di Facebook, potrebbero contenere EDM4U nel loro .unitypackage . Controlla se esistono cartelle Assets/ExternalDependencyManager o Assets/PlayServicesResolver . Se queste cartelle esistono, rimuoverle prima di installare qualsiasi SDK Firebase tramite Unity Package Manager.

    • Se devi migrare un SDK esistente o preferisci un metodo più interattivo, importa l'ultima versione di External Dependency Manager per Unity (EDM4U) .

      Il Resolver di Unity Package Manager ti chiederà di aggiungere il registro dei pacchetti di gioco di Google al tuo progetto. Seleziona il registro e fai clic sul pulsante Aggiungi registri selezionati .

      • EDM4U aggiunge il registro a Packages/manifest.json nella cartella del progetto Unity corrente.

      • Puoi anche aggiungere manualmente questo registro in un secondo momento utilizzando Risorse > Gestore dipendenze esterno > Risolutore di Unity Package Manager > Aggiungi registri o Finestra > Google > Registro pacchetti di gioco > Aggiungi al progetto opzioni di menu.

  2. Migrare i pacchetti Firebase ed EDM4U in uscita importati tramite .unitypackage a Unity Package Manager. Questo può essere fatto con uno dei seguenti metodi.

    • Dopo che il registro è stato aggiunto da EDM4U, dovrebbe apparire una finestra di dialogo intitolata "Migrazione dei pacchetti". Questa finestra di dialogo elenca tutti i pacchetti disponibili per essere installati tramite Unity Package Manager. Ti consigliamo di selezionarli tutti e fare clic sul pulsante Applica .

    • È inoltre possibile visualizzare manualmente questa finestra di dialogo in un secondo momento utilizzando Assets > External Dependency Manager > Unity Package Manager Resolver > Opzioni di menu Migrate Packages .

    • Puoi anche migrare manualmente tutti i pacchetti importati tramite .unitypackage con i seguenti passaggi.

      1. Rimuovi sia Firebase Unity SDK che EDM4U dalla cartella delle Assets . EDM4U fornisce uno strumento per disinstallare i pacchetti gestiti accessibile utilizzando l'opzione di menu Risorse > Gestore dipendenze esterno > Gestore versione > Disinstalla pacchetti gestiti . Seleziona tutti gli SDK Firebase e External Dependency Manager e fai clic su Disinstalla pacchetti selezionati .

        • In alternativa, puoi anche rimuovere manualmente l'SDK dalla cartella Assets .
      2. Installa i componenti di Firebase Unity SDK utilizzando Unity Package Manager selezionando Finestra > Package Manager e cercando Firebase . I componenti di Firebase Unity SDK possono essere installati, scambiati e rimossi tramite questa interfaccia.

  3. Ora puoi esplorare e installare qualsiasi componente dell'SDK Firebase Unity o pacchetti Google utilizzando Unity Package Manager selezionando Finestra > Package Manager . Tutti questi componenti possono essere installati, modificati e rimossi tramite questa interfaccia.

Installazione manuale

  1. Nella console Firebase, fai clic su Scarica Firebase Unity SDK , quindi decomprimi l'SDK in un punto conveniente.

    • Puoi scaricare nuovamente l' SDK di Firebase Unity in qualsiasi momento.

    • Firebase Unity SDK non è specifico della piattaforma.

  2. Nel tuo progetto Unity aperto, vai su Assets > Importa pacchetto > Pacchetto personalizzato .

  3. Dall'SDK decompresso, seleziona i prodotti Firebase supportati che desideri utilizzare nella tua app.

    Analytics abilitato

    • Aggiungi il pacchetto Firebase per Google Analytics: FirebaseAnalytics.unitypackage
    • Aggiungi i pacchetti per qualsiasi altro prodotto Firebase che desideri utilizzare nella tua app. Ad esempio, per utilizzare Firebase Authentication e Firebase Realtime Database:
      FirebaseAuth.unitypackage e FirebaseDatabase.unitypackage

    Analytics non abilitato

    Aggiungi i pacchetti per i prodotti Firebase che desideri utilizzare nella tua app. Ad esempio, per utilizzare Firebase Authentication e Firebase Realtime Database:
    FirebaseAuth.unitypackage e FirebaseDatabase.unitypackage

  4. Nella finestra Importa pacchetto Unity , fare clic su Importa .

  5. Nella console di Firebase, nel flusso di lavoro di configurazione, fai clic su Avanti .

Passaggio 5 : conferma i requisiti della versione dei servizi di Google Play

L'SDK Firebase Unity per Android richiede i servizi di Google Play , che devono essere aggiornati prima di poter utilizzare l'SDK.

Aggiungi il seguente codice all'inizio della tua applicazione. Puoi verificare e facoltativamente aggiornare i servizi di Google Play alla versione richiesta dall'SDK di Firebase Unity prima di chiamare qualsiasi altro metodo nell'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.
  }
});

È tutto pronto! Il tuo progetto Unity è registrato e configurato per utilizzare Firebase.

Problemi noti

Compatibilità .NET quando si utilizza Unity 2017.x e versioni successive

Firebase supporta .NET 4.x come opzione di build sperimentale in Unity 2017 e versioni successive. I plugin Firebase utilizzano componenti di Parse SDK per fornire alcune classi .NET 4.x nelle versioni precedenti di .NET.

Pertanto, Firebase Unity SDK versione 5.4.0 e successive fornisce plug-in compatibili con .NET 3.x o .NET 4.x nelle dotnet3 e dotnet4 di Firebase Unity SDK.

Se importi un plug-in Firebase che non è compatibile con la versione .NET abilitata nel tuo progetto, vedrai errori di compilazione da alcuni tipi nel framework .NET implementati da Parse SDK.

Per risolvere l'errore di compilazione, se utilizzi .NET 3.x:

  1. Rimuovere o disabilitare le seguenti DLL per tutte le piattaforme:
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll
  2. Abilita le seguenti DLL per tutte le piattaforme:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll

Per risolvere l'errore di compilazione, se utilizzi .NET 4.x:

  1. Rimuovere o disabilitare le seguenti DLL per tutte le piattaforme:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll
  2. Abilita le seguenti DLL per tutte le piattaforme:
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll

Se importi un altro plug-in Firebase:

  • Nel tuo progetto Unity, vai su Assets > Play Services Resolver > Version Handler > Update per abilitare le DLL corrette per il tuo progetto.

Compilazione di Unity 2017.1 IL2CPP nei progetti .NET 4.x.

Firebase supporta .NET 4.x come opzione di build sperimentale in Unity 2017 e versioni successive. I plugin Firebase utilizzano componenti di Parse SDK per fornire alcune classi .NET 4.x nelle versioni precedenti di .NET.

Pertanto, Firebase Unity SDK versione 5.4.0 e successive fornisce DLL di inoltro dei tipi che inoltrano i tipi Parse (ad esempio, l'implementazione Parse di System.Threading.Tasks.Task ) al framework .NET. Sfortunatamente, IL2CPP (un transpiler che converte C # in C ++) fornito in Unity 2017.1.x non elabora correttamente le DLL di inoltro del tipo, il che si traduce in errori di compilazione simili ai seguenti:

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

Al momento non è disponibile alcuna soluzione alternativa per gli errori di compilazione IL2CPP di .NET 4.x in Unity 2017.1, quindi è necessario eseguire l'aggiornamento a Unity 2017.2 o versioni successive per utilizzare .NET 4.x nei progetti compilati con IL2CPP.

Rete di Unity 2017.2

Firebase Realtime Database crea connessioni di rete TLS utilizzando lo stack di rete .NET. La funzionalità TLS è interrotta in Unity 2017.2 quando si utilizza .NET 4.6, causando il mancato funzionamento del plug-in Realtime Database negli editor e sul desktop.

Non esiste una soluzione alternativa per questo problema, quindi è necessario utilizzare una versione diversa di Unity, ad esempio la versione 2017.1 o 2017.3.

File di configurazione Android Firebase mancante in Unity 2020.

Per supportare le versioni di Unity che non hanno la possibilità di personalizzare la build Gradle, lo strumento dell'editor Firebase genera Assets/Plugins/Android/Firebase/res/values/google-services.xml come risorsa Android da impacchettare in un Build Android, in modo che l'SDK Firebase possa utilizzarlo per inizializzare l'istanza FirebaseApp predefinita.

In Unity 2020, tutte le risorse Android devono trovarsi in directory con suffisso .androidlib . Se il tuo progetto utilizza un SDK Firebase che genera una directory Assets/Plugins/Android/Firebase , rinominalo in Assets/Plugins/Android/Firebase.androidlib . Assicurati che contenga AndroidManifest.xml , project.properties e res/values/google-services.xml .

Conflitto di installazione durante l'utilizzo di Unity Package Manager

Un pacchetto può essere installato da diverse fonti. Ad esempio, External Dependency Manager per Unity ( EDM4U in breve, precedentemente chiamato Play Services Resolver o Unity Jar Resolver) può essere installato in uno dei seguenti modi.

  • Importazione del .unitypackage External Dependency Manager.
  • Importazione dell'SDK Firebase o di un altro SDK che contiene EDM4U nel proprio .unitypackage .
  • Installazione di External Dependency Manager tramite Unity Package Manager
  • Installazione di Firebase SDK o altro SDK che imposta EDM4U come dipendenza tramite Unity Package Manager .

Quando EDM4U viene installato tramite .unitypackage e tramite Unity Package Manager contemporaneamente, si verifica un conflitto di installazione e Unity potrebbe visualizzare un errore relativo a un conflitto GUID o un conflitto di simboli. EDM4U attualmente non offre soluzioni per tali situazioni. Quando ciò accade, ecco una soluzione alternativa:

  • Se hai già migrato Firebase e EDM4U a Unity Package Manager e importi un altro SDK contenente EDM4U in .unitypackage , ad esempio, Google Ads o Facebook SDK, puoi semplicemente rimuovere le cartelle Assets/ExternalDependencyManager e / o Assets/PlayServicesResolver .
  • Se hai installato accidentalmente EDM4U tramite Unity Package Manager prima di rimuoverlo prima dalla cartella Assets , segui i passaggi seguenti per risolvere il conflitto:
    1. Rimuovere le cartelle Assets/ExternalDependencyManager e / o Assets/PlayServicesResolver .
    2. Disinstalla tutti i pacchetti Firebase ed EDM4U da Unity Package Manager
    3. Reinstallare tutti i pacchetti Firebase ed EDM4U necessari da UPM.

Problemi con Firebase installato tramite Unity Package Manager in Unity 2018

Quando Firebase viene installato tramite Unity Package Manager in Unity 2018, EDM4U potrebbe non essere in grado di rilevare alcune dipendenze native di Firebase per Android e iOS. Questo perché i file nei pacchetti installati come dipendenza non sono registrati in AssetDatabase di Unity. Il problema più comune è non riuscire a creare DllNotFoundException FirebaseApp in Android a causa di DllNotFoundException .

Ad esempio, quando Realtime Database viene installato tramite Unity Package Manager , sia Auth che Firebase App (Core) vengono installati automaticamente come dipendenze. Tuttavia, EDM4U non è in grado di rilevare AuthDependencies.xml e AppDependencies.xml , che contengono le loro dipendenze native Android e iOS, perché non sono registrate in AssetDatabase in Unity 2018. Di conseguenza, alcune librerie native potrebbero mancare in Android o build iOS.

La soluzione alternativa per questo problema è assicurarsi che tutti i pacchetti Firebase siano installati esplicitamente tramite Unity Package Manager . Ad esempio, se desideri installare Realtime Database , assicurati di fare clic su install per Auth e Firebase App (Core) tramite Unity Package Manager .

Un problema con il singolo dex durante la creazione dell'app Android

Durante la creazione di un'app Android, potresti riscontrare un errore di compilazione relativo alla presenza di un singolo file dex. Il messaggio di errore è simile al seguente, se il progetto è configurato per utilizzare il sistema di compilazione Gradle.

Cannot fit requested classes in a single dex file.

I .dex eseguibili Dalvik ( .dex ) vengono utilizzati per contenere una serie di definizioni di classi e i dati aggiunti associati per le applicazioni Android ( .apk ). Un singolo file dex è limitato al riferimento a 65.536 metodi. La compilazione fallirà se il numero totale di metodi da tutte le librerie Android nel progetto supera questo limite.

Unity ha introdotto Minification nel 2017.2, che utilizza Proguard (o altri strumenti in alcune versioni di Unity) per eliminare il codice inutilizzato, che può ridurre il numero totale di metodi di riferimento in un singolo file dex. L'opzione può essere trovata in Impostazioni lettore> Android> Impostazioni pubblicazione> Minimizza . Le opzioni possono differire a seconda della versione di Unity, quindi fare riferimento alla documentazione ufficiale di Unity.

Se il numero di metodi a cui si fa riferimento supera ancora il limite, un'altra opzione è abilitare il multidex . Esistono diversi modi per ottenere ciò in Unity:

  • Se il Custom Gradle Template in Player Settings è abilitato, modifica mainTemplate.gradle .
  • Se utilizzi Android Studio per creare il progetto esportato, modifica il file build.gradle livello di build.gradle .

Maggiori dettagli possono essere trovati nella guida utente multidex .

Configurare un flusso di lavoro desktop ( beta )

Quando crei un gioco, è spesso molto più facile testarlo prima nell'editor Unity e sulle piattaforme desktop, quindi distribuirlo e testarlo sui dispositivi mobili più avanti nello sviluppo. Per supportare questo flusso di lavoro, forniamo un sottoinsieme degli SDK Firebase Unity che possono essere eseguiti su Windows, macOS, Linux e dall'editor di Unity.

  1. Configura un progetto Unity per piattaforma desktop seguendo le stesse istruzioni di una piattaforma mobile (inizia con il passaggio Registra la tua app con Firebase sopra.

  2. Esegui il tuo progetto Unity nell'IDE Unity o seleziona per creare il tuo progetto Unity per desktop .

  3. (Facoltativo) Esegui il tuo progetto Unity in modalità di modifica.

    Firebase Unity SDK può essere eseguito anche nella modalità di modifica di Unity, consentendone l'uso nei plug-in dell'editor.

    1. Quando crei FirebaseApp utilizzata dall'editor, non utilizzare l'istanza predefinita.

    2. Fornisci invece un nome univoco alla chiamata FirebaseApp.Create() .

      Questo è importante per evitare un conflitto nelle opzioni tra l'istanza utilizzata dall'IDE di Unity e l'istanza utilizzata dal progetto Unity.

Prodotti Firebase supportati

Ulteriori informazioni sulle librerie Unity Firebase nella documentazione di riferimento .

Firebase Unity SDK supporta i seguenti prodotti Firebase su iOS e Android :

Prodotto Firebase Pacchetto Unity
AdMob Distribuito separatamente nel plug-in Unity di AdMob
Analytics FirebaseAnalytics.unitypackage
Autenticazione FirebaseAuth.unitypackage
Cloud Firestore (alpha) FirebaseFirestore.unitypackage
Cloud Functions FirebaseFunctions.unitypackage
Messaggistica cloud FirebaseMessaging.unitypackage
(consigliato) FirebaseAnalytics.unitypackage
Cloud Storage FirebaseStorage.unitypackage
Crashlytics FirebaseCrashlytics.unitypackage
(consigliato) FirebaseAnalytics.unitypackage
Collegamenti dinamici FirebaseDynamicLinks.unitypackage
(consigliato) FirebaseAnalytics.unitypackage
Database in tempo reale FirebaseDatabase.unitypackage
Configurazione remota FirebaseRemoteConfig.unitypackage
(consigliato) FirebaseAnalytics.unitypackage

Prodotti Firebase supportati (desktop)

Firebase Unity SDK include il supporto del flusso di lavoro desktop per un sottoinsieme di prodotti, consentendo l'utilizzo di alcune parti di Firebase nell'editor Unity e nelle build desktop autonome su Windows, macOS e Linux.

Prodotto Firebase (desktop) Pacchetto Unity
Autenticazione FirebaseAuth.unitypackage
Cloud Functions FirebaseFunctions.unitypackage
Cloud Firestore (alpha) FirebaseFirestore.unitypackage
Cloud Storage FirebaseStorage.unitypackage
Database in tempo reale FirebaseDatabase.unitypackage
Configurazione remota FirebaseRemoteConfig.unitypackage

Firebase fornisce le rimanenti librerie desktop come implementazioni stub (non funzionali) per comodità durante la creazione per Windows, macOS e Linux. Pertanto, non è necessario compilare in modo condizionale il codice per indirizzare il desktop.

Prossimi passi