UnityでFirebaseStorageからファイルをダウンロードする

FirebaseはGoogleの提供するアプリやWebサービスなどのモバイル開発支援サービスです。様々なサービスがありますが、今回はFirebaseStorageの使って、ファイルをダウンロードする方法をご紹介したいと思います。なお、以下はFirebase公式サイトでも確認することが出来ます。

目次

FirebaseStorageを利用する準備編

UnityでFirebaseStorageを使うには、事前に準備が必要です。こちらを事前に済ませてからUnityでの作業に移ります。

FirebaseコンソールでFirebaseを使えるようにする

Firebaseを利用するには、Firebaseコンソールにアクセスしてプロジェクトを作成する必要があります。

アナリティクスの収集も出来ますが、なにもない場合は自動的に作成を選択して問題ありません。

アプリの追加

プロジェクトが作成出来たら、プロジェクトの中にアプリを追加します。色々追加ルートはありますが、下記は目安として利用してください。今回はアンドロイドのアプリを追加したいと思います。

STEP
アプリを追加ボタンを押す
STEP
Unityを選択する

ここ、Unityマークあるから使ってますが、iOS/Android個別にも登録することが可能です。

STEP
Androidアプリとして登録

チェックを入れて、パッケージ名を入力。本リリースしない場合や決まっていない場合は一度仮のパッケージ名を登録することでFirebaseを使うことが出来ます。

STEP
設定ファイルを入手

アプリを登録すると、jsonファイルをダウンロードすることが出来ます。別プラットフォームのアプリをあとから追加した場合、jsonファイルは更新する必要があります。(どのアプリ、プロジェクトもファイル名が同じなので管理は気をつけよう)

STEP
SDKの入手

Firebase SDKのzipファイルをダウンロードします。違う場所でも入手可能ですが、今回はここで手に入れたものを利用してください。Storage以外のパッケージも含まれています(1GB弱)。

STEP
コンソールに進む(戻る?)

以上でアプリの追加が出来ました。コンソールに進むボタンから戻りましょう。

STEP
コンソール画面で追加されたことを確認

初めての追加の場合、下図の下線部にパッケージ名もしくはアプリ名が表示されていると思います。これにてアプリ追加完了です。

プロジェクトでStorageを使えるようにする

構築タブからStorageを選択します。

STEP
構築タブからStorage
STEP
始める

英語だとGet startedとかになってるボタンを押す

STEP
セキュリティルールはテストモード

本来はアクセスするための権限などを設定する必要があります。今回はテストモードとして30日以内であればアクセスし放題として利用します。ここは本リリース時には必ず注意を払ってください。

STEP
ロケーションの設定

デフォルトの設定で進みます。ここは設定すると変更出来ないものになります。アクセス過多でリージョンを変更したい場合はストレージ作り直しになります。

STEP
しばらくするとストレージが作成!

こんな表示が出来たら成功!

ストレージにファイルをアップロード

この後利用するダウンロード対象のファイルをアップロードしておきます。下図、ファイルをアップロードボタンから、何か画像ファイルをアップロードしてください。下図ではslime.pngという画像ファイルをアップロードしました。

階層構造も作れます!
右側のフォルダボタンを押すことで、ストレージ内に階層を設けることも可能です。Unityの場合、プラットフォームごとにフォルダを分けて使うことが多いと思います。用途に応じてフォルダを使ってください

Unityからストレージのファイルをダウンロードする

下準備も終わったのでUnityでダウンロードしていきましょう。

プロジェクト作成とパッケージ導入

今回はファイルダウンロードがメインなのでプロジェクトテンプレートは何でもOKです。プロジェクトが開きましたら、先にダウンロードしているSDKのZipファイルを解凍してください。展開後はFirebaseStorage.unitypackageをプロジェクトに導入してください。

google-services.jsonを追加

先にダウンロードしておいたgoogle-services.jsonファイルをAssets直下にインポートしてください。

インポート時にダイアログが表示される場合があります。Googleに利用情報を提供するかどうかですが、問題なさそうであればYesボタンを押しておきましょう。

スクリプト準備

ここでは先程アップロードしたslime.pngというファイルをダウンロードしたいと思います。プロジェクトにダウンローダーというファイルを作成してください。

using Firebase.Extensions;
using Firebase.Storage;
using UnityEngine;

public class Downloader : MonoBehaviour
{
    void Start()
    {
        FirebaseStorage storage = FirebaseStorage.DefaultInstance;
        StorageReference reference = storage.GetReference("slime.png");

        string filePath = Application.dataPath + "/slime.png";

        reference.GetFileAsync(filePath).ContinueWithOnMainThread(task =>
        {
            if (!task.IsFaulted && !task.IsCanceled)
            {
                Debug.Log("downloaded");
            }
        });
    }
}

動かしてみる

作成したスクリプトをシーン内のゲームオブジェクトに貼り付けて、Unityを起動してみてください。プロジェクトフォルダのAssets直下に指定したファイルがダウンロード出来ています。

利用状況の確認

FirebaseStorageの利用するチュートリアルとしてファイルをダウンロードしましたが、こちらのサービスを利用する上で知っておくべきことがあります。それはアップロードしている保存ファイルの容量と、1日でのダウンロードサイズについてです。

Usageタブに切り替えると、1日でのダウンロードサイズを確認することが出来ます。無料枠の上限は

項目制限
保存バイト数5GB
帯域幅(ダウンロードサイズ)1GB/日

今回のプログラムだと、アクセスごとに毎回ダウンロードしてしまうため、多重にダウンロードしないような工夫が必要になります。対策としてはアセットバンドル化を行っておくなどがあげられます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次