Google is committed to advancing racial equity for Black communities. See how.
本頁面由 Cloud Translation API 翻譯而成。
Switch to English

將Firebase添加到您的Unity項目

使用我們的Firebase Unity SDK增強Unity遊戲的功能。

為了展示將Firebase插入Unity項目是多麼容易,我們製作了一個示例遊戲MechaHamster,您可以從GitHubApp StoreGoogle Play商店下載該遊戲

MechaHamster(GitHub)

MechaHamster(App Store)

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項目。訪問了解Firebase項目以了解有關Firebase項目的更多信息。

第2步 :在Firebase中註冊您的應用

您可以註冊一個或多個應用程序或遊戲來與Firebase項目連接。

  1. 轉到Firebase控制台

  2. 在項目概述頁面的中心,單擊Unity圖標( )以啟動設置工作流程。

    如果您已經將應用程序添加到Firebase項目中,請單擊“ 添加應用程序”以顯示平台選項。

  3. 選擇您要註冊的Unity項目的構建目標,或者甚至可以選擇同時註冊兩個目標。

  4. 輸入您的Unity項目的特定於平台的ID。

    • 對於iOS-iOS捆綁包ID字段中輸入Unity項目的iOS ID。

    • 對於Android-Android包名稱字段中輸入Unity項目的Android ID。
      術語軟件包名稱應用程序ID通常可以互換使用。

  5. (可選)輸入您的Unity項目的特定於平台的暱稱。
    這些暱稱是內部便利標識符,僅在Firebase控制台中對您可見。

  6. 點擊註冊應用

步驟3 :添加Firebase配置文件

  1. 在Firebase控制台設置工作流程中獲取特定於平台的Firebase配置文件。

    • 對於 iOS-單擊“ 下載GoogleService-Info.plist”

    • 對於Android —單擊下載google-services.json

  2. 打開Unity項目的“ 項目”窗口,然後將配置文件移動到Assets文件夾中。

  3. 返回Firebase控制台,在設置工作流程中,單擊“ 下一步”

步驟4 :添加Firebase Unity SDK

您可以使用Unity Package Manager支持的Firebase產品添加到Unity項目中,也可以手動安裝SDK。

Unity軟件包管理器

如果您使用的是Unity 2018.4或更高版本以及.NET 4.x或.NET Standard 2.0,則可以使用Unity軟件包管理器安裝Firebase SDK組件:

  1. GoogleGame Package Registry添加到您的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)可能在其.unitypackage包含.unitypackage 。檢查Assets/ExternalDependencyManagerAssets/PlayServicesResolver文件夾是否存在。如果存在這些文件夾,請先刪除它們,然後再通過Unity Package Manager安裝任何Firebase SDK。

    • 如果您需要遷移現有的SDK或希望使用更具交互性的方法,請導入最新的Unity外部依賴關係管理器(EDM4U)

      Unity Package Manager解析器將提示您將GoogleGame Package Registry添加到您的項目中。選擇註冊表,然後單擊“ 添加選定的註冊表按鈕。

      • EDM4U將註冊表添加到當前Unity項目文件夾下的Packages/manifest.json

      • 您也可以稍後使用資產 > 外部依賴關係管理器 > Unity程序包管理器解析器 > 添加 註冊表窗口 > Google > 遊戲包註冊表 > 添加到項目菜單選項來手動添加此註冊表。

  2. 將通過.unitypackage導入的現有Firebase和EDM4U軟件包遷移到Unity Package Manager。這可以通過以下方法之一來完成。

    • 由EDM4U添加註冊表後,應彈出一個名為“遷移軟件包”的對話框。該對話框列出了每個可通過Unity Package Manager安裝的軟件包。我們建議您選擇所有它們,然後單擊“ 應用”按鈕。

    • 您還可以稍後使用Assets > External Dependency Manager > Unity Package Manager Resolver > Migrate Packages菜單選項手動打開此對話框。

    • 您還可以按照以下步驟手動遷移通過.unitypackage導入的每個軟件包。

      1. 從“ Assets文件夾中刪除Firebase Unity SDK和EDM4U。 EDM4U提供了一個卸載託管軟件包的工具,可使用“ 資產” >“ 外部依賴關係管理器” >“ 版本處理程序” >“ 卸載託管軟件包”菜單選項進行訪問。選擇所有Firebase SDKExternal Dependency Manager ,然後單擊“ 卸載選定的軟件包”

        • 或者,您也可以從Assets文件夾中手動刪除SDK。
      2. 通過選擇“ 窗口” >“ 程序包管理器”並蒐索Firebase使用Unity程序包管理器安裝Firebase Unity SDK組件。 Firebase Unity SDK組件可以通過此界面安裝,擴展和刪除。

  3. 現在,您可以通過選擇“ 窗口” >“ 程序包管理器”,使用Unity程序包管理器瀏覽並安裝任何Firebase Unity SDK組件或Google程序 。所有這些組件都可以通過此接口安裝,擴展和刪除。

手動安裝

  1. 在Firebase控制台中,單擊“ 下載Firebase Unity SDK” ,然後將SDK解壓縮到方便的位置。

    • 您可以隨時再次下載Firebase Unity SDK

    • Firebase Unity SDK並非特定於平台。

  2. 在打開的Unity項目中,導航到Assets > Import Package > Custom Package

  3. 從解壓縮的SDK中,選擇要在應用程序中使用的受支持的Firebase產品

    啟用分析

    • 為Google Analytics(分析)添加Firebase軟件包: FirebaseAnalytics.unitypackage
    • 添加您要在應用程序中使用的任何其他Firebase產品的軟件包。例如,要使用Firebase身份驗證和Firebase實時數據庫:
      FirebaseAuth.unitypackageFirebaseDatabase.unitypackage

    未啟用分析

    添加您要在應用程序中使用的Firebase產品的軟件包。例如,要使用Firebase身份驗證和Firebase實時數據庫:
    FirebaseAuth.unitypackageFirebaseDatabase.unitypackage

  4. 在“ 導入Unity軟件包”窗口中,單擊導入

  5. 返回Firebase控制台,在設置工作流程中,單擊“ 下一步”

步驟5 :確認Google Play服務版本要求

適用於Android的Firebase Unity SDK需要Google Play服務 ,該服務必須是最新的,然後才能使用該SDK。

在應用程序的開頭添加以下代碼。在調用SDK中的任何其他方法之前,您可以檢查Google Play服務並將其更新為Firebase Unity 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。

已知的問題

使用Unity 2017.x和更高版本時的.NET兼容性

Firebase支持.NET 4.x作為Unity 2017及更高版本中的實驗性構建選項。 Firebase插件使用Parse SDK的組件在.NET的早期版本中提供一些.NET 4.x類。

因此,Firebase Unity SDK版本5.4.0和更高版本在Firebase Unity SDK的dotnet3dotnet4目錄中提供與.NET 3.x或.NET 4.x兼容的插件。

如果您導入的Firebase插件與您的項目中啟用的.NET版本不兼容,您將看到由Parse SDK實現的.NET框架中某些類型的編譯錯誤。

要解決編譯錯誤,如果您使用的是.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。

NET 4.x項目中的Unity 2017.1 IL2CPP編譯

Firebase支持.NET 4.x作為Unity 2017及更高版本中的實驗性構建選項。 Firebase插件使用Parse SDK的組件在早期版本的.NET中提供一些.NET 4.x類。

因此,Firebase Unity SDK版本5.4.0及更高版本提供了類型轉發DLL,這些DLL將Parse類型(例如, System.Threading.Tasks.Task Parse實現)轉發到.NET框架。不幸的是,Unity 2017.1.x中隨附的IL2CPP(將C#轉換為C ++的編譯器)無法正確處理類型轉發DLL,這會導致生成類似於以下內容的錯誤:

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

當前在Unity 2017.1中沒有針對.NET 4.x IL2CPP構建錯誤的解決方法,因此您必須升級到Unity 2017.2或更高版本,才能在使用IL2CPP編譯的項目中使用.NET4.x。

Unity 2017.2網絡

Firebase Realtime Database使用.NET網絡堆棧創建TLS網絡連接。使用.NET 4.6時,Unity 2017.2中的TLS功能被破壞,導致Realtime Database插件在編輯器和桌面上失敗。

沒有針對此問題的解決方法,因此您必須使用其他版本的Unity,例如版本2017.1或2017.3。

Unity 2020中缺少Firebase Android配置文件。

為了支持無法自定義Gradle構建的Unity版本,Firebase編輯器工具將Assets/Plugins/Android/Firebase/res/values/google-services.xml成為Android資源,並將其打包為Android構建,以便Firebase SDK可以使用它來初始化默認的FirebaseApp實例。

在Unity 2020中,所有Android資源必須位於帶有.androidlib後綴的目錄中。如果您的項目使用的是可生成Assets/Plugins/Android/Firebase目錄的Firebase SDK,請將其重命名為Assets/Plugins/Android/Firebase.androidlib 。確保它包含AndroidManifest.xmlproject.propertiesres/values/google-services.xml

使用Unity Package Manager時的安裝衝突

可以從不同來源安裝軟件包。例如,可以通過以下任何一種方式來安裝Unity的外部依賴關係管理器(簡稱EDM4U ,以前稱為Play Services Resolver或Unity Jar Resolver)。

EDM4U通過安裝.unitypackage並通過統一包管理器在同一時間,有一個安裝衝突,團結可以顯示有關GUID衝突或衝突符號錯誤。 EDM4U當前不為此類情況提供解決方案。發生這種情況時,這裡是解決方法:

  • 如果您之前已經將Firebase和EDM4U遷移到Unity Package Manager ,並且在.unitypackage導入了另一個包含EDM4U的 SDK,例如Google Ads或Facebook SDK,則只需刪除Assets/ExternalDependencyManager和/或Assets/PlayServicesResolver文件夾。
  • 如果您首先通過Unity Package Manager意外安裝了EDM4U ,然後先將其從Assets文件夾中刪除,請使用以下步驟解決衝突:
    1. 刪除Assets/ExternalDependencyManager和/或Assets/PlayServicesResolver文件夾。
    2. Unity Package Manager卸載所有Firebase和EDM4U軟件包
    3. 從UPM重新安裝所有需要的Firebase和EDM4U軟件包。

通過Unity 2018中的Unity Package Manager安裝Firebase的問題

在Unity 2018中通過Unity Package Manager安裝Firebase時, EDM4U可能無法發現Firebase的某些Android和iOS本機依賴項。這是因為安裝為依賴項的軟件包中的文件未註冊到Unity的AssetDatabase。最常見的問題是由於DllNotFoundException導致無法在Android中創建FirebaseApp

例如,通過Unity Package Manager安裝Realtime Database時,將自動安裝AuthFirebase App (Core)作為其依賴項。但是, EDM4U無法發現包含Android和iOS本機依賴項的AuthDependencies.xmlAppDependencies.xml ,因為它們未在Unity 2018中的AssetDatabase中註冊。因此,某些本機庫可能在Android或Android中丟失。 iOS版本。

此問題的解決方法是確保通過Unity Package Manager明確安裝了所有Firebase軟件包。例如,如果您想安裝Realtime Database ,請確保也通過Unity Package Manager單擊install AuthFirebase App (Core)

構建Android應用時出現單個dex問題

在構建Android應用時,您可能會遇到與擁有一個dex文件有關的構建失敗。如果您的項目配置為使用Gradle構建系統,則錯誤消息看起來類似於以下內容。

Cannot fit requested classes in a single dex file.

Dalvik可執行( .dex )文件用於保存一組類定義及其與Android應用程序( .apk )相關的輔助數據。單個dex文件僅限於引用65,536個方法。如果項目中所有Android庫中方法的總數超過此限制,則構建將失敗。

統一引入微小在2017.2,它使用Proguard的(或其他工具在Unity的一些版本),以汽提出未使用的代碼,從而可以減少在一個單一的DEX文件的引用的方法的總數。該選項可在播放器設置> Android>發佈設置>縮小中找到 。不同版本的Unity中的選項可能有所不同,因此請參考官方的Unity文檔。

如果引用的方法數量仍超過限制,則另一個選擇是啟用multidex 。在Unity中有多種方法可以實現此目的:

  • 如果啟用了“ Player Settings下的Player Settings Custom Gradle Template Player Settings ,請修改mainTemplate.gradle
  • 如果您使用Android Studio構建導出的項目,請修改模塊級別的build.gradle文件。

可以在multidex用戶指南中找到更多詳細信息。

設置桌面工作流程( 測試版

在創建遊戲時,通常更容易先在Unity編輯器和台式機平台上測試遊戲,然後在開發中在移動設備上進行部署和測試。為了支持此工作流程,我們提供了Firebase Unity SDK子集,這些子集可以在Windows,macOS,Linux以及Unity編輯器中運行。

  1. 遵循與移動平台相同的說明來設置桌面平台Unity項目(從上面的“ 使用Firebase註冊應用程序”步驟開始)。

  2. 在Unity IDE中運行您的Unity項目,或選擇為桌面構建您的Unity項目。

  3. (可選)在編輯模式下運行Unity項目。

    Firebase Unity SDK也可以在Unity的編輯模式下運行,從而可以在編輯器插件中使用。

    1. 創建編輯器使用的FirebaseApp ,請勿使用默認實例。

    2. 而是為FirebaseApp.Create()調用提供唯一的名稱。

      這對於避免Unity IDE使用的實例與Unity項目使用的實例之間的選項衝突很重要。

支持的Firebase產品

參考文檔中了解有關Unity Firebase庫的更多信息。

Firebase Unity SDK在iOSAndroid上支持以下Firebase產品:

Firebase產品 Unity包
AdMob 在AdMob Unity插件中單獨分發
分析工具 FirebaseAnalytics.unitypackage
認證方式 FirebaseAuth.unitypackage
Cloud Firestore (alpha) FirebaseFirestore.unitypackage
雲功能 FirebaseFunctions.unitypackage
雲消息傳遞 FirebaseMessaging.unitypackage
(推薦) FirebaseAnalytics.unitypackage
雲儲存 FirebaseStorage.unitypackage
速溶藥 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 (alpha) FirebaseFirestore.unitypackage
雲儲存 FirebaseStorage.unitypackage
實時數據庫 FirebaseDatabase.unitypackage
遠程配置 FirebaseRemoteConfig.unitypackage

為了在構建Windows,macOS和Linux時方便使用,Firebase提供了剩餘的桌面庫作為存根(非功能性)實現。因此,您無需有條件地編譯代碼即可定位桌面。

下一步