インクリメンタルビルドパイプライン
Understand how Unity's incremental build pipeline rebuilds only changed parts of your application for faster iteration.
読み終わるまでの所要時間 8 分最終更新 1ヶ月前
開発中のイテレーションを高速化するために、Unity はインクリメンタルな (増分) ビルドパイプラインを使用しており、前回ビルドが行われた (プロジェクトの ディレクトリに直接保存された) 後にアプリケーションが変更された場合、変更があった部分だけがリビルドされます。これには、アセットシリアライゼーション、コードコンパイル、データ圧縮、署名などのビルドステップが含まれます。
Library/Beeこの設定には、さまざまなプロジェクト間でビルドの特定の部分 (埋め込まれていないパッケージや libIL2CPP アーティファクトなど) を再利用するローカルキャッシュがあります。このキャッシュの場所は 環境変数を使用して設定され、使用する OS によって異なる場所がデフォルトで設定されます。
BEE_CACHE_DIRECTORY- Windows では のデフォルトは
BEE_CACHE_DIRECTORYです。%USERPROFILE%\AppData\Local\Unity\Caches\bee - Mac では のデフォルトは
BEE_CACHE_DIRECTORYです。$HOME/Library/Unity/cache/bee - Linux では のデフォルトは
BEE_CACHE_DIRECTORY($XDG_CONFIG_HOME/.cache/unity3d/beeが設定されている場合) 、または$XDG_CONFIG_HOMEです。$HOME/.cache/unity3d/bee
インクリメンタルビルドパイプラインでは、Scripts Only Build 機能も自動化されます。そのため、インクリメンタルビルドを使用しないプラットフォームでは、Scripts Only Build は Build Profiles ウィンドウでのみ利用可能です。
インクリメンタルビルドパイプラインは、Mono と IL2CPP スクリプティングバックエンドの両方で動作します。ただし、出力ファイルの構造は、プロジェクトがどちらのスクリプトバックエンドを使用するかによって変わります。
デフォルトでは、Unity はリリース用と開発用の両方のビルドにインクリメンタルビルドパイプラインを使用します。キャッシュが破損している場合に役立つクリーンビルドの作成方法については、後述の非インクリメンタルビルドの作成セクションを参照してください。
プラットフォームの互換性
Unity は以下のプラットフォームに対して、インクリメンタルビルドパイプラインをサポートします。
- スタンドアロン (Windows、Mac、Linux)
- Web
- Xbox One
- Xbox Series X と Xbox Series S
- Android
- iOS
- tvOS
非インクリメンタルビルドの作成
あるシナリオでは、インクリメンタルビルドパイプラインを使用しないビルドを作成することが有用または必要になる場合があります。
インクリメンタルでない、クリーンなビルドを作成するためには、以下を行います。
- Build Profiles ウィンドウを開きます (File > Build Profiles と選択します)。
- Build ボタンの横のドロップダウンを選択します。
- Clean Build を選択します。
一般的に、インクリメンタルビルドの後に思ったとおりの変更が反映されていなくて、インクリメンタルビルドパイプラインに問題があると考えられる場合は、クリーンビルドを作成します。この問題の最も一般的な原因は、アセットに影響を与えるビルドプロセスのコールバックを実装または変更したことです。
ビルドプロセスは、実装したコールバックがアセットにどのように影響を与えるかわからないため、アセットをどのようにリビルドするかを判断できません。Unity は、ファイルの依存関係が変更された場合のみファイルを再生成します。つまり、Unity が生成したファイルをコールバックが変更したけれども、ファイルの依存関係が変更されていない場合、コールバックはすでに変更されているファイルに変更を適用できるということです。例えば、コールバックが Android アプリマニフェストに新しいエントリーを追加して、Android アプリマニフェストの依存関係が変更されていない場合、コールバックは新しいエントリーを追加しますが、無効なファイルが生成されることになります。
コールバックまたはその入力データを変更し、コールバックが影響するアセットを Unity でリビルドしたい場合は、クリーンビルドを作成します。以下もコールバックの例です。
- PostProcessSceneAttribute
- IPreprocessShaders.OnProcessShader
- IPreprocessComputeShaders.OnProcessComputeShader
ノート: アセットに変更を加えると、Unity はアプリケーションをビルドするときにアセットをリビルドします。これには、アセットに影響するコールバックの処理も含まれます。つまり、アセットに変更を加える場合は、ビルドプロセスのコールバックに変更を加える場合に限り、クリーンビルドを作成する必要はありません。