Unityで作成したScene(シーン)をスマートフォン向けに最適化させる方法をまとめました。
はじめに
この記事を書いている2024年2月2日現在、Google Playにてゲームアプリを公開するにはアップロードする「.aab」ファイルが150MB以下でなければなりません。150MBを超える場合でもPADなどの方法であればGoogle Play上でアプリを公開することが可能ですが、そもそもアプリそのものをスマートフォンに最適化させておくに越したことはありません。この記事では、シーンのスマートフォン最適化についてまとめました。
「.apk」「.aab」ファイルなどのビルドファイルが大きくなる原因
たいてい、開発したゲームの容量を食っているのは「テクスチャ」が原因です。この「テクスチャ」の解像度を調整することでゲームの容量を下げることができます。
実際にどのファイルがゲームをビルドした際に大きい容量を占めているか調べるには下記の方法で行います。
- シーンをビルドする
- Console > Open Editor Logを開く
- Ctrl+Fで「Build Report」を検索
- Build Reportを確認する
Build Reportでは下記のような情報が確認できるはずです。
-------------------------------------------------------------------------------
Build Report
Uncompressed usage by category (Percentages based on user generated assets only):
Textures 2.8 mb 46.2%
Meshes 1.7 mb 28.6%
Animations 728.3 kb 11.7%
Sounds 0.0 kb 0.0%
Shaders 163.7 kb 2.6%
Other Assets 587.4 kb 9.4%
Levels 0.0 kb 0.0%
Scripts 39.8 kb 0.6%
Included DLLs 0.0 kb 0.0%
File headers 52.8 kb 0.8%
Total User Assets 6.1 mb 100.0%
Complete build size 6.6 mb
このケースでは、テクスチャが2.8MBで、全体の46.2%を占めていることが確認できます。
テクスチャの容量を小さくする
どのファイルが容量を食っているのか分かったので、テクスチャの容量を小さくします。テクスチャの容量を下げるには、テクスチャの解像度を調整します。
- テクスチャフォルダのテクスチャをすべて選択し、解像度を調整する
- シーン上のオブジェクトを選び、対象のテクスチャの解像度を調整する
おすすめの調整方法は、Generate Mip Mapのチェックを外し、Max Sizeを256程度まで下げることです。調整が終わったら右下のApplyボタンを押下して設定を反映します。
Max Sizeが64程度になるとかなりグラフィックが抽象的なものになります。オブジェクトに合わせて解像度を最適化させましょう。スマートフォンの場合、画面が6.1インチであるなど、とにかく小さいので、オブジェクトによっては解像度が4096と256であっても違いはそれほどわかりにくいこともあります。4096から256まで解像度を下げるとビルドした際のファイルの容量はかなり小さくなります。
どこまでテクスチャの解像度を下げるか
テクスチャの解像度をどこまで下げるかですが、ビルドしたファイルの容量を削減させることが目的であるのはさることながら、ゲームの世界観を壊してまでテクスチャの解像度を下げてしまっては意味がありません。見た目に影響がそれほどない程度にまで解像度をさげるのがおすすめです。
テクスチャの解像度の調整は、実際にテクスチャの解像度調整してビルドして実機で状態を確認する以外に方法はありません。
Meshを最適化する
テクスチャの次に容量が大きいのが3Dグラフィックのメッシュです。メッシュは3Dのオブジェクトが実際にどんな形をしているのかを示した情報です。
Meshのポリゴン数を下げることで、ビルドした際の容量を減らすことが可能です。
【Unityアセット】Mesh Optimizerで3Dモデルのポリゴン数を下げてシーンを軽くする! | STYLY
シーン上のオブジェクトが複数あることはビルドしたファイルに影響がない
.aab、.apkファイルは、シーン上に紐づけられているテクスチャやアニメーション、メッシュなどに影響されます。同じオブジェクトがシーン上に複数あっても、ビルドしたファイルの容量には影響を与えません。具体的には、椅子が一つのシーンと同じ椅子が5つ複製されているシーンをビルドした場合のファイル容量は同じになります(参照しているテクスチャが同じであるため)。代わりに、1種類の椅子しかないシーンと、すべてテクスチャ、メッシュが異なる5種類の椅子があるシーンであればビルドした.aab、.apkファイル容量に差が出ます。
その他にスマホに最適化させる方法
本記事以外でスマートフォン向けに最適化する方法をまとめている記事を紹介します。
Unityでシーンの容量を削減する方法(モデル編) – STYLY
Unityでシーンの容量を削減する方法(アニメーション編)- STYLY
Unityでシーンの容量を削減する方法 (テクスチャ編)- STYLY
Unityでシーンの容量を削減する方法 (容量順ソート編)- STYLY
まとめ
Unityで作成したゲーム(シーン)をスマートフォンに最適化させる方法をまとめました。基本的にはテクスチャの解像度を調整することでビルドしたファイルの容量をスマートフォンに最適化させることが可能です。テクスチャ以外にもメッシュやアニメーションの調整を行います。