プロファイラーは、プロファイラーマーカーで明示的にラップされたコードのタイミングのみをプロファイルします。これには、MonoBehaviour.Start、MonoBehaviour.Update、または同様のメソッドなど、Unity のネイティブコードからスクリプトコードへの呼び出しの最初のコールスタックの深度が含まれます。
スクリプトコードの子サンプルとして視覚化できるのは、Unity の API にコールバックするものだけです。ただし、その API がインストルメント化されている場合、または独自のコードで、プロファイラーマーカーが明示的にインストルメント化されている場合に限ります。パフォーマンスのオーバーヘッドを伴うほとんどの API 呼び出しはインストルメント化されています。例えば、Camera.main API を通じてメインのカメラにアクセスすると、FindMainCamera サンプルとして登録されます。
すべての関数呼び出しに関するデータを取得して、コードがアプリケーションのパフォーマンスにどのような影響を与えるかを把握する場合は、Deep Profile (詳細プロファイル) の設定を使用できます。Deep Profile の設定を有効にすると、プロファイラーがすべてのスクリプトメソッドにプロファイラーのインストルメンテーションを挿入し、Unity API への最初のコールスタックの深度を含むすべての関数呼び出しを記録します。
詳細プロファイリングはリソースに負荷がかかり、大量のメモリを使用します。そのため、プロファイリング中のアプリケーションの実行速度が大幅に低下します。詳細プロファイリングは、シンプルなスクリプトで構成されている小規模なゲームに最適です。複雑なスクリプトコードを使用すると、アプリケーションで詳細プロファイリングを使用できない場合があります。また、多くの大規模なアプリケーションでは、詳細プロファイリングによって Unity のメモリが不足する場合があります。
接続されたアプリケーションからパフォーマンスデータを収集している場合や、Unity エディターでデータを収集している場合は、詳細プロファイリングを有効にすることができます。
ビルドしたアプリケーションの詳細プロファイリングを有効にするには、以下の手順に従います。
エディターでデータを収集するときに詳細プロファイリングを有効にするには、以下の手順に従います。
プロファイリングセッションの開始時に、プロファイラーがすべての関数呼び出しをインストルメント化します。