Unityプロジェクトをあらゆる観点から静的解析してくれる公式ツール『Project Auditor』の使い方をまとめました
Unity 2021.3.0f1
Project Auditor 0.8.1-preview
はじめに
Project Auditor を使うと Unity プロジェクトを精的解析し、パフォーマンスなどの観点で問題のあるコードやリソース、設定項目を洗い出すことができます。
Unityプロジェクトをあらゆる観点から静的解析してくれる公式ツール『Project Auditor』
— Haruki Yano / Haruma-K (@harumak_11) 2022年7月1日
多すぎて忘れがちなSettings項目を警告してくれたり、各アセンブリのコンパイル時間が見れたり、シェーダバリアントの数が見れたりと一旦全ブロジェクトで実行した方がいいくらいに便利!https://t.co/sqEHkOPbPl pic.twitter.com/RpWFYw2Scj
開発は Unity 社員により Unity-Technologies のリポジトリで行われていますが、現状は公式サポートはされていないかつ Preview 版のライブラリとなります。
本記事ではこのツールの使い方についてまとめます。
前述の通りまだ Preview 版なので仕様は執筆時点と変わる可能性があるのでご注意ください。
インストール
Project Auditor は PackageManager からのインストールが推奨されています。
Window > Package Manager > +ボタン を押下後、以下を入力することでインストールできます。
- https://github.com/Unity-Technologies/ProjectAuditor.git#0.8.1-preview
- 末尾のバージョンについては適宜変えてください
基本的な使い方
解析実行フロー
解析を実行するにはまず Window > Analysis > Project Auditor からウィンドウを開きます。
ウィンドウが開いたら、右下の Analyze ボタンを押下します。
プロジェクトの規模によっては処理に時間がかかるので注意してください。
解析が終わると、以下のようにサマリーが表示されます。
左上から、各解析項目のページに切り替えることができます。
各項目の説明については後述します。
ビルドレポートを見る場合
さて、大体の項目については上記の手順で解析が行えますが、ビルドに関する解析であるBuild Reportについては、解析実行前に手順が必要です。
まず Assets/Editor/ProjectAuditorConfig.asset の Inspector から Save Build Reports にチェックを入れます。
この状態で、一度ビルドを実行します。
ビルドを実行すると Assets/BuildReports 内に BuildReport ファイルが生成されます。
この状態でもう一度 Project Auditor の Analyze ボタンを押下することで、Build Report が表示されるようになります。
Build Report の解析結果の見方は後述します。
スクリプトから実行する
以下のように、スクリプトから解析を実行することもできます。
using System.Linq; using Unity.ProjectAuditor.Editor; using UnityEditor; using UnityEngine; public static class Example { public static void Audit() { var configAssetPath = AssetDatabase.FindAssets($"t: {nameof(ProjectAuditorConfig)}") .Select(AssetDatabase.GUIDToAssetPath) .FirstOrDefault(); var projectAuditor = new ProjectAuditor(configAssetPath); var projectReport = projectAuditor.Audit(); var codeIssues = projectReport.GetIssues(IssueCategory.Code); Debug.Log(codeIssues.Count); } }
各解析項目の説明
この節では各解析項目の説明を行います。
現状Preview版なので、項目については大きく変わる可能性がありそうです。
また、現状Experimentalな機能には一旦触れません。
Code > Diagnostics
スクリプティング上の問題を解析します。
ホットパス(Update
のような頻繁に呼ばれる部分)に問題がある場合、Critical カラムにマークが表示されます。
以下は OnWillRenderObject
で Renderer.sharedMaterials
を呼んでしまっておりアロケーションしているので、代わりに Renderer.GetSharedMaterials()
を呼ぶように警告されています。
誤検知された項目はミュートすることで次回の解析からは省かれます。
Code > Assemblies
アセンブリごとのコンパイル時間や依存関係を見ることができます。
Code > C# Compiler Messages
コンパイラのメッセージを見ることができます。
Assets > Resources
Resources フォルダに含まれるアセットを一覧表示できます。
Assets > Shaders
プロジェクト内のシェーダの情報を見ることができます。
ビルドレポートが存在していればバリアントの数なども見れます。
Assets > Shader Variants
ビルドされたシェーダバリアントの情報を見ることができます。
Settings > Diagnostics
Project Settings や Player Settings の設定項目のうち、問題がありそうな点を解析してくれます。
Unity は設定項目が多くて重要な設定を忘れがちですが、それらを検知してくれるのに加えて Details や Recommendation 詳細を説明してくれるのでとても便利です。
Build Report > Steps
ビルド時の各ステップにかかった時間やビルド中の警告について見ることができます。
Build Report > Size
ビルドのバイナリサイズの内訳を見ることができます。