デフォルトでは、Profiler ウィンドウ には Unity のネイティブコードに関する情報が表示されます。ビルトインプロファイラーマーカー を使用して、収集したパフォーマンスデータが整理および分割されます。
独自のコードにプロファイラーマーカーを追加して、これらの領域で使用されたタイミングを ProfilerMarker API で Profiler ウィンドウに表示できます。
コードにプロファイラーカウンターを追加して、アプリケーションの指標データを収集したり、カスタムプロファイラーモジュール を使用してそのデータを表示したりすることもできます。これは、アプリケーションのパフォーマンスの変化を追跡する場合に役立ちます。コードにプロファイラーカウンターを追加すると、カウンターからの情報を Unity のビルトインカウンターやインストルメンテーションのデータと組み合わせて使用できるため、パフォーマンス問題の調査が迅速化されます。
コードにメタデータ付きのカウンターとマーカーを追加するには、Unity Profiling Core パッケージを使用する必要があります。
重要:Unity Profiling Core パッケージはコアパッケージであるため、Package Manager UI では検出できません。パッケージをインストールするには、com.unity.profiling.core という 名前を使って追加 します。このリンクから インストールすることもできます。
ProfilerMarker API を使用してリソース負荷の高いスクリプトコードブロックをマークアップし、Unity プロファイラーで表示したり、Unity Profiling Core パッケージの ProfilerMarker<TP1> API を使用して、生成する各サンプルに メタデータを追加 したりできます。
ビルトイン Unity プロファイラーはすべてのメソッド呼び出しをプロファイルするわけではないため、これは役に立つ場合があります。詳細プロファイリングを使用 することもできますが、この場合、大きなオーバーヘッドが発生し、アプリケーションの実行速度が大幅に低下し、結果が歪みます。ProfilerMarker を使用すると、コードのマークアップがより効率的になります。
ProfilerMarker は名前付きプロファイラーハンドルを表し、コードをプロファイリングする最も効率的な方法です。アプリケーションの任意の C# コードで使用できます。
プロファイラーマーカーは、Unity が開発以外のビルドにデプロイするときにオーバーヘッドを発生させないため、好きなだけサンプルをマークアップできます。
Unity は Begin メソッドと End メソッドを ConditionalAttribute でマークし、条件付きでコンパイルします。そのため、開発以外のビルドでの実行オーバーヘッドはゼロです。Auto メソッドは開発以外のビルドのコンパイルで完全に除外されるわけではありませんが、null を返すように条件付きでコンパイルされるため、オーバーヘッドはごくわずかです。プロファイラーマーカーのフィールドはリリースビルドに存在し、その IntPtr と同等のメモリ (8 バイト) を使用します。
また、ProfilerRecorder API はパフォーマンスデータの取得にプロファイラーマーカーを使用します。Unity エディターと開発プレイヤーでの開発中に、この API を使用してコードのさまざまな部分のパフォーマンスの概要を取得し、パフォーマンスの問題を特定できます。
Unity プロファイラーにカスタム指標を表示するには、Unity Profiling Core パッケージの ProfilerCounter API を使用します。プロファイラーは ProfilerCounter または ProfilerCounterValue のデータを表示できます。
Unity は、プロファイラーカウンターを、カウンターがプロファイルする作業の種類、例えばレンダリング、スクリプト、アニメーションに基づいてカテゴリにグループ化します。カスタムのプロファイラーカウンターは、Unity のプロファイリングカテゴリのいずれかに割り当てることができます。使用可能なプロファイラーカテゴリの完全なリストについては、ProfilerCategory を参照してください。
ProfilerCounter または ProfilerCounterValue API を使用して、アプリケーションの指標を追跡し、Unity プロファイラーやその他のコードで表示できます。Asset Store パッケージ開発者は、コードにプロファイラーカウンターを追加して、他の開発者がシステムの重要なパフォーマンス特性を理解するのを助け、この情報を最適化やバジェットのツールに使用できるようにすることができます。
以下の図は、プロファイラーカウンターのデータフローの概要を示しています。
ProfilerRecorder API はアプリケーションコードのプロファイラーカウンターデータを取得し、RawFrameDataView API または HierarchyFrameDataView API はエディターコードのプロファイラーカウンターデータを取得します。このカウンターデータは、モジュールエディターでカスタムプロファイラーモジュールを設定 することで、Profiler ウィンドウで表示できます。
ProfilerCounter と ProfilerCounterValue は以下の型をサポートしています。