Unity プロジェクトに Firebase を追加するplat_iosplat_androidplat_unity

Firebase Unity SDK を使用して Unity ゲームをパワーアップさせることができます。

Unity プロジェクトに Firebase を簡単に組み込めることを示すために、サンプルゲーム「MechaHamster」を作成しました。このゲームは、GitHubApp StoreGoogle Play ストアからダウンロードできます。

MechaHamster(GitHub)

MechaHamster(App Store)

MechaHamster(Play ストア)


Firebase でゲームをパワーアップする方法の詳細については、Firebase のゲームのページをご覧ください。

ステップ 1: 環境を設定する

  • Unity 5.3 以降をインストールします。

  • (iOS のみ)以下にアクセスできることを確認します。

    • Xcode 9.4.1 以降
    • CocoaPods 1.4.0 以降
  • Unity プロジェクトが適切な OS レベルをターゲットにしていることを確認します。

    • iOS の場合 - iOS 8 以降
    • Android の場合 - API レベル 16(Jelly Bean)以降
  • Unity プロジェクトを実行するためのデバイスまたはエミュレータにアクセスします。

    • iOS の場合 - Firebase Cloud Messaging を使用するために必要なもの:

      • 物理 iOS デバイス
      • プッシュ通知を有効にした APNs 証明書
    • Android の場合 - エミュレータでは Google Play のエミュレータ イメージを使用する必要があります。

  • Google アカウントを使用して Firebase にログインします。

Unity プロジェクトをまだ用意していない場合、Firebase サービスを試すだけであれば、クイックスタート サンプルをダウンロードしてご利用いただけます。

ステップ 2: Firebase プロジェクトを作成する

Unity プロジェクトに Firebase を追加する前に、Unity プロジェクトに接続するための Firebase プロジェクトを作成します。

Firebase プロジェクトを作成するには:

  1. Firebase コンソールに移動します。

  2. [プロジェクトを追加] をクリックし、[プロジェクト名] でプロジェクト名を選択するか、新しいプロジェクト名を入力します。

    • アプリに関連付けられた既存の Google プロジェクトがある場合は、[プロジェクト名] プルダウン メニューからプロジェクトを選択します。
    • 既存の Google プロジェクトがない場合は、[プロジェクト名] に新しいプロジェクト名を入力します。
  3. (省略可)プロジェクト ID を編集します。

    Firebase プロジェクトには一意の ID が自動的に割り当てられます。一般公開される Firebase サービスでは、この ID は次のように表示されます。

    • デフォルト Realtime Database URL - your-project-id.firebaseio.com
    • デフォルト Cloud Storage バケット名 - your-project-id.appspot.com
    • デフォルト ホスティング サブドメイン - your-project-id.firebaseapp.com
  4. Firebase コンソールで残りの設定手順を実施した後、[プロジェクトを作成](既存の Google プロジェクトを使用する場合は [Firebase を追加])をクリックします。

Firebase プロジェクトのリソースが自動的にプロビジョニングされます。通常、この処理には数分かかります。処理が完了すると、Firebase コンソールに Firebase プロジェクトの概要ページが表示されます。

ステップ 3: Unity プロジェクトを Firebase プロジェクトに登録する

Firebase プロジェクトに接続するアプリやゲームを登録できます。

  1. Firebase プロジェクトの概要ページで、Unity 用の設定ウィザードを起動します。

  2. Unity プロジェクトのどのビルド ターゲットを登録するかを選択します。両方のターゲットを登録することもできます。

  3. Unity プロジェクトのプラットフォーム固有の ID を入力します。

    1. Unity プロジェクトを Unity IDE で開きます。

    2. [Build Settings] > [iOS] または [Android] >[Player Settings] > [Other Settings] に移動します。

      Unity プロジェクトの ID はバンドル ID の値です(ID の例: com.yourcompany.unity-project-name)。

    3. プラットフォーム固有の ID をそれぞれ該当する項目に入力します。

      • iOS の場合 - Unity プロジェクトの iOS ID を [iOS バンドル ID] に入力します。

      • Android の場合 - Unity プロジェクトの Android ID を [Android パッケージ名] に入力します。

        • 「パッケージ名」と「アプリケーション ID」は、多くの場合、同じ意味に使用されます。
  4. (省略可)Unity プロジェクトのプラットフォーム固有のニックネームを入力します。

    これらのニックネームは内部用の簡便な ID であり、Firebase コンソールでのみ表示されます。

  5. [アプリの登録] をクリックします。

ステップ 4: Unity プロジェクトに Firebase 構成ファイルを追加する

  1. Firebase コンソールの設定ウィザードでプラットフォーム固有の Firebase 構成ファイルを取得します。

    • iOS の場合 - [GoogleService-Info.plist をダウンロード] をクリックします。

    • Android の場合 - [google-services.json をダウンロード] をクリックします。

  2. Unity プロジェクトで [プロジェクト] ウィンドウを開き、構成ファイルを Assets フォルダに移動します。

  3. Firebase コンソールの設定ウィザード ダイアログに戻り、[次へ] をクリックします。

ステップ 5: Unity プロジェクトに Firebase SDK を追加する

このセクションの手順は、サポートされている Firebase サービスを Unity プロジェクトに追加する方法の一例です。この例では、Firebase 向け Google アナリティクスを追加する方法を示します。

  1. Firebase コンソールで [Firebase Unity SDK をダウンロード] をクリックし、適切な場所で SDK を解凍します。

    • Firebase Unity SDK はいつでも再ダウンロードできます。

    • Firebase Unity SDK はプラットフォーム固有ではありません。

  2. 開いている Unity プロジェクトで、[Assets] > [Import Package] > [Custom Package] を選択します。

  3. 解凍した SDK の中からアナリティクス SDK(FirebaseAnalytics.unitypackage)を選択してインポートします。

    その他のサポートされている Firebase サービスもインポートできます。

  4. [Import Unity Package] ウィンドウで [Import] をクリックします。

  5. Firebase コンソールの設定ウィザード ダイアログに戻り、[次へ] をクリックします。

ステップ 6: 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 では、Unity 2017 以降の実験的ビルド オプションとして .NET 4.x がサポートされています。Firebase のプラグインでは、Parse SDK のコンポーネントを使用して .NET 4.x のクラスを提供していますが、その中の一部のクラスはそれ以前のバージョンの .NET のものです。

したがって、Firebase Unity SDK バージョン 5.4.0 以降では、Firebase Unity SDK の dotnet3 および dotnet4 ディレクトリに .NET 3.x または .NET 4.x と互換性のあるプラグインが提供されています。

プロジェクトで有効な .NET バージョンと互換性がない Firebase プラグインをインポートすると、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 では、Unity 2017 以降の実験的ビルド オプションとして .NET 4.x がサポートされています。Firebase のプラグインでは、Parse SDK のコンポーネントを使用して .NET 4.x のクラスを提供していますが、その中の一部のクラスはそれ以前のバージョンの .NET のものです。

したがって、Firebase Unity SDK バージョン 5.4.0 以降では、Parse 型(Parse 実装 System.Threading.Tasks.Task など)を .NET フレームワークに転送する、型転送の DLL が用意されています。残念ながら、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 でコンパイルされたプロジェクトで .NET 4.x を使用する必要があります。

Unity 2017.2 のネットワーキング

Firebase Realtime Database は .NET ネットワーキング スタックを使用して TLS ネットワーク接続を構築します。.NET 4.6 を使用している場合は、Unity 2017.2 の TLS 機能が正しく動作しないと、エディタとデスクトップで Realtime Database プラグインにおけるエラーが発生します。

この問題を回避できる方法はないため、Unity の別のバージョン(2017.1 や 2017.3 など)を使用する必要があります。

デスクトップ ワークフローを設定する(ベータ版

ゲームを作成する場合、通常は、Unity エディタやデスクトップ プラットフォームでまずゲームをテストしてから、開発中のモバイル デバイスにデプロイしてテストする方が簡単になります。このワークフローをサポートするために、Windows、OS X、Linux、および Unity エディタ内で実行できる Firebase Unity SDK のサブセットが用意されています。

  1. モバイル プラットフォームの場合と同じ手順に従って、デスクトップ プラットフォームの Unity プロジェクトを設定します(上記の Unity プロジェクトを Firebase プロジェクトに登録するから開始)。

  2. Unity IDE で Unity プロジェクトを実行するか、デスクトップ用に Unity プロジェクトをビルドします。

  3. (省略可)Unity プロジェクトを編集モードで実行します。

    Firebase Unity SDK は Unity の編集モードでも実行できるため、エディタのプラグインで使用できます。

    1. エディタで使用される FirebaseApp を作成する場合、デフォルトのインスタンスは使用しません。

    2. 代わりに FirebaseApp.Create() 呼び出しに対して一意の名前を指定します。

      Unity IDE で使用されるインスタンスと Unity プロジェクトで使用されるインスタンスの間のオプションの競合を避けるために、この操作は重要です。

サポートされている Firebase サービス

iOS および Android の Firebase Unity SDK では、次の Firebase サービスがサポートされています。

Firebase サービス Unity パッケージ
AdMob AdMob Unity プラグインで個別に配信
アナリティクス FirebaseAnalytics.unitypackage
Authentication FirebaseAuth.unitypackage
Crashlytics(ベータ版) FirebaseCrashlytics.unitypackage
Realtime Database FirebaseDatabase.unitypackage
Dynamic Links FirebaseDynamicLinks.unitypackage
Cloud Functions FirebaseFunctions.unitypackage
Invites FirebaseInvites.unitypackage
Cloud Messaging FirebaseMessaging.unitypackage
Remote Config FirebaseRemoteConfig.unitypackage
Cloud Storage FirebaseStorage.unitypackage

サポートされている Firebase サービス(デスクトップ)

Firebase Unity SDK には機能のサブセットに対するデスクトップ ワークフローのサポートが含まれているため、Firebase の特定の部分を Unity エディタや、Windows、OS X、Linux のスタンドアロン デスクトップ ビルドで使用できます。

デスクトップ機能 ライブラリ
Authentication FirebaseAuth.unitypackage
Cloud Functions FirebaseFunctions.unitypackage
Realtime Database FirebaseDatabase.unitypackage
Remote Config FirebaseRemoteConfig.unitypackage
Cloud Storage FirebaseStorage.unitypackage

Firebase では残りのデスクトップ ライブラリはスタブ(非機能的)実装であり、Windows、OS X、Linux 向けのビルドを便利にするために提供されています。そのため、デスクトップが対象である場合でも、条件に応じてコードをコンパイルする必要はありません。

サポート

Firebase サポート

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。