Unityでゲームをビルドすると実行に必要なファイルが生成されますが、そのファイルサイズを見て「え? 私のファイル……デカすぎ?」と思ったことはありませんか? KuroMikanはあります。
ファイルサイズが大きいと何が困るの?って話ですが、まずPCやスマホの保存容量を消費します。
次にスマホアプリの場合、ダウンロード数に影響します。App Storeでは150MBを超えるゲームをダウンロードしようとすると警告ダイアログが表示されてしまうからです。
また、🔍Segmetが行った調査によれば、アプリの機能などには変化を加えず、アプリサイズだけを元々の3MBから徐々に150MBへと上げていき、DL数に影響があるのかを調べるテストを行った結果、最大66%もコンバージョンレート(大雑把にインストール率)が低下したということです。
というわけで、今回はUnityでファイル容量を削減する方法をいくつかご紹介します。
ファイルサイズのダイエット方法
肥満の原因を知る
肥満の原因は殆どの場合「画像」と「音声」です。これらがビルドの中でどれだけの容量を専有しているかを調べる方法があります。
Unityはビルドが成功すると「Build Report」を生成しますので、これを確認しましょう。
1) ビルドを成功させる
2) Consoleウィンドウ右上のボタンをクリック
3) Open Editor Log を選択
このEditor.logの中に各リソース毎の合計容量が記載されています。
この情報はビルド成功後でないと見れませんので、必ずビルドを成功させてから閲覧してください。(ビルドが通らない人はまずビルドを通すことに専念しましょう!)
Build Report
Uncompressed usage by category (Percentages based on user generated assets only):
Textures 294.5 mb 88.0%
Meshes 20.5 mb 6.1%
Animations 527.8 kb 0.2%
Sounds 56.6 kb 0.0%
Shaders 5.1 mb 1.5%
Other Assets 7.8 mb 2.3%
Levels 1.3 mb 0.4%
Scripts 634.7 kb 0.2%
Included DLLs 3.9 mb 1.2%
File headers 366.4 kb 0.1%
Total User Assets 334.6 mb 100.0%
Complete build size 951.3 mb
このログは開発中の「勝手にクエスト」のものですが、Textures(画像)が肥満の原因であることがこれでわかりますね。
なお、一番太っていたテクスチャは……
23.7 mb 2.5% Packages/com.unity.postprocessing/PostProcessing/Textures/Lens Dirt/LensDirt00.png
Post Processのレンズダート(カメラレンズを汚したような効果を出すためのテクスチャ)でした。
画像ファイルのサイズを減らす
画像ファイルはInspectorからファイルサイズを減らすことができます。
一番ダイエットに効果的な反面、見た目にもダイレクトに影響しますので、いい塩梅を探りたいところです。
Max Size | 画像の縦横サイズの最大値です。デフォルト2048 小さく表示しても問題ない画像のSizeを下げることで効果的にファイルサイズを削減することが出来ます。大本命。 |
Compression | 画像の圧縮設定です。デフォルトNormal Quality Lowにするとファイルサイズが減りますが、画質はハッキリ見てわかるほどに劣化します。 超高圧縮のJpeg画像みたいにモアレができますので、多用はおすすめしません。 |
Use Crunch Compression | スライダーで圧縮率を調整できるCrunch圧縮を利用するチェックです。 スライダーを調整していい塩梅を探ることができます。 |
なお、Atlas化したAssetを圧縮すると2重で圧縮されることになり、画質がさらに劣化します。その上ファイルサイズは小さくなりません。Atlas化したAssetの場合は、Atlas側で圧縮するようにしましょう。
(Atlas化の説明は今回は省きます。需要があればいつか書きます)
音声ファイルのサイズを減らす
SEやBGMなどの音声ファイルもInspectorからファイルサイズを減らすことが出来ます。
Audio Clip の Quality の値を下げることでファイルを圧縮することができます。
これは短いSEにはほとんど効果が無く、BGMなどの長めの音声ファイルに効果を発揮します。
もうひとつの方法として、ミドルウェア「CRI ADX2 LE」を利用することです。
キューシートという形式でサウンドファイルをまとめることができ、さらにいい塩梅に圧縮しておいてくれます。
このAssetは個人開発の範疇でなら無料で利用することが出来ますのでおすすめです。
導入のための記事もありますので、興味があればどうぞ。
Resourcesフォルダの中身を減らす
とっても便利なResourcesフォルダですが、このフォルダの中身は問答無用で全てビルドに含まれます。
また、このフォルダ内に置かれたPrefabファイルは、その中で使用しているAssetも全てビルド対象になりますので、何でもかんでもResourcesにPrefabを置くのはやめましょう。
不要なシーンをビルド対象から外す
Build Settingsを確認し、Scene in Buildに不要なシーンがあれば外します。
デバッグ用シーンなどをビルド対象にしていた場合、これもビルドに含まれてしまいますので、必ずビルド対象から外しておきましょう。
AssetBundleを使う
でたー、KuroMikanが苦手なやつ。
これは任意のAssetを Asset Bundle というファイルに分離させることが可能な機能です。
分離したAsset Bundleをサーバー上に配置しておき、ゲーム中にダウンロードして使うことができます。
KuroMikanはまだこの領域に達していないので、詳しく解説しているブログへどうぞ……。
以上になります。
基本的には画像のMax Sizeの見直しや圧縮設定をすることでダイエットが可能だと思います。
是非お試しください!