分布サイズとコードストリッピング
Reduce the size of Web builds and remove unused code.
読み終わるまでの所要時間 11 分最終更新 1ヶ月前
ウェブ用にパブリッシュする場合は、コンテンツの開始前のダウンロード時間を妥当なものにするために、ビルドサイズを小さく抑えることが重要です。アセットサイズを縮小するための一般的なヒントについては、ビルドのファイルサイズの削減を参照してください。
ウェブに特有のヒントとコツ
-
テクスチャインポーターですべての圧縮テクスチャに対して Crunch テクスチャ圧縮形式を指定します。
-
開発ビルドをデプロイしないでください。開発ビルドは圧縮も縮小もされず、ファイルサイズが大幅に増加します。
-
ビルドで例外を必要としない場合は、Player ウィンドウで (Edit > Project Settings > Web をクリック)、Publishing Settings を開いて、Enable Exceptions を None に設定します。
-
Player settings > Other Settings パネルで Strip Engine Code を有効にして、効率的なビルドを行います。
-
サードパーティのマネージ DLL を使用する場合は、生成されるコードサイズが増加する原因となる依存関係を伴う場合がある点に留意してください。
リリースビルドを作成する場合、Unity はウェブ Player 設定の Publishing Settings で選択された Compression Format に従ってビルド出力ファイルを圧縮します。

圧縮ビルドの公開方法の詳細については、圧縮ビルドのデプロイを参照してください。
コードのストリッピング
Unity はデフォルトで、ビルドからすべての未使用コードを削除します。これは Player 設定から変更できます (メニュー: Edit > Project Settings に移動し、Player カテゴリを選択)。Strip Engine Code オプションにアクセスするには Other Settings パネルを選択します。ストリッピングを有効にしてビルドすることをお勧めします。
コードストリップを使用すると、Unity は使用されている (スクリプトコード内、または、シーン内のシリアル化されたデータ内で参照されている) 派生クラスがないかプロジェクトをスキャンします。次に、どのクラスも使用されていない Unity のサブシステムをビルドから削除します。これにより、ビルドのコード数が削減され、ダウンロードが少なくなり、パースするコードも減少します (したがって、コードの実行速度が速くなり、メモリの使用量も少なくなります)。
UnityObjectコードストリップの問題
コードストリッピングについては、プロジェクトで実際に必要なコードがストリッピングされると問題が発生する可能性があります。これはメインビルドに含まれていないクラスを使用している AssetBundle を実行時に読み込んでしまい、それらがプロジェクトから取り除かれているために起こります。これが発生すると、ブラウザーの JavaScript コンソールにエラーメッセージが表示されます (さらにエラーが発生する場合もあります)。 例:
Could not produce class with ID XXXこれらのエラーをトラブルシューティングするには、クラス ID リファレンス で ID (上記の例では ) を調べて、どのクラスのインスタンスを作成しようとしているかを確認します。そのような場合は、クラスへの参照をスクリプトかシーンに追加するか、 ファイルをプロジェクトに追加することによって、クラスのコードを強制的にビルドに追加できます。
XXXlink.xml以下に示すのは、Collider クラス (および Physics モジュール) がプロジェクト内で保持されるようにする例です。この XML コードを というファイルに追加し、そのファイルを Assets フォルダーに配置します。
link.xml<linker> <assembly fullname="UnityEngine"> <type fullname="UnityEngine.Collider" preserve="all"/> </assembly></linker>
ストリップがビルドの問題を引き起こしていることが疑われる場合は、テスト中に Strip Engine Code オプションを無効にすることも可能です。
Unity には、適切なストリップを行うようプロジェクトを最適化するために、ビルドに含まれるモジュールやクラスを確認する便利な方法がありません。ただし、含まれているクラスとモジュールの概要を確認するには、ビルドを実施した後に生成されるファイル を調べます。
Temp/StagingArea/Data/il2cppOutput/UnityClassRegistration.cppStrip Engine Code オプションは Unity エンジンコードにのみ影響します。IL2CPP は常にマネージ DLL とスクリプトからバイトコードを除去します。このことは、コードの静的参照を通してではなく、リフレクションを通して動的にマネージ型を参照する必要がある場合に問題を引き起こす可能性があります。リフレクションを通して型にアクセスする必要がある場合は、それらの型を保持するために ファイルを設定する必要もあります。 ファイルの詳細については、iOS ビルドサイズ最適化に関するドキュメントページを参照してください。
link.xmllink.xmlビルド出力ファイルの移動
BuildBuilddataUrlwasmCodeUrlwasmMemoryUrlwasmFrameworkUrlコンテンツ配信ネットワーク (CDN) でファイルをホストする場合は、これらに外部サーバーの URL を指定できますが、これを行うためには、ホスティングサーバーでオリジン間リソース共有 (CORS) が有効になっている必要があります。CORS の詳細については、ウェブネットワーキングのマニュアルページを参照してください。
インクリメンタルビルド
IL2CPP によってプロジェクト用に生成された C++ コードは増分によりコンパイルされます。つまり、最後のビルド以降に変更された C++ コードのみが再度コンパイルされます。変更のないソースコードは以前のビルドで作成された同じオブジェクトファイルを再使用します。増加による C++ ビルドに使用されるオブジェクトファイルは、Unity プロジェクトの ディレクトリに保存されます。
Library/il2cpp_cacheインクリメンタルコンパイルを使用しないで、生成された C ++ コードをゼロからクリーンにビルドするには、Unity プロジェクトの ディレクトリを削除します。Unity エディターのバージョンが以前のウェブビルドで使用されていたものと異なる場合、Unity は自動的にゼロからクリーンなビルドを行います。
Library/il2cpp_cache