Unity 2020.1 ベータ版で更新された BuildReport API は、プロジェクトのビルド時間に関する情報をより詳細に、アセットレベルまで分析して提供します。この情報はイテレーション時間の最適化に役立ちます。
Unity マニュアルの BuildOptions.DetailedBuildReport に関するページでこの新しい API の使用方法をご確認の上、Build Report Inspector をプロジェクトに追加すれば、新しいビルドレポートを簡単に調査していただけるようになります。
大量のコンテンツを含むプロジェクトのビルド時間は非常に長くなる場合があります。結果として、特に複数のプラットフォームでテストを行う場合には、イテレーションに掛かる時間も伸長します。
Unity 2018.1 では、Unity のビルドプロセスに関する情報を提供する BuildReport API が公開されました。以来、BuildPipeline.BuildPlayer によって戻された BuildReport オブジェクトには、ビルドプロセス中に実行されているステップに関する情報や、どのアセットがビルドサイズに寄与しているか、またどのエンジンモジュールがビルドに含まれているかの情報が含まれるようになっています。
Unity 2020.1 では、新しい BuildOptions.DetailedBuildReport オプションを API 関数 BuildPipeline.BuildPlayer に渡せば、BuildReport オブジェクト内でより多くの情報(より詳細なビルドステップ、どのシーンがビルド内のアセットを使用しているかの概要など)が入手可能になります。
BuildReport API は、プロジェクトのビルド時間を分析するカスタムツールの記述を可能にします。
この使用方法を学ぶひとつの方法は、Unity の提供する Build Report Inspector を参照することです。
Build Report Inspector は、Unity のパッケージマネージャーウィンドウから追加できます。Advanced メニュー内にある Show Preview Packages にチェックマークを入れて、リスト内で Build Report Inspector を選択し、「Install」ボタンをクリックしてください。
こちらの GitHub レポジトリから、Build Report Inspector スクリプト(将来的な実験版も含む)もご入手いただけるほか、改良に関するご意見もお寄せいただけます。
Build Report Inspector は、コマンドメニュー Open Last Build Report を Window メニューに追加します。コマンドメニュー Open Last Build Report をクリックすると、最も最近のビルド中にプロジェクトから検知可能な場所に生成されたビルドレポートファイルがコピーされ、それが選択されます。これによってそのコンテンツがインスペクター内で以下のように表示されるようになります。
BuildOptions.DetailedBuildReport オプションを使用してビルドすると、新しいビルドステップが BuildReport.steps 内にリストアップされます。
1 ミリ秒よりも短いビルドステップは(ノイズを多く発生させるため)リストに含められません。
新しくレポートされるステップには以下が含まれます。
Unity マニュアルの BuildOptions.DetailedBuildReport のページに、このオプションの使用方法を示すエディタースクリプトの例が掲載されています。
この例を以下のように修正し、BuildOptions.DetailedBuildReport フラグを使用して BoatAttack プロジェクトをビルドすることができます。
using UnityEditor; using UnityEngine; public class DetailedBuildReportExample : MonoBehaviour { [MenuItem("Build/DetailedBuildReport example")] public static void MyBuild() { BuildPlayerOptions buildPlayerOptions = new BuildPlayerOptions(); buildPlayerOptions.scenes = new[] { "Assets/scenes/MainMenu.unity", "Assets/scenes/_levels/level_Island.unity" }; buildPlayerOptions.locationPathName = "DetailedReportBuild/MyGame.exe"; buildPlayerOptions.target = BuildTarget.StandaloneWindows64; buildPlayerOptions.options = BuildOptions.DetailedBuildReport; var buildReport = BuildPipeline.BuildPlayer(buildPlayerOptions); } }
上記のスクリプトを Boat Attack プロジェクトの Assets/Editor フォルダーに追加し、エディターのメニューで Build/DetailedBuildReport サンプルをクリックすると、プロジェクトのビルドが開始されます。ビルドの終了時に、ビルドレポートに追加的なデータが含められます。
ここで前項の説明通りに Window/Open Last Build Report コマンドを使用すると、以下のように、追加的なステップがレポートに含められていることが確認できます。
この追加的な情報によって、プロジェクトのビルドに当たって時間の掛かるステップとアセットを特定することが可能となります。
時間の掛かるアセットが特定できたら、それらをより軽量な「開発」版に差し替えることで、イテレーション時間を短縮することができます。
重いアセットを差し替えるプロセスでは、特定のアセットがビルド中のどのシーンに含まれるのかを正確に把握することが往々にして役立ちます。
ビルド中に BuildOptions.DetailedBuildReport オプションが使用された場合、この情報は BuildReport 内でメンバー BuildReport.scenesUsingAssets として使用可能になります。
プロジェクトに Build Report Inspector を追加した場合は、ScenesUsingAssets タブからこの情報を確認できます。
開発中には、こうしたアセットをより小さなものに差し替えたり、それらを参照しているシーンなしでビルドプロファイルを作成すると、イテレーション時間の短縮に繋がります。
Detailed Build Report を使用して、プロジェクトのビルド時間に寄与している要素を特定し、その情報を使用してイテレーションループを最適化しましょう。Unity 2020.1 ベータ版 で本機能をご試用の上、ぜひご意見をお聞かせください。4 月 20 日米国太平洋標準時 午前 9 時(日本時間 21 日 午前 2 時)から、Unity 2020.1 ベータ版に関するウェビナーを開催し、新機能のご案内と更新情報をお届けします。ウェビナーへの参加登録はこちらから行っていただけます。本機能あるいはバージョン 2020.1 の他の機能に関してご不明な点がある方のために、2020.1 ベータ版についてのウェビナー後に Q&A セッションも行います。フォーラムからご質問をご投稿ください。(※ウェビナーは終了しましたが、オンデマンドでご視聴いただけます。)
Is this article helpful for you?
Thank you for your feedback!