皆さんは StreamingAssets を利用していますか?
私も昔は利用していました。
しかしながら、何故か初回読み込みに関して 1 秒程度かかる問題が
発生して困っていました。
また AssetBundle も結局は
StreamingAssets から読み込むため
遅くなるハズと考えました。
そこで、アプリを起動する度に
StreamingAssets にアクセスしないで済む手段を
考える事にしました。
パターンA : 初回のみ StreamingAssets から読み込んで persistentDataPath に保存しておく手段について
この方式がよく使われていると
昔の記事で読んだことがあります。
確かに persistentDataPath から読み込んだ場合は
私の環境では初回読み込み時に遅くなる現象は
発生しませんでした。
しかしながら
StreamingAssets にあるデータを消せないため
2 重にファイルが存在する事になり
アプリの容量が増えるため
少しだけナンセンスだと思いました。
そのため別の方法を考察する事にしました。
パターンB : 可能な限り初回読み込み時のデータを Google Drive に保存する手段について
ネット環境が必要になりますが
パターンAで StreamingAssets に保存するデータに関して
可能な限り GoogleDrive に保存する方法が
パターンBです。
ユーザーがトータルでダウンロードする容量は変わらないですが
StreamingAssets と違って端末に残らない点が
パターンAより優れています。
また、アプリ自体をダウンロードする際に
容量が少なく見えるためダウンロードの敷居を下げる効果もあります。
初回読み込みのタイミングのみ動作が遅くなる点と
ネット環境が必要な点が良くない点でしょうか。
基本的にメリットの方が上回るため
この方式にしない理由がないと思っています。
初回読み込みの判定について
初回読み込みの判定に関しては
私は VersionCode を起動時に保存するようにしています。
ver1.2.0 の VersionCode は 6 で
ver3.3.2 の VersionCode は 32 などと分かるため
VersionCode が 6 の場合は Google Drive から読み込みが必要で
このデータとこのデータを読み込めば良いと分かります。
VersionCode の key が存在しないならば
全てのリソースを読み込めば OK です。
面倒ならば VersionCode が現在の物より小さい場合は
全てのリソースを読み込み直しても OK です。
以上私なりの StreamingAssets の初回読み込みが遅い問題を
解決する手段について紹介しました。
もしかしたら常識なのかもしれませんが
同じことを言っている記事を見かけないため
記事にしてみました。
もっと良い方法がある場合は
是非ともコメント欄で教えて頂けると幸いです。
ネットで探しても良い解決策が見つからなかったため
「この方法が一般的」というコメントは大変助かります。
是非あなたが持つ情報を皆さんに共有して下さい。
皆さんのコメントが
この問題を皆が解決するきっかけになるかもしれません。
皆さんがこの問題を解決できることを祈っています。
閲覧ありがとうございました。