はじめに
Unity2021.3あたり?からインクリメントビルドが導入されました。
開発中のイテレーションを高速化するために、Unity はインクリメンタルな (増分) ビルドパイプラインを使用しており、アプリケーションの一部が前回のビルド以降に変更された場合のみ再ビルドされます。これには、アセットシリアライゼーション、コードコンパイル、データ圧縮、署名などのビルドステップが含まれます。
しかし以下のような場合においては問題になってしまいます。
一般に、インクリメンタルビルド後に期待した変更がなく、インクリメンタルビルドパイプラインに問題があると考えられる場合は、クリーンビルドを作成します。この問題の最も一般的な理由は、アセットに影響を与えるビルドプロセスのコールバックの実装または変更によるものです。
その対処法として今までのビルドによって生成されたキャッシュを削除する方法を二つ紹介します。
やり方
Build Settingsを利用する場合
Build Settings
のBuild
のポップアップメニューからClean Build...
を選択します。
BuildPipeline.BuildPlayerを利用する場合
BuildPipeline.BuildPlayer
を実行する際、BuildOptions.CleanBuildCache
を指定してあげます。
[MenuItem("Tools/Build StandaloneOSX")] public static void Build() { // locationPathName : 保存先のパス(プロジェクトフォルダからの相対パス) // options : BuildOptions.CleanBuildCacheを指定することで「キャッシュを削除して」ビルドできる // scenes : ビルドに含めるシーンのプロジェクトフォルダからの相対パス(空の場合、現在開いているシーン) // target : どのプラットフォームか var options = new BuildPlayerOptions() { locationPathName = "Build/App.exe", options = BuildOptions.CleanBuildCache, scenes = EditorBuildSettings.scenes.Select(x => x.path).ToArray(), target = BuildTarget.StandaloneOSX, }; var buildReport = BuildPipeline.BuildPlayer(options); if (buildReport.summary.result == BuildResult.Succeeded) { Debug.Log($"Build Succeeded. : {buildReport.summary.outputPath}"); } else { Debug.Log("Build Failed."); } }