Unity

Unity 2017.X + Android で異常にファイルロードが遅い場合の解決法

More than 1 year has passed since last update.


Androidでモデルロードが異常に遅いのはなぜだぜ

Unity2017.4.3でAndroidビルドしたらResources.Loadが異常に重い。確かに50MBとか大きいファイルではあるけども、1つのファイルロードに14秒とかいくらなんでも酷すぎる。ましてやGalaxy S9 という最新機種でだ。さらにiOSでは1秒ぐらいで済むのにだ。

というわけで調べてみた


Unity 2017 の新ビルドオプション「Compression Method」

どうやら2017からビルドオプションに「Compression Method」というのが増えて、デフォルトで「Default」というのになっている。これがロードの遅さの原因のようだ。

これを「LZ4」にすると超速になる。iOSと同様、1秒ぐらいのロードに短縮された。

スクリーンショット_2018-05-31_23_38_04.png

わかってしまえばどうということないのだが、なぜデフォルトでLZ4オプションではないのかは不明だ。


「Compression Method」とは

該当のスクリプトリファレンスによると、このオプションで圧縮されるデータというのは以下のものを指す。


  1. Player settings

  2. シーンファイルや.assetファイル

  3. Resourcesの中身のファイル

  4. GIデータ

  5. ビルトイン済みのリソースファイル

ってこれ、AssetBundle以外の全てって言っていいんじゃないだろうか?

さらにドキュメントでは


Enabling CompressWithLz4 in Android might be a significant performance boost when loading data as LZ4 decompression is faster than the default Zip decompression.


とあり、意訳すると


特にAndroidでのCompressWithLz4は超絶ブーストがかかるぜ。デフォルトのZipよりも断然早いぜ


とのこと。(そこまでいうならなぜデフォルトをLZ4にしないw)

ということで、Androidでロードが遅い問題にぶつかったら真っ先にチェックしてみよう。