Unity の Asset Bundle Browser ツール
ソーシャル API

ファイルサイズの削減

Keeping the file size of the built app to a minimum is important, especially for mobile devices or for app stores that impose a size limit. The first step in reducing the size is to determine which Assets contribute most to it, because these Assets are the most likely candidates for optimization. This information is available in the Editor Log just after you have performed the build. Go to the Console window (menu: Window > General > Console), click the small drop-down panel in the top right, and select Open Editor Log.

ビルド直後のエディターログ
ビルド直後のエディターログ

タイプによってアセット項目ごとに分類されたログが提供され、サイズに貢献するための個々のアセットの全リストを表示します。一般的にスクリプト、レベルやシェーダーはしばしば無視できますが、テクスチャ・音楽・ビデオ等が、最もストレージを占有します。File Headers について少し触れておくと項目としてはアセットではありません。ヘッダーは、実際は特別なデータで“生”アセットファイルを保存するための参照と設定です。ヘッダーは、通常アセットのサイズにほとんど違いを与えませんが、Resources フォルダー内に多数の大規模アセットがある場合は、値が大きくなる可能性があります。

ログは自身のアセット内で削除や最適化したいときに役立ちますが、利用する前によく考える必要があります。

  • Unity は、インポートしたアセットを独自の内部フォーマットに変換するため、ソースアセットの種類はさほど関係ありません。例えば、プロジェクトでマルチレイヤーの Photoshop のテクスチャがある場合、ビルドされる前に平坦化され、圧縮されます。テクスチャをPNG ファイルとしてエクスポートしてもビルドサイズに違いはありません。ですから、開発時に最も便利なフォーマットにするべきです。

  • Unity は、ビルド中に使用していないアセットを省くので、プロジェクトからアセットを手動で削除する必要はありません。削除されない唯一のアセットは、スクリプト (一般的にかなり小さい) と Resources フォルダー内のアセットです (Unity 側でどれが必要か判断することができないからです)。これを踏まえて、Resources フォルダー内のアセットは本当にゲームに必要とするものだけを含めているか確認する必要があります。Resources フォルダのアセットをアセットbanndoru で置き換えることも可能ですーつまり、Unity はアセットを動的に読み込み、そうすることによって、プレイヤーサイズを削減します。

ビルドサイズを削減するための提案

テクスチャ

通常、テクスチャはビルドサイズのうち、ほぼ大部分を消費します。まず最初に、圧縮テクスチャ形式を使用できるかどうかを確認してください。詳細は、 platform-specific Texture compression を参照してください。

圧縮形式を使用してもサイズが減らない場合は、テクスチャの大きさ (ピクセル) を減らしてみてください。実際のソースのコンテンツを編集することなくこれを行うには、プロジェクトビューでテクスチャを選択し、インスペクターウインドウで Max Size を小さくします。これがゲーム内でどのように表示されるかを確認するには、シーンビュー でテクスチャを使用するオブジェクトを拡大し、それから、シーンビューで見た目が悪くなり始めるまで、Max Size を調整します。テクスチャの最大サイズを変更してもテクスチャアセットには影響せず、ゲームの解像度に影響するだけです。

テクスチャの最大サイズを変更してもテクスチャアセットには影響せず、ゲームの解像度に影響するだけです
テクスチャの最大サイズを変更してもテクスチャアセットには影響せず、ゲームの解像度に影響するだけです

デフォルトでは、Unity はインポート時にすべてのテクスチャを圧縮します。ワークフローをより高速にするため、 Unity < Preferences の順に選択し、 Compress Assets on Import のチェックボックスをオフにします。この設定にかかわらず、すべてのテクスチャはビルド内で圧縮されます。

メッシュおよびアニメーション

ゲームファイルでの使用スペースを減らすよう、 メッシュ およびインポートされたアニメーションクリップを圧縮できます。メッシュの圧縮を行うには、圧縮したいメッシュを選び、それから、インスペクターウインドウで Mesh CompressionLowMediumHigh のいずれかにします。メッシュとアニメーションの圧縮は、少ないスペースしか取りませんが圧縮は不精密なデータになることに注意してください。あなたのモデルで許容できる圧縮レベルを試してみてください。

メッシュ圧縮は小さいデータファイルを生成するだけで、ランタイムで使用するメモリは少なくならないことに注意してください。アニメーションの Keyframe Reduction を使うと、データファイルを縮小し、ランタイムで使用するメモリも減ります。一般に、常に Keyframe Reduction を有効にしておくとよいでしょう。詳しくは アニメーションクリップ を参照してください。

Reducing .NET library size

Unity supports two .NET API compatibility levels.: .NET 4.x and .NET Standard 2.0. The .NET Standard 2.0 restricts you to a smaller subset of the .NET API, which can help keep size down.

Unity の Asset Bundle Browser ツール
ソーシャル API