Unityに関連する記事です

FireBaseにアップした画像データをUnity内のフォルダにダウンロードする


 FireBaseとUnityの連携自体については公式リファレンスを参照してください。
Unity プロジェクトに Firebase を追加する
https://firebase.google.com/docs/unity/setup?hl=ja

 UnityのStreamingAssets内にFireBaseに登録してあるPNG画像データをTextureとしてダウンロードします。



FireBaseDownLoader.cs

<= クリックすると開きます



<Application.dataPath>


 Unity のアプリケーションが保存されているパスを取得します。
プラットフォームにより保存先が異なるため、実行したデバイスにより、パスの情報も異なります。

  // ローカルのパス(保存先)の指定
  string local_url = Application.dataPath + "/StreamingAssets/" + fileName + ".png";


参考サイト
Unity 公式スクリプトリファレンス
Application.dataPath
https://docs.unity3d.com/ja/current/ScriptReferenc...
Qiita @w_yang 様
unityでplatformによって取得できるパス
https://qiita.com/w_yang/items/8458cd790607d14b1b3...


<FirebaseStorage.DefaultInstance>


 FireBase に用意されている API の1つであり、FirebaseStorage クラスに含まれているメソッドの1つです。
デフォルトの Firebase.FirebaseApp で初期化された FirebaseStorage インスタンスを返し、利用できる状態にします。

 // FirebaseStorage の初期化
 FirebaseStorage storage = FirebaseStorage.DefaultInstance;


参考サイト
Firebase マニュアル
FirebaseStorage.DefaultInstance
https://firebase.google.com/docs/reference/unity/c...


<FirebaseStorage.GetReferenceFromUrl>

 
 FireBase に用意されている API の1つであり、FirebaseStorage クラスに含まれているメソッドの1つです。
GetReferenceFromUrl メソッドを実行すると、引数で指定した URL を指定し利用できる状態にします。戻り値は StorageReference 型になります。

  // 引数で指定した URL を指定し利用できる状態にする
  StorageReference gs_reference = storage.GetReferenceFromUrl("gs://"自分のFireBaseのアドレス".appspot.com/"フォルダ名。ここではTexture/" + fileName + ".png");


参考サイト
Firebase マニュアル
FirebaseStorage.GetReferenceFromUrl
https://firebase.google.com/docs/reference/android...


<Firebase.Storage.StorageReference.GetFileAsync>


 FireBase に用意されている API の1つであり、StorageReference クラスに含まれているメソッドの1つです。
GetFileAsync メソッドを実行すると、非同期処理によって FireBase からデータのダウンロードを行い、メソッドの引数で指定したパスにデータを保存します。

 戻り値として Task が用意されており、処理の結果を通知する機能があります。
今回はその機能を利用し、ダウンロードに失敗しておらず、処理のキャンセルしていない場合のみ、ダウンロードの成功を Debug.Log メソッドを利用して表示しています。

 // FireBaseからデータをダウンロードし、引数で指定したローカルのパス(フォルダ)に入れる
 gs_reference.GetFileAsync(local_url).ContinueWith(task => 
  {
   // 処理に失敗しておらず、かつ、処理をキャンセルしていない場合
    if (!task.IsFaulted && !task.IsCanceled)
      {
         Debug.Log("File downloaded.");
         isLoad = false;
      }
  });


参考サイト
Firebase マニュアル
Firebase.Storage.StorageReference.GetFileAsync
https://firebase.google.com/docs/reference/unity/c...


ダウンロードしたTexture画像をUnity起動時にTexture2D、またはSpriteに変換して読み込む


 StreamingAssetsにある画像データを読み込みます。読み込む際にはパス(StreamingAssets内)を指定します。



TextureLoader.cs

<= クリックすると開きます



<File.ReadAllBytes メソッド>


 引数に指定したバイナリファイルを開き、ファイルの内容をバイト配列に読み取った後、ファイルを閉じます。

  // ロードしたいファイルのあるローカル内のパスを指定
  string local_url = Application.dataPath + "/StreamingAssets/" + "ダウンロードしたファイルの名前を指定します" + ".png";

  // ファイルをバイト配列に読み取る
  byte[] imgData = File.ReadAllBytes(local_url);


参考サイト
MicroSoft
File.ReadAllBytes
https://docs.microsoft.com/ja-jp/dotnet/api/system...


<ImageConversion.LoadImage メソッド>


 PNG / JPG(またはサポートされている形式)の画像のバイト配列をテクスチャ(Texrue2D 型)にロードします。
引数には画像データのバイト配列と、ピクセルデータの読み込み許可設定を bool 型(初期値は false)を指定します。

  // バイト配列の情報をテクスチャに変換
  texture.LoadImage(imgData, false);


参考サイト
Unity公式スクリプトリファレンス
ImageConversion.LoadImage
https://docs.unity3d.com/ja/current/ScriptReferenc...


<Sprite.Create メソッド>


 テクスチャを元に、新しい Sprite を作成するメソッドです。引数のオーバーロードが複数用意されています。

 // テクスチャを元に Sprite を新規作成。サイズと Pivot を指定
  sprite = Sprite.Create(texture, new Rect(0.0f, 0.0f, texture.width, texture.height), new Vector2(0.5f, 0.5f));


参考サイト
Unity公式スクリプトリファレンス
Sprite.Create
https://docs.unity3d.com/jp/current/ScriptReferenc...



 以上になります。

 ゲームを実行して確認を行ってください。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu



技術/知識(実装例)

2Dおはじきゲーム(発展編)

2D強制横スクロールアクション(発展編)

3Dダイビングアクション(発展編)

2Dタップシューティング(拡張編)

レースゲーム(抜粋)

2D放置ゲーム(発展編)

3Dレールガンシューティング(応用編)

3D脱出ゲーム(抜粋)

2Dリアルタイムストラテジー

2Dトップビューアドベンチャー(宴アセット使用)

3Dタップアクション(NavMeshAgent 使用)

2Dトップビューアクション(カエルの為に〜、ボコスカウォーズ風)

VideoPlayer イベント連動の実装例

VideoPlayer リスト内からムービー再生の実装例(発展)

AR 画像付きオブジェクト生成の実装例

AR リスト内から生成の実装例(発展)

private



このサイト内の作品はユニティちゃんライセンス条項の元に提供されています。

管理人/副管理人のみ編集できます