Google is committed to advancing racial equity for Black communities. See how.
Эта страница была переведа с помощью Cloud Translation API.
Switch to English

Добавьте Firebase в свой проект Unity

Улучшите свои игры на Unity с помощью наших SDK Firebase Unity.

Чтобы показать, насколько легко подключить Firebase к вашему проекту Unity, мы сделали образец игры MechaHamster, который вы можете загрузить из GitHub , App Store и Google Play Store .

MechaHamster (GitHub)

MechaHamster (Магазин приложений)

MechaHamster (Play Маркет)


Узнайте больше о том, как включить в свои игры Firebase, на нашей странице игр Firebase .

Уже добавили Firebase в свой проект Unity? Убедитесь, что вы используете последнюю версию Firebase Unity SDK .

Предпосылки

  • Установите Unity 5.3 или новее.

  • (Только для iOS) Установите следующее:

    • Xcode 9.4.1 или новее
    • CocoaPods 1.4.0 или новее
  • Убедитесь, что ваш проект Unity соответствует этим требованиям:

    • Для iOS - ориентирована на iOS 8 или новее
    • Для Android - целевой уровень API 16 (Jelly Bean) или новее.
  • Настройте физическое устройство или используйте эмулятор для запуска приложения.

    • Для iOS - настройте физическое устройство iOS или используйте симулятор iOS.

    • Для Android - эмуляторы должны использовать образ эмулятора с Google Play.

Если у вас еще нет проекта Unity и вы просто хотите опробовать продукт Firebase, вы можете загрузить один из наших образцов быстрого запуска .

Шаг 1. Создайте проект Firebase

Прежде чем вы сможете добавить Firebase в свой проект Unity, вам необходимо создать проект Firebase для подключения к вашему проекту Unity. Посетите Understand Firebase Projects, чтобы узнать больше о проектах Firebase.

Шаг 2. Зарегистрируйте приложение в Firebase

Вы можете зарегистрировать одно или несколько приложений или игр для подключения к своему проекту Firebase.

  1. Зайдите в консоль Firebase .

  2. В центре страницы обзора проекта щелкните значок Unity ( ), чтобы запустить рабочий процесс установки.

    Если вы уже добавили приложение в свой проект Firebase, нажмите « Добавить приложение», чтобы отобразить параметры платформы.

  3. Выберите цель сборки вашего проекта Unity, которую вы хотите зарегистрировать, или вы даже можете выбрать регистрацию обеих целей одновременно.

  4. Введите идентификаторы платформы вашего проекта Unity.

    • Для iOS: введите идентификатор iOS вашего проекта Unity в поле идентификатора пакета iOS .

    • Для Android: введите идентификатор Android вашего проекта Unity в поле имени пакета Android .
      Термины имя пакета и идентификатор приложения часто используются как синонимы.

  5. (Необязательно) Введите псевдонимы для платформы вашего проекта Unity.
    Эти псевдонимы являются внутренними удобными идентификаторами и видны только вам в консоли Firebase.

  6. Щелкните Зарегистрировать приложение .

Шаг 3. Добавьте файлы конфигурации Firebase

  1. Получите файлы конфигурации Firebase для конкретной платформы в рабочем процессе настройки консоли Firebase.

    • Для iOS - нажмите Загрузить GoogleService-Info.plist .

    • Для Android: нажмите Загрузить google-services.json .

  2. Откройте окно Project вашего проекта Unity, затем переместите файлы конфигурации в папку Assets .

  3. Вернувшись в консоль Firebase, в рабочем процессе настройки нажмите Далее .

Шаг 4. Добавьте SDK Firebase Unity

Вы можете добавить поддерживаемые продукты Firebase в свой проект Unity с помощью Unity Package Manager или установить SDK вручную.

Менеджер пакетов Unity

Если вы используете Unity 2018.4 или новее, а также .NET 4.x или .NET Standard 2.0, вы можете установить компоненты Firebase SDK с помощью Unity Package Manager:

  1. Добавьте реестр игровых пакетов от Google в свой проект Unity.

    • Если вы никогда раньше не импортировали Firebase SDK и EDM4U (формально именуемый Play Services Resolver), вы можете вручную добавить следующий блок в Packages/manifest.json .

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

      Обратите внимание, что некоторые другие SDK, такие как Facebook SDK, могут содержать EDM4U в своем .unitypackage . Проверьте, существуют ли папки Assets/ExternalDependencyManager или Assets/PlayServicesResolver . Если эти папки существуют, удалите их перед установкой любого Firebase SDK через Unity Package Manager.

    • Если вам нужно перенести существующий SDK или вы предпочитаете более интерактивный метод, импортируйте последнюю версию External Dependency Manager для Unity (EDM4U) .

      Resolver Unity Package Manager предложит вам добавить реестр игровых пакетов от Google в ваш проект. Выберите реестр и нажмите кнопку « Добавить выбранные реестры» .

      • EDM4U добавляет реестр в Packages/manifest.json в папку текущего проекта Unity.

      • Вы также можете вручную добавить этот реестр позже, используя Assets > External Dependency Manager > Unity Package Manager Resolver > Add Registries или Window > Google > Game Package Registry > Add To Project .

  2. Перенесите существующие пакеты Firebase и EDM4U, импортированные через .unitypackage в Unity Package Manager. Это можно сделать одним из следующих способов.

    • После добавления реестра с помощью EDM4U должно появиться диалоговое окно с названием «Миграция пакетов». В этом диалоговом окне перечислены все пакеты, доступные для установки через диспетчер пакетов Unity. Мы рекомендуем вам выбрать все из них и нажать кнопку « Применить» .

    • Вы также можете вручную вызвать это диалоговое окно позже, используя Assets > External Dependency Manager > Unity Package Manager Resolver > Migrate Packages menu options.

    • Вы также можете вручную перенести все пакеты, импортированные через .unitypackage следующие действия.

      1. Удалите Firebase Unity SDK и EDM4U из папки Assets . EDM4U предоставляет инструмент для удаления управляемых пакетов, доступный с помощью пункта меню « Активы» > « Менеджер внешних зависимостей» > « Обработчик версий» > « Удалить управляемые пакеты» . Выберите все SDK Firebase, а также диспетчер внешних зависимостей и нажмите « Удалить выбранные пакеты» .

        • В качестве альтернативы вы также можете удалить SDK вручную из папки Assets .
      2. Установите компоненты Firebase Unity SDK с помощью диспетчера пакетов Unity, выбрав « Окно» > « Диспетчер пакетов» и Firebase поиск Firebase . Компоненты Firebase Unity SDK могут быть установлены, обновлены и удалены через этот интерфейс.

  3. Теперь вы можете изучить и установить любые компоненты Firebase Unity SDK или пакеты Google с помощью диспетчера пакетов Unity, выбрав « Окно» > « Диспетчер пакетов» . Все эти компоненты могут быть установлены, обновлены и удалены через этот интерфейс.

Ручная установка

  1. В консоли Firebase нажмите Загрузить Firebase Unity SDK , затем распакуйте SDK в удобное место.

    • Вы можете снова загрузить Firebase Unity SDK в любое время.

    • SDK Firebase Unity не зависит от платформы.

  2. В открытом проекте Unity перейдите к Assets > Import Package > Custom Package .

  3. В разархивированном SDK выберите поддерживаемые продукты Firebase, которые вы хотите использовать в своем приложении.

    Аналитика включена

    • Добавьте пакет Firebase для Google Analytics: FirebaseAnalytics.unitypackage
    • Добавьте пакеты для любых других продуктов Firebase, которые вы хотите использовать в своем приложении. Например, чтобы использовать Firebase Authentication и Firebase Realtime Database:
      FirebaseAuth.unitypackage и FirebaseDatabase.unitypackage

    Аналитика не включена

    Добавьте пакеты для продуктов Firebase, которые вы хотите использовать в своем приложении. Например, чтобы использовать Firebase Authentication и Firebase Realtime Database:
    FirebaseAuth.unitypackage и FirebaseDatabase.unitypackage

  4. В окне « Импорт пакета Unity» нажмите « Импорт» .

  5. Вернувшись в консоль Firebase, в рабочем процессе настройки нажмите Далее .

Шаг 5. Подтвердите требования к версии сервисов Google Play

Для Firebase Unity SDK для Android требуются сервисы Google Play , которые должны быть обновлены до того, как SDK можно будет использовать.

Добавьте следующий код в начало вашего приложения. Вы можете проверить и при необходимости обновить сервисы Google Play до версии, которая требуется для Firebase Unity SDK, перед вызовом любых других методов в 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.
  }
});

Все готово! Ваш проект Unity зарегистрирован и настроен для использования Firebase.

Известные проблемы

Совместимость с .NET при использовании Unity 2017.x и новее

Firebase поддерживает .NET 4.x в качестве экспериментального варианта сборки в Unity 2017 и новее. Плагины Firebase используют компоненты Parse SDK для предоставления некоторых классов .NET 4.x в более ранних версиях .NET.

Таким образом, Firebase Unity SDK версии 5.4.0 и более поздних версий предоставляет плагины, совместимые с .NET 3.x или .NET 4.x в dotnet3 и dotnet4 пакета Firebase Unity SDK.

Если вы импортируете подключаемый модуль Firebase, несовместимый с версией .NET, включенной в ваш проект, вы увидите ошибки компиляции некоторых типов в платформе .NET, которые реализованы Parse SDK.

Чтобы устранить ошибку компиляции, если вы используете .NET 3.x:

  1. Удалите или отключите следующие библиотеки DLL для всех платформ:
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll
  2. Включите следующие библиотеки DLL для всех платформ:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll

Чтобы устранить ошибку компиляции, если вы используете .NET 4.x:

  1. Удалите или отключите следующие библиотеки DLL для всех платформ:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll
  2. Включите следующие библиотеки DLL для всех платформ:
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll

Если вы импортируете другой плагин Firebase:

  • В своем проекте Unity перейдите к Assets > Play Services Resolver > Version Handler > Update, чтобы включить правильные библиотеки DLL для вашего проекта.

Компиляция Unity 2017.1 IL2CPP в проектах .NET 4.x

Firebase поддерживает .NET 4.x в качестве экспериментального варианта сборки в Unity 2017 и новее. Плагины Firebase используют компоненты Parse SDK для предоставления некоторых классов .NET 4.x в более ранних версиях .NET.

Таким образом, Firebase Unity SDK версии 5.4.0 и более поздних версий предоставляет библиотеки DLL пересылки типов, которые пересылают типы анализа (например, реализация Parse System.Threading.Tasks.Task ) в платформу .NET. К сожалению, IL2CPP (транспилятор, конвертирующий C # в C ++), поставляемый в Unity 2017.1.x, неправильно обрабатывает библиотеки DLL пересылки типов, что приводит к ошибкам сборки, которые похожи на следующие:

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

В настоящее время не существует обходного пути для ошибок сборки .NET 4.x IL2CPP в Unity 2017.1, поэтому необходимо выполнить обновление до Unity 2017.2 или более поздней версии, чтобы использовать .NET 4.x в проектах, скомпилированных с помощью IL2CPP.

Unity 2017.2 сети

База данных Firebase Realtime создает сетевые соединения TLS с использованием сетевого стека .NET. Функциональность TLS нарушена в Unity 2017.2 при использовании .NET 4.6, что приводит к сбою подключаемого модуля Realtime Database в редакторах и на рабочем столе.

Для этой проблемы нет решения, поэтому вы должны использовать другую версию Unity, например версию 2017.1 или 2017.3.

В Unity 2020 отсутствует файл конфигурации Firebase Android.

Для поддержки версий Unity, в которых нет возможности настраивать сборку Gradle, инструмент редактора Firebase создает Assets/Plugins/Android/Firebase/res/values/google-services.xml в качестве ресурса Android, который будет упакован в Сборка Android, чтобы Firebase SDK мог использовать ее для инициализации экземпляра FirebaseApp по умолчанию.

В Unity 2020 все ресурсы Android должны находиться в каталогах с суффиксом .androidlib . Если в вашем проекте используется Firebase SDK, который создает каталог Assets/Plugins/Android/Firebase , переименуйте его в Assets/Plugins/Android/Firebase.androidlib . Убедитесь, что он содержит AndroidManifest.xml , project.properties и res/values/google-services.xml .

Конфликт установки при использовании диспетчера пакетов Unity

Пакет можно установить из разных источников. Например, External Dependency Manager для Unity ( сокращенно EDM4U , ранее называвшийся Play Services Resolver или Unity Jar Resolver) можно установить любым из следующих способов.

  • Импорт диспетчера внешних зависимостей .unitypackage .
  • Импорт Firebase SDK или другого SDK, который содержит EDM4U в их .unitypackage .
  • Установка диспетчера внешних зависимостей через диспетчер пакетов Unity
  • Установка Firebase SDK или другого SDK, который устанавливает EDM4U в качестве своей зависимости через Unity Package Manager .

Когда EDM4U устанавливается через .unitypackage и через Unity Package Manager одновременно, возникает конфликт установки, и Unity может отображать ошибку о конфликте GUID или конфликте символов. EDM4U в настоящее время не предлагает решения для таких ситуаций. В этом случае можно найти обходной путь:

  • Если вы ранее перенесли Firebase и EDM4U в Unity Package Manager и импортируете другой SDK, содержащий EDM4U, в .unitypackage , например, Google Ads или Facebook SDK, вы можете просто удалить папки Assets/ExternalDependencyManager и / или Assets/PlayServicesResolver .
  • Если вы случайно установили EDM4U через Unity Package Manager перед тем, как сначала удалить его из папки Assets , выполните следующие действия для разрешения конфликта:
    1. Удалите папки Assets/ExternalDependencyManager и / или Assets/PlayServicesResolver .
    2. Удалите все пакеты Firebase и EDM4U из Unity Package Manager.
    3. Переустановите все необходимые пакеты Firebase и EDM4U из UPM.

Проблемы с установкой Firebase через диспетчер пакетов Unity в Unity 2018

Когда Firebase устанавливается через Unity Package Manager в Unity 2018, EDM4U может не обнаружить некоторые собственные зависимости Firebase для Android и iOS. Это связано с тем, что файлы в пакетах, установленных в качестве зависимости, не зарегистрированы в AssetDatabase Unity. Самая распространенная проблема - это невозможность создать FirebaseApp в Android из-за DllNotFoundException .

Например, когда Realtime Database устанавливается через диспетчер пакетов Unity , как Auth и Firebase App (Core) автоматически устанавливаются как его зависимости. Однако EDM4U не может обнаружить AuthDependencies.xml и AppDependencies.xml , которые содержат их собственные зависимости Android и iOS, поскольку они не зарегистрированы в AssetDatabase в Unity 2018. В результате некоторые собственные библиотеки могут отсутствовать в Android или Сборка iOS.

Чтобы обойти эту проблему, убедитесь, что все пакеты Firebase явно установлены через Unity Package Manager . Например, если вы хотите установить Realtime Database , не забудьте также нажать кнопку « install для приложения Auth и Firebase App (Core) через диспетчер пакетов Unity .

Проблема с single dex при создании приложения для Android

При создании приложения для Android вы можете столкнуться с ошибкой сборки, связанной с одним файлом dex. Сообщение об ошибке выглядит примерно так, если ваш проект настроен на использование системы сборки Gradle.

Cannot fit requested classes in a single dex file.

Исполняемые файлы Dalvik ( .dex ) используются для хранения набора определений классов и связанных с ними дополнительных данных для приложений Android ( .apk ). Один файл dex ограничен ссылкой на 65 536 методов. Сборка завершится ошибкой, если общее количество методов из всех библиотек Android в вашем проекте превысит этот предел.

Unity представил минификацию в 2017.2, который использует Proguard (или другие инструменты , в некоторых версиях Unity) , чтобы вырезать неиспользуемый код, который может уменьшить общее количество ссылочных методов в одном файле DEX. Эту опцию можно найти в Настройках проигрывателя> Android> Настройки публикации> Свернуть . Параметры могут отличаться в разных версиях Unity, поэтому обратитесь к официальной документации Unity.

Если количество ссылочных методов все еще превышает лимит, другой вариант - включить multidex . В Unity есть несколько способов добиться этого:

  • Если в Player Settings включен Custom Gradle Template , измените mainTemplate.gradle .
  • Если вы используете Android Studio для сборки экспортированного проекта, измените файл build.gradle уровне build.gradle .

Более подробную информацию можно найти в руководстве пользователя multidex .

Настройка рабочего процесса на рабочем столе ( бета )

Когда вы создаете игру, часто гораздо проще сначала протестировать ее в редакторе Unity и на настольных платформах, а затем развернуть и протестировать на мобильных устройствах позже в процессе разработки. Для поддержки этого рабочего процесса мы предоставляем подмножество SDK Firebase Unity, которые могут работать в Windows, macOS, Linux и из редактора Unity.

  1. Настройте проект Unity для настольной платформы, следуя тем же инструкциям, что и для мобильной платформы (начните с шага « Зарегистрируйте приложение в Firebase» выше.

  2. Запустите свой проект Unity в Unity IDE или выберите сборку проекта Unity для настольного компьютера .

  3. (Необязательно) Запустите проект Unity в режиме редактирования.

    SDK Firebase Unity также можно запустить в режиме редактирования Unity, что позволяет использовать его в надстройках редактора.

    1. Когда вы создаете приложение FirebaseApp используемое редактором, не используйте экземпляр по умолчанию.

    2. Вместо этого укажите уникальное имя для вызова FirebaseApp.Create() .

      Это важно, чтобы избежать конфликта в параметрах между экземпляром, используемым Unity IDE, и экземпляром, используемым вашим проектом Unity.

Поддерживаемые продукты Firebase

Узнайте больше о библиотеках Unity Firebase в справочной документации .

SDK Firebase Unity поддерживает следующие продукты Firebase на iOS и Android :

Продукт Firebase Пакет Unity
AdMob Распространяется отдельно в подключаемом модуле AdMob Unity
Аналитика FirebaseAnalytics.unitypackage
Аутентификация FirebaseAuth.unitypackage
Cloud Firestore (альфа) FirebaseFirestore.unitypackage
Облачные функции FirebaseFunctions.unitypackage
Обмен сообщениями в облаке FirebaseMessaging.unitypackage
(рекомендуется) FirebaseAnalytics.unitypackage
Облачное хранилище FirebaseStorage.unitypackage
Crashlytics FirebaseCrashlytics.unitypackage
(рекомендуется) FirebaseAnalytics.unitypackage
Динамические ссылки FirebaseDynamicLinks.unitypackage
(рекомендуется) FirebaseAnalytics.unitypackage
База данных в реальном времени FirebaseDatabase.unitypackage
Удаленная конфигурация FirebaseRemoteConfig.unitypackage
(рекомендуется) FirebaseAnalytics.unitypackage

Поддерживаемые продукты Firebase (настольные)

Firebase Unity SDK включает поддержку рабочего процесса рабочего стола для подмножества продуктов, позволяя использовать определенные части Firebase в редакторе Unity и в автономных сборках рабочего стола в Windows, macOS и Linux.

Продукт Firebase (для ПК) Пакет Unity
Аутентификация FirebaseAuth.unitypackage
Облачные функции FirebaseFunctions.unitypackage
Cloud Firestore (альфа) FirebaseFirestore.unitypackage
Облачное хранилище FirebaseStorage.unitypackage
База данных в реальном времени FirebaseDatabase.unitypackage
Удаленная конфигурация FirebaseRemoteConfig.unitypackage

Firebase предоставляет оставшиеся библиотеки рабочего стола в виде заглушек (нефункциональных) для удобства при сборке для Windows, macOS и Linux. Следовательно, вам не нужно условно компилировать код для рабочего стола.

Следующие шаги