Google is committed to advancing racial equity for Black communities. See how.
Ta strona została przetłumaczona przez Cloud Translation API.
Switch to English

Dodaj Firebase do swojego projektu Unity

Zwiększ możliwości swoich gier Unity dzięki naszym pakietom Firebase Unity SDK.

Aby pokazać, jak łatwo jest podłączyć Firebase do projektu Unity, stworzyliśmy próbną grę MechaHamster, którą można pobrać z GitHub , App Store i Google Play Store .

MechaHamster (GitHub)

MechaHamster (App Store)

MechaHamster (Sklep Play)


Więcej informacji o uruchamianiu gier za pomocą Firebase znajdziesz na naszej stronie gier Firebase .

Masz już Firebase do swojego projektu Unity? Upewnij się, że używasz najnowszej wersji pakietu Firebase Unity SDK .

Wymagania wstępne

  • Zainstaluj Unity 5.3 lub nowszy.

  • (tylko iOS) Zainstaluj następujące elementy:

    • Xcode 9.4.1 lub nowszy
    • CocoaPods 1.4.0 lub nowsza
  • Upewnij się, że projekt Unity spełnia następujące wymagania:

    • W przypadku systemu iOS - jest przeznaczony dla systemu iOS 8 lub nowszego
    • W przypadku systemu Android - jest przeznaczony dla interfejsu API na poziomie 16 (Jelly Bean) lub nowszym
  • Skonfiguruj urządzenie fizyczne lub użyj emulatora, aby uruchomić aplikację.

    • W przypadku systemu iOS - skonfiguruj fizyczne urządzenie iOS lub użyj symulatora iOS.

    • W przypadku systemu Android - emulatory muszą używać obrazu emulatora w Google Play.

Jeśli nie masz jeszcze projektu Unity i chcesz po prostu wypróbować produkt Firebase, możesz pobrać jeden z naszych przykładów szybkiego startu .

Krok 1 : utwórz projekt Firebase

Zanim dodasz Firebase do swojego projektu Unity, musisz utworzyć projekt Firebase, aby połączyć się z projektem Unity. Odwiedź artykuł Omówienie projektów Firebase, aby dowiedzieć się więcej o projektach Firebase.

Krok 2 : zarejestruj swoją aplikację w Firebase

Możesz zarejestrować jedną lub więcej aplikacji lub gier, aby połączyć się z projektem Firebase.

  1. Przejdź do konsoli Firebase .

  2. Na środku strony przeglądu projektu kliknij ikonę Unity ( ), aby uruchomić przepływ pracy konfiguracji.

    Jeśli dodałeś już aplikację do projektu Firebase, kliknij Dodaj aplikację, aby wyświetlić opcje platformy.

  3. Wybierz cel kompilacji swojego projektu Unity, który chcesz zarejestrować, lub możesz nawet wybrać, aby zarejestrować oba cele teraz w tym samym czasie.

  4. Wprowadź identyfikatory specyficzne dla platformy projektu Unity.

    • IOS - wprowadź identyfikator iOS swojego projektu Unity w polu ID pakietu iOS .

    • W przypadku systemu Android - wprowadź identyfikator Androida swojego projektu Unity w polu nazwy pakietu systemu Android .
      Terminy nazwa pakietu i identyfikator aplikacji są często używane zamiennie.

  5. (Opcjonalnie) Wpisz pseudonimy projektu Unity specyficzne dla platformy.
    Te pseudonimy są wygodnymi identyfikatorami wewnętrznymi i są widoczne tylko dla Ciebie w konsoli Firebase.

  6. Kliknij Zarejestruj aplikację .

Krok 3 : Dodaj pliki konfiguracyjne Firebase

  1. Uzyskaj pliki konfiguracyjne Firebase specyficzne dla platformy w przepływie pracy konfiguracji konsoli Firebase.

    • IOS - kliknij Pobierz GoogleService-Info.plist .

    • W przypadku systemu Android - kliknij Pobierz google-services.json .

  2. Otwórz okno projektu swojego projektu Unity, a następnie przenieś pliki konfiguracyjne do folderu Assets .

  3. Wróć do konsoli Firebase, w przepływie pracy konfiguracji kliknij Dalej .

Krok 4 : Dodaj pakiety SDK Firebase Unity

Możesz dodać obsługiwane produkty Firebase do projektu Unity za pomocą Menedżera pakietów Unity lub ręcznie zainstalować zestawy SDK.

Menedżer pakietów Unity

Jeśli używasz Unity 2018.4 lub nowszego oraz .NET 4.x lub .NET Standard 2.0, możesz zainstalować składniki Firebase SDK za pomocą Unity Package Manager:

  1. Dodaj Rejestr pakietów gier od Google do swojego projektu Unity.

    • Jeśli nigdy wcześniej nie importowałeś Firebase SDK i EDM4U (formalnie nazwanego Play Services Resolver), możesz ręcznie dodać następujący blok do Packages/manifest.json .

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

      Należy pamiętać, że niektóre inne zestawy SDK, takie jak Facebook SDK, mogą zawierać EDM4U w swoim .unitypackage . Sprawdź, czy istnieją foldery Assets/ExternalDependencyManager lub Assets/PlayServicesResolver . Jeśli te foldery istnieją, usuń je przed zainstalowaniem dowolnego zestawu Firebase SDK za pośrednictwem Unity Package Manager.

    • Jeśli chcesz przeprowadzić migrację istniejącego zestawu SDK lub wolisz bardziej interaktywną metodę, zaimportuj najnowszą wersję External Dependency Manager for Unity (EDM4U) .

      Narzędzie do rozpoznawania pakietów Unity Package Manager poprosi Cię o dodanie rejestru Game Package Registry od Google do Twojego projektu. Wybierz rejestr i kliknij przycisk Dodaj wybrane rejestry .

      • EDM4U dodaje rejestr do Packages/manifest.json w bieżącym folderze projektu Unity.

      • Możesz także ręcznie dodać ten rejestr później, korzystając z opcji menu Zasoby > Zewnętrzny menedżer zależności > Narzędzie do rozwiązywania problemów z menedżerem pakietów Unity > Dodaj rejestry lub Okno > Google > Rejestr pakietów gier > Dodaj do projektu .

  2. Przenieś wychodzące pakiety Firebase i EDM4U zaimportowane przez .unitypackage do Unity Package Manager. Można to zrobić jedną z następujących metod.

    • Po dodaniu rejestru przez EDM4U powinno pojawić się okno dialogowe zatytułowane „Migracja pakietów”. To okno dialogowe zawiera listę wszystkich pakietów dostępnych do zainstalowania za pośrednictwem Menedżera pakietów Unity. Zalecamy wybranie ich wszystkich i kliknięcie przycisku Zastosuj .

    • Możesz również ręcznie przywołać to okno dialogowe później, używając opcji menu Zasoby > Zewnętrzny menedżer zależności > Unity Package Manager Resolver > Migracja pakietów .

    • Możesz również ręcznie zmigrować wszystkie pakiety zaimportowane przez .unitypackage wykonując następujące czynności.

      1. Usuń zarówno Firebase Unity SDK, jak i EDM4U z folderu Assets . EDM4U zapewnia narzędzie do deinstalacji pakietów zarządzanych, które jest dostępne za pomocą opcji menu Zasoby > Zewnętrzny menedżer zależności > Obsługa wersji > Odinstaluj pakiety zarządzane . Wybierz wszystkie pakiety SDK Firebase oraz External Dependency Manager i kliknij Odinstaluj wybrane pakiety .

        • Alternatywnie możesz również ręcznie usunąć SDK z folderu Zasoby .
      2. Zainstaluj składniki Firebase Unity SDK za pomocą Unity Package Manager, wybierając Okno > Menedżer pakietów i wyszukując Firebase . Komponenty Firebase Unity SDK można instalować, sprawdzać i usuwać za pomocą tego interfejsu.

  3. Teraz możesz przeglądać i instalować dowolne składniki Firebase Unity SDK lub pakiety Google za pomocą Menedżera pakietów Unity, wybierając Okno > Menedżer pakietów . Wszystkie te komponenty można instalować, usuwać i usuwać za pomocą tego interfejsu.

Instalacja ręczna

  1. W konsoli Firebase kliknij Pobierz Firebase Unity SDK , a następnie rozpakuj pakiet SDK w dogodnym miejscu.

    • W dowolnym momencie możesz ponownie pobrać pakiet Firebase Unity SDK .

    • Pakiet Firebase Unity SDK nie jest specyficzny dla platformy.

  2. W otwartym projekcie Unity przejdź do opcji Zasoby > Importuj pakiet > Pakiet niestandardowy .

  3. Z rozpakowanego pakietu SDK wybierz obsługiwane produkty Firebase , których chcesz użyć w swojej aplikacji.

    Analytics włączone

    • Dodaj pakiet Firebase dla Google Analytics: FirebaseAnalytics.unitypackage
    • Dodaj pakiety dla innych produktów Firebase, których chcesz użyć w swojej aplikacji. Na przykład, aby użyć uwierzytelniania Firebase i bazy danych czasu rzeczywistego Firebase:
      FirebaseAuth.unitypackage i FirebaseDatabase.unitypackage

    Analytics nie jest włączony

    Dodaj pakiety produktów Firebase, których chcesz użyć w swojej aplikacji. Na przykład, aby użyć uwierzytelniania Firebase i Bazy danych czasu rzeczywistego Firebase:
    FirebaseAuth.unitypackage i FirebaseDatabase.unitypackage

  4. W oknie Importuj pakiet Unity kliknij Importuj .

  5. Wróć do konsoli Firebase, w przepływie pracy konfiguracji kliknij Dalej .

Krok 5 : Potwierdź wymagania dotyczące wersji usług Google Play

Pakiet Firebase Unity SDK na Androida wymaga usług Google Play , które muszą być aktualne, aby można było użyć pakietu SDK.

Dodaj następujący kod na początku aplikacji. Możesz sprawdzić i opcjonalnie zaktualizować Usługi Google Play do wersji wymaganej przez pakiet Firebase Unity SDK przed wywołaniem jakichkolwiek innych metod z pakietu 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.
  }
});

Wszystko gotowe! Twój projekt Unity jest zarejestrowany i skonfigurowany do korzystania z Firebase.

Znane problemy

Zgodność z .NET podczas korzystania z Unity 2017.x i nowszych

Firebase obsługuje .NET 4.x jako opcję kompilacji eksperymentalnej w Unity 2017 i nowszych. Wtyczki Firebase wykorzystują składniki Parse SDK, aby zapewnić niektóre klasy .NET 4.x we wcześniejszych wersjach .NET.

Dlatego pakiet Firebase Unity SDK w wersji 5.4.0 i nowszych zapewnia wtyczki zgodne z platformą .NET 3.x lub .NET 4.x w dotnet3 i dotnet4 dotnet3 dotnet4 Unity SDK.

Jeśli zaimportujesz wtyczkę Firebase, która jest niezgodna z wersją .NET włączoną w Twoim projekcie, zobaczysz błędy kompilacji z niektórych typów platformy .NET, które są implementowane przez Parse SDK.

Aby rozwiązać błąd kompilacji, jeśli używasz .NET 3.x:

  1. Usuń lub wyłącz następujące biblioteki DLL dla wszystkich platform:
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll
  2. Włącz następujące biblioteki DLL dla wszystkich platform:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll

Aby rozwiązać błąd kompilacji, jeśli używasz .NET 4.x:

  1. Usuń lub wyłącz następujące biblioteki DLL dla wszystkich platform:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll
  2. Włącz następujące biblioteki DLL dla wszystkich platform:
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll

Jeśli importujesz inną wtyczkę Firebase:

  • W projekcie Unity przejdź do pozycji Zasoby > Rozpoznawanie usług Play > Obsługa wersji > Aktualizuj, aby włączyć poprawne biblioteki DLL dla projektu.

Kompilacja IL2CPP w Unity 2017.1 w projektach .NET 4.x.

Firebase obsługuje .NET 4.x jako opcję kompilacji eksperymentalnej w Unity 2017 i nowszych. Wtyczki Firebase wykorzystują składniki Parse SDK, aby zapewnić niektóre klasy .NET 4.x we wcześniejszych wersjach .NET.

W związku z tym zestaw Firebase Unity SDK w wersji 5.4.0 i nowszych udostępnia biblioteki DLL przekazujące typy, które przekazują typy analizy (na przykład implementację analizy System.Threading.Tasks.Task ) do platformy .NET. Niestety IL2CPP (transpiler, który konwertuje C # na C ++), który jest dostarczany w Unity 2017.1.x nie obsługuje poprawnie bibliotek DLL przekazywania typu, co powoduje błędy kompilacji podobne do następujących:

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

Obecnie nie jest dostępne obejście błędów kompilacji .NET 4.x IL2CPP w Unity 2017.1, więc aby korzystać z .NET 4.x w projektach skompilowanych za pomocą IL2CPP, należy uaktualnić do wersji Unity 2017.2 lub nowszej.

Sieć w Unity 2017.2

Baza danych czasu rzeczywistego Firebase tworzy połączenia sieciowe TLS przy użyciu stosu sieciowego .NET. Funkcjonalność TLS jest zepsuta w Unity 2017.2 podczas korzystania z .NET 4.6, powodując awarię wtyczki Realtime Database w edytorach i na komputerach stacjonarnych.

Nie ma obejścia tego problemu, więc musisz użyć innej wersji Unity, na przykład wersji 2017.1 lub 2017.3.

Brak pliku konfiguracyjnego Firebase na Androida w Unity 2020.

W celu obsługi wersji Unity, które nie mają możliwości dostosowywania kompilacji Gradle, narzędzie edytora Firebase generuje Assets/Plugins/Android/Firebase/res/values/google-services.xml jako zasób Androida do spakowania w Android build, tak aby Firebase SDK mógł go użyć do zainicjowania domyślnej instancji FirebaseApp.

W Unity 2020 wszystkie zasoby Androida muszą znajdować się w katalogach z przyrostkiem .androidlib . Jeśli Twój projekt korzysta z pakietu SDK Firebase, który generuje katalog Assets/Plugins/Android/Firebase , zmień jego nazwę na Assets/Plugins/Android/Firebase.androidlib . Upewnij się, że zawiera on AndroidManifest.xml , project.properties i res/values/google-services.xml .

Konflikt instalacji podczas korzystania z Unity Package Manager

Pakiet można zainstalować z różnych źródeł. Na przykład External Dependency Manager for Unity (w skrócie EDM4U , wcześniej nazywany Play Services Resolver lub Unity Jar Resolver) można zainstalować w dowolny z następujących sposobów.

  • Importowanie .unitypackage zewnętrznego menedżera zależności.
  • Importowanie Firebase SDK lub innego SDK, który zawiera EDM4U w swoim .unitypackage .
  • Instalowanie External Dependency Manager za pomocą Unity Package Manager
  • Instalowanie pakietu SDK Firebase lub innego pakietu SDK, który ustawia EDM4U jako jego zależność za pośrednictwem Unity Package Manager .

Gdy EDM4U jest instalowany jednocześnie przez .unitypackage i przez Unity Package Manager , występuje konflikt instalacji i Unity może wyświetlić błąd dotyczący konfliktu GUID lub konfliktu symboli. EDM4U obecnie nie oferuje rozwiązania w takich sytuacjach. W takim przypadku można obejść ten problem:

  • Jeśli wcześniej przeprowadziłeś migrację Firebase i EDM4U do Unity Package Manager i importujesz inny pakiet SDK zawierający EDM4U w .unitypackage , na przykład Google Ads lub Facebook SDK, możesz po prostu usunąć foldery Assets/ExternalDependencyManager i / lub Assets/PlayServicesResolver .
  • Jeśli przypadkowo zainstalowałeś EDM4U za pośrednictwem Unity Package Manager przed usunięciem go z folderu Assets , wykonaj następujące kroki, aby rozwiązać konflikt:
    1. Usuń foldery Assets/ExternalDependencyManager i / lub Assets/PlayServicesResolver .
    2. Odinstaluj wszystkie pakiety Firebase i EDM4U z Unity Package Manager
    3. Zainstaluj ponownie wszystkie potrzebne pakiety Firebase i EDM4U z UPM.

Problemy z Firebase zainstalowanym za pośrednictwem Unity Package Manager w Unity 2018

Gdy Firebase jest instalowany za pomocą Unity Package Manager w Unity 2018, EDM4U może nie być w stanie wykryć niektórych natywnych zależności Firebase na Androida i iOS. Dzieje się tak, ponieważ pliki w pakietach zainstalowanych jako zależność nie są rejestrowane w bazie danych AssetDatabase firmy Unity. Najczęstszym problemem jest niemożność stworzenia FirebaseApp w Androidzie powodu DllNotFoundException .

Na przykład, gdy Realtime Database jest instalowana przez Unity Package Manager , zarówno Auth , jak i Firebase App (Core) są automatycznie instalowane jako jej zależności. Jednak EDM4U nie jest w stanie wykryć AuthDependencies.xml i AppDependencies.xml , które zawierają ich natywne zależności dla Androida i iOS, ponieważ nie są one zarejestrowane w AssetDatabase w Unity 2018. W rezultacie może brakować niektórych bibliotek natywnych w systemie Android lub Kompilacja na iOS.

Obejściem tego problemu jest upewnienie się, że wszystkie pakiety Firebase są jawnie instalowane za pośrednictwem Menedżera pakietów Unity . Na przykład, jeśli chcesz zainstalować Realtime Database , kliknij opcję install dla Firebase App (Core) Auth i Firebase App (Core) w Menedżerze pakietów Unity .

Problem z pojedynczym dexem podczas tworzenia aplikacji na Androida

Podczas tworzenia aplikacji na Androida możesz napotkać błąd kompilacji związany z posiadaniem jednego pliku dex. Komunikat o błędzie wygląda podobnie do następującego, jeśli projekt jest skonfigurowany do korzystania z systemu kompilacji Gradle.

Cannot fit requested classes in a single dex file.

Pliki wykonywalne Dalvik ( .dex ) są używane do przechowywania zestawu definicji klas i powiązanych z nimi danych pomocniczych dla aplikacji na Androida ( .apk ). Pojedynczy plik dex jest ograniczony do 65 536 metod. Kompilacja zakończy się niepowodzeniem, jeśli łączna liczba metod ze wszystkich bibliotek systemu Android w projekcie przekroczy ten limit.

Firma Unity wprowadziła Minifikację w 2017.2, która używa Proguard (lub innych narzędzi w niektórych wersjach Unity) do usuwania nieużywanego kodu, co może zmniejszyć całkowitą liczbę odwoływanych metod w pojedynczym pliku dex. Opcję można znaleźć w Ustawieniach odtwarzacza> Android> Ustawienia publikowania> Minify . Opcje mogą się różnić w różnych wersjach Unity, więc zapoznaj się z oficjalną dokumentacją Unity.

Jeśli liczba metod, do których istnieją odwołania, nadal przekracza limit, inną opcją jest włączenie multidex . W Unity można to osiągnąć na wiele sposobów:

  • Jeśli Custom Gradle Template w Player Settings jest włączony, zmodyfikuj mainTemplate.gradle .
  • Jeśli używasz Android Studio do kompilowania wyeksportowanego projektu, zmodyfikuj plik build.gradle poziomie modułu.

Więcej szczegółów można znaleźć w przewodniku użytkownika multidex .

Skonfiguruj przepływ pracy na komputerze ( beta )

Podczas tworzenia gry często znacznie łatwiej jest najpierw przetestować grę w edytorze Unity i na platformach stacjonarnych, a następnie wdrożyć i przetestować na urządzeniach mobilnych w fazie rozwoju. Aby zapewnić obsługę tego przepływu pracy, udostępniamy podzbiór zestawów SDK Firebase Unity, które można uruchamiać w systemach Windows, macOS i Linux oraz w edytorze Unity.

  1. Skonfiguruj projekt Unity na platformę komputerową, postępując zgodnie z tymi samymi instrukcjami, co w przypadku platformy mobilnej (zacznij od powyższego kroku Zarejestruj swoją aplikację w Firebase .

  2. Uruchom projekt Unity w środowisku IDE Unity lub wybierz opcję skompilowania projektu Unity na komputery stacjonarne .

  3. (Opcjonalnie) Uruchom projekt Unity w trybie edycji.

    Pakiet Firebase Unity SDK można również uruchomić w trybie edycji Unity, co pozwala na użycie go we wtyczkach edytora.

    1. Podczas tworzenia aplikacji FirebaseApp używanej przez edytora nie używaj instancji domyślnej.

    2. Zamiast tego podaj unikalną nazwę dla wywołania FirebaseApp.Create() .

      Jest to ważne, aby uniknąć konfliktu opcji między wystąpieniem używanym przez środowisko IDE Unity a wystąpieniem używanym przez projekt Unity.

Obsługiwane produkty Firebase

Dowiedz się więcej o bibliotekach Unity Firebase w dokumentacji referencyjnej .

Pakiet Firebase Unity SDK obsługuje następujące produkty Firebase na iOS i Androida :

Produkt Firebase Pakiet jedności
AdMob Rozpowszechniane oddzielnie we wtyczce AdMob Unity
Analityka FirebaseAnalytics.unitypackage
Poświadczenie FirebaseAuth.unitypackage
Cloud Firestore (alfa) FirebaseFirestore.unitypackage
Funkcje chmury FirebaseFunctions.unitypackage
Komunikacja w chmurze FirebaseMessaging.unitypackage
(zalecane) FirebaseAnalytics.unitypackage
Magazyn w chmurze FirebaseStorage.unitypackage
Crashlytics FirebaseCrashlytics.unitypackage
(zalecane) FirebaseAnalytics.unitypackage
Dynamiczne linki FirebaseDynamicLinks.unitypackage
(zalecane) FirebaseAnalytics.unitypackage
Baza danych czasu rzeczywistego FirebaseDatabase.unitypackage
Zdalna konfiguracja FirebaseRemoteConfig.unitypackage
(zalecane) FirebaseAnalytics.unitypackage

Obsługiwane produkty Firebase (komputery stacjonarne)

Pakiet Firebase Unity SDK obejmuje obsługę przepływu pracy na komputerach w ramach podzbioru produktów, umożliwiając korzystanie z niektórych części Firebase w edytorze Unity oraz w samodzielnych kompilacjach na komputery stacjonarne w systemach Windows, macOS i Linux.

Produkt Firebase (komputer) Pakiet jedności
Poświadczenie FirebaseAuth.unitypackage
Funkcje chmury FirebaseFunctions.unitypackage
Cloud Firestore (alfa) FirebaseFirestore.unitypackage
Magazyn w chmurze FirebaseStorage.unitypackage
Baza danych czasu rzeczywistego FirebaseDatabase.unitypackage
Zdalna konfiguracja FirebaseRemoteConfig.unitypackage

Firebase udostępnia pozostałe biblioteki pulpitu jako implementacje pośredniczące (niefunkcjonalne) dla wygody podczas tworzenia dla systemów Windows, macOS i Linux. Dlatego nie musisz warunkowo kompilować kodu, aby był przeznaczony na pulpit.

Następne kroki