Version: 2020.2
言語: 日本語
Audio Profiler モジュール
Global Illumination Profiler モジュール

CPU Usage Profiler モジュール

CPU Usage Profiler モジュールには、アプリケーションのどこで時間が費やされているかを表示するチャートが含まれています。レンダリング、スクリプト、アニメーションなど、アプリケーションが時間を費やすすべての重要な領域の概要を提供します。このセクションには以下のトピックが含まれます。

チャートのカテゴリ

CPU Usage プロファイラーモジュールのチャートは、アプリケーションのメインスレッドで費やされた時間を追跡します。タイミングは 9 のカテゴリに分けられます。チャートのカテゴリの順序を変更するには、カテゴリをチャートの凡例にドラッグアンドドロップします。カテゴリの色の付いた凡例をクリックして、表示を切り替えることもできます。

CPU Usage プロファイラーモジュール
CPU Usage プロファイラーモジュール
カテゴリ 説明 
Rendering アプリケーションがグラフィックスのレンダリングに費やす時間。
Scripts アプリケーションがスクリプトの実行に費やす時間。
Physics アプリケーションが物理演算エンジンに費やす時間。
Animation アプリケーションがアプリケーション内のスキンしたメッシュレンダラー、ゲームオブジェクト、その他のコンポーネントをアニメーション化するのに費やす時間。これには、Animation コンポーネントと Animator コンポーネントが使用するシステムが計算に要した時間も含まれます。
GarbageCollector アプリケーションが ガベージコレクター の実行に費やす時間。
VSync アプリケーションが targetFrameRate または次の VBlank との同期を待機するフレームごとの時間。これは、 QualitySettings.vSyncCount 値、ターゲットフレームレート、または VSync 設定 (アプリケーションが実行されているプラットフォームのデフォルト、または最大値) に基づいています。VSync の詳細については、このページの レンダリングと VSync のサンプル を参照してください。
Global Illumination アプリケーションがライティングに費やす時間。
UI アプリケーションが UI の表示に費やす時間。
Others アプリケーションが他のカテゴリに分類されないコードに費やす時間。これには、EditorLoop すべてや、エディターで再生モードをプロファイルするときのプロファイリングオーバーヘッドなどが含まれます。

モジュールの詳細ペイン

CPU Usage Profiler モジュールを選択すると、その下の詳細ペインに選択したフレームのアプリケーションが使った時間の内訳が表示されます。Timeline (タイムライン) か Detailed (詳細) の 2 通りでそのデータを表示できます。表示を変更するには、詳細ペインの左上のドロップダウンを使用します (デフォルトでは Timeline に設定)。

表示 機能
Timeline フレームの長さを時間軸にして、特定のフレームの時間消費の内訳を表示します。これは、すべてのスレッドのタイミングを一度に、またそれらが発生したフレーム内の時間内で表示するために使用できる唯一の表示モードです。そのため、スレッド (例えば、メインスレッドのシステムがスケジュールした後に起動する ジョブシステム ワーカースレッド) 間でタイミングを関連付けることができます。
Hierarchy 内部の階層構造によって時間のデータをグループ化します。このオプションは、アプリケーションが呼び出した要素を、使用された時間の降順 (デフォルト) のリスト形式で表示します。また、割り当てられたスクリプトのメモリの量 (GC Alloc)、または呼び出し回数で情報を並べ替えることもできます。表の並び方を決める列を変更するには、表の列のヘッダーをクリックします。
Raw Hierarchy 時間のデータを、タイミングが発生したコールスタックと同様の階層構造で表示します。Hierarchy ビューのように各コールスタックをマージせずに、このモードでは個別にリストします。

Live 設定

Live (ライブ) 設定は各ビューで使用可能で、Playmode またはエディターで新しいデータの記録を開始すると、モジュールの詳細ペインに現在のフレームまたは選択したフレームに関する情報が表示されます。これを有効にするには、モジュールの詳細ドロップダウンの横にある Live ボタンをクリックします。デフォルトではこの設定は無効になっており、データを記録するときモジュールの詳細ペインは空白です。ノート: この設定により、Profiler ウィンドウが再描画されるときに EditorLoop のオーバーヘッドが増加します。

Show Scripting Method Names 設定

さらに、各ビューで More Items メニュー (⋮) を選択し、 Show Full Scripting Method Names を有効にすると、すべてのスクリプトメソッドのフルバージョンの名 (Assembly::Class::MethodName) が表示されます。

A: Hierarchy ビューと Timeline ビューのスクリプトメソッド。Show Full Scripting Method Names は無効。<br/> B: Hierarchy ビューと Timeline ビューのスクリプトメソッド。Show Full Scripting Method Names は有効。
A: Hierarchy ビューと Timeline ビューのスクリプトメソッド。Show Full Scripting Method Names は無効。
B: Hierarchy ビューと Timeline ビューのスクリプトメソッド。Show Full Scripting Method Names は有効。

Timeline ビュー

Timeline ビューの CPU Usage プロファイラーモジュール
Timeline ビューの CPU Usage プロファイラーモジュール

Timeline ビューは CPU Usage プロファイラーモジュールのデフォルトビューです。このビューは、アプリケーションで時間を使う場所と、タイミングが互いにどのように関連しているかについての概要を表示します。Timeline ビューでは、 Hierarchy ビューとは異なり、すべてのスレッドのプロファイリングデータを独自のサブセクションに同じ時間軸に沿って表示します。 Hierarchy ビューには、一度に 1 つのスレッドのみ (デフォルトではメインスレッド) のプロファイリングデータが表示されます。また、Hierarchy ビューはサンプルの継続時間のみを表示しますが、Timeline ビューは各サンプルが発生した時間を表示します。

タイムラインビューを使用して、並列実行で異なるスレッドのアクティビティが互いにどのように相関しているかを確認できます。 Job Systemのワーカースレッドなど、さまざまなスレッドをどれだけ使用しているか、どれだけ使用しているか、スレッドでの作業がどのようにキューに入れられているか、アイドル状態( Idle サンプル)か、別のスレッドや待機中の スレッドがあるかを確認できます。ジョブの終了( Wait for x サンプル)

アイテムの操作と選択

時間軸のエリアを拡大するにはマウスのスクロールホイールを使用するか、Alt キーを押しながらマウスの右ボタンを押してドラッグします。水平スクロールバーの端を使用して拡大することもできます。ズームをリセットするにはキーボードの A キーを押します。すると、フレーム時間全体が表示されます。

スレッドの下部に白い矢印が表示されている場合は、クリックしてスレッドを展開するとすべての行が表示され、再度クリックすると一番上の行のみが表示されます。スレッドを分ける線をドラッグして、表示される行の数を再調整することもできます。行をダブルクリックすると、スレッドセクションの高さがコールスタックの最大の深さに設定されます。ビューをパンするには、マウスの中ボタンを押すか、 Alt キー (macOS では Command キー) を押しながらマウスの左ボタンを押します。

スレッドのグループを折りたたんだり展開したりするには、ビューの左端にあるスレッド名の横の折りたたみ矢印をクリックします。

CPU チャートに対する項目の寄与を表示するには、下のペインで項目を選択します。プロファイラーはその寄与を強調し、チャートの残りの部分を暗くします。項目の選択を解除するには、ビュー内の任意の場所をクリックします。F キーを押すと、選択した現在のサンプルにフォーカスが移動します。何も選択しない場合は、デフォルトのズームレベルで表示されます。

項目が選択された Timeline ビューの CPU Usage モジュール
項目が選択された Timeline ビューの CPU Usage モジュール

上の画像では、選択したアイテムのツールチップに、インスタンス数やすべてのスレッドにわたるこのサンプルの合計時間などの詳細が表示されます。GC.Alloc サンプルは赤紫色でアロケーションのサイズを示します。

マネージコールスタックをツールチップに表示するには、Profiler ウィンドウのツールバーに移動し、Call Stacks ボタンを選択します。フレームのコールスタックを表示するには、フレームをプロファイルする前にこのプロパティを有効にする必要があります。詳細については、アロケーションコールスタック を参照してください。

Flow Events

Unity がスレッド間でどのようにジョブをスケジュールするかを視覚化するために、Flow Events の設定を使用できます。この設定では、システム、ジョブ、スレッドの関係が表示されます。この設定を有効にするには、タイムライン表示ペインの右上にある More メニュー (⋮) を選択し、Show Flow Events を選択します。

この設定を有効にすると、ジョブをスケジュールしたり、スケジュールされたジョブが完了するのを待ったりする Profiler サンプルに、白いイベントマーカーが追加されます。また、関係ないサンプルを暗くすることで、選択したサンプルをよりわかりやすく可視化することができます。

プロファイラーがサンプルに加える矢印の種類は 3 つあります。

  • 下矢印: フローの始まりを示し、このサンプルが何らかの作業を予定していることを示します。
  • 右矢印: フローの中で次の項目を示し、これを予定したのは別のサンプルであることを示します。
  • 上矢印: フローの終わりを示し、このサンプルで作業が終了、または同期したことを示します。
フローイベントを有効にした Timeline CPU Profiler ビュー。いくつかの Profiler サンプルにある白いイベントマーカーに注目してください。
フローイベントを有効にした Timeline CPU Profiler ビュー。いくつかの Profiler サンプルにある白いイベントマーカーに注目してください。

サンプルを選択すると、プロファイラーは関連するフローイベントマーカーを線でつなぎます。太い線は、選択した特定のフローラインを強調します。例えば、begin のサンプルが他の 2 つの next のサンプルを指している場合、next のサンプルの 1 つをクリックすると、Profiler はそのサンプルに向かって太い線を引きます。

このビューは、コードの実行のフローや、どの作業が完了するのを待機しているかを見つけたり、コードの依存関係を視覚的に明らかにするのに役立ちます。

Flow Events を有効にしてサンプルを選択した Timeline CPU Profiler ビューです。
Flow Events を有効にしてサンプルを選択した Timeline CPU Profiler ビューです。

Hierarchy と Raw Hierarchy ビュー

Hierarchy または Raw Hierarchy ビューに切り替えると、サンプルがメインスレッド上にある限り、選択が引き継がれます。選択したものがすぐに見つからない場合は、F キーを押してフォーカスします。

Hierarchy ビューの CPU Usage Profiler モジュール
Hierarchy ビューの CPU Usage Profiler モジュール

Hierarchy ビューには、プロファイルしたすべてのサンプルがリストされ、共有コールスタックと ProfilerMarkers の階層によってグループ化されます。Raw Hierarchy ビューはサンプルをグループ化しないため、サンプルを詳細に確認するのに理想的です。Thread ドロップダウンを使用して特定のスレッドを選択することもできます。例えば、このビューで Main Thread や Render Thread を検査することができます。

デフォルトでは、すべての EditorOnly サンプルはこれらのビューで折りたたまれています。EditorOnly サンプルは、エディターのみの安全性チェックのためにのみ発生する Player Loop のサンプルです。サンプルが折りたたまれている場合、それらの GC.Alloc 値はそれらを含むサンプルの GC.Alloc 値に影響しません。これらのサンプルを表示するには、詳細ペインの右上にある More Items メニュー (⋮) を選択し、 Collapse EditorOnly Samples 設定を無効にします。詳細は、このドキュメントの エディターのみのサンプル のセクションを参照してください。

両方のビューは、各項目の以下の詳細情報を表示します。

プロパティ 機能
Total Unity が特定の関数に費やした合計時間 (パーセンテージ)
Self Unity が特定の関数に費やした合計時間 (サブ関数の呼び出しに要した時間を除く。パーセンテージ)。

例えば、スクリーンショットでは、時間の 16.7% が Camera.Render 関数に費やされています。これは多くの描画とカリング関数を呼び出すためです。ただし、呼び出す関数を除外すると、Camera.Render 関数自体に費やされる時間はわずか 0.2% です。
Calls このフレームでこの関数に対して行われた呼び出しの数。Raw Hierarchy ビューでは、プロファイラーはサンプルの階層をマージしないため、この列の値は常に 1 です。
GC Alloc Unity が現在のフレームに割り当てたスクリプティングのヒープメモリの量。スクリプティングのヒープメモリは、ガベージコレクタ によって管理されます。

Unity が GC.Collect() を呼び出すか、ヒープの現在のサイズに収まらないスクリプティングヒープの割り当てがある場合は常に、ガベージコレクターがトリガーされます。参照がなくなったすべての割り当てにマークを付けて収集します。このプロセスは、プロファイラーで GC.Collect サンプルとして表示されます。

Unity は、ヒープにより多くを割り当てると、ガベージコレクターをより頻繁に実行します。 マネージヒープが増加すると、Unity がメモリにマークして回収するのに時間がかかります。そのため、アプリケーションの実行中は GC Alloc 値をゼロに保ち、ガベージコレクターがフレームレートに影響を与えないようにし、全体的なヒープサイズを小さく保つ必要があります。

管理ヒープの詳細については、自動メモリ管理 のドキュメントを参照してください。
Time ms Unity が特定の関数に費やした合計時間 (ミリ秒)。アプリケーションが Job System やマルチスレッドレンダリングを使用する場合、現在選択しているスレッドで費やした時間しか含まれていないため、この情報は誤解を招く可能性があります。スレッドを変更するには、Hierarchy ペインの上部にある Thread ドロップダウンを選択します。
Self ms Unity が特定の関数に費やした合計時間 (ミリ秒)。Unity がサブ関数を呼び出す時間は除きます。
Warning 警告アイコンで示され、現在のフレーム中にアプリケーションが警告をトリガーした回数を表示します。詳細については、パフォーマンスの警告 を参照してください。

アプリケーションがプロファイルされた関数をどこで呼び出し、使用するかに関する詳細情報を取得するには、モジュールの詳細ペインの右上にある Details ドロップダウンを選択し、Show Related ObjectsShow Calls ビューのいずれかを選択します。

Show Related Objectsパネル
Show Related Objectsパネル

Show Related Objects ビューは、Begin() オーバーロードを使用し、プロファイラーサンプルに関連付けられている UnityEngine.Objects のリストを表示します。Unity が報告する一部のサンプルには、レンダリングを行う Camera ゲームオブジェクトにリンクされているCamera.Render サンプルなど、組み込まれたアソシエーションが含まれます。エディターでプロファイルすると、Unity はインスタンス ID を使ってこれらのオブジェクトを報告し、Profiler ウィンドウで名前に解決します。ビルドしたプレイヤーをプロファイルするとき、またはディスクからキャプチャをロードするとき、これらの名前は表示されず、プロファイラーは N/A と表示します。

これらのオブジェクトの 1 つをクリックすると、Unity はシーンの Hierarchy を使ってオブジェクトを検索し、ping しようとします。アソシエーションはインスタンス ID を使用するため、ping はアプリケーションがエディターでプロファイルされている場合と、 オブジェクトがまだ存在している場合にのみ機能します。

GC.Alloc サンプルの場合、このビューには、この階層レベルで発生した各割り当てに 1 つずつ、N/A 項目のリストが表示されます。割り当てのサイズは GC.Alloc 列に表示されます。Call Stacks 設定を有効にしてアプリケーションをプロファイルする場合、このビューで GC.Alloc サンプルを選択すると、Deep Profiling 設定を有効にしていなくても、割り当てられたスクリプティングオブジェクトのコールスタックが Profiler ウィンドウに表示されます。詳細については、アロケーション、割り当てコールスタック を参照してください。

Show Calls パネル
Show Calls パネル

Show Calls ビューは、選択されたサンプルがどこから呼び出されているか、他のどの関数を呼び出すかを表示します。

アロケーションコールスタック

デフォルトでは、GC.Alloc サンプルに割り当てられたコールスタックは無効になっています。これは、コールスタックが複数フレームの遅延でアプリケーションを混乱させる可能性があるためです。ただし、Unity がコードを実行する様子を確認するために、すべてのコールスタックを確認したい場合があります。

これを行うには、Profiler ウィンドウのツールバーに移動し、 Call Stacks ボタンを選択します。この機能は、エディターでプロファイルする場合でも、実行中のプレイヤーでプロファイルする場合でも使用できます。このオプションをオンにすると、プロファイルするフレームでは、GC.Alloc サンプルにコールスタックが含まれます。

すべてのスクリプティングヒープの割り当ては、Hierarchy ビューと Timeline ビューの両方で GC.Alloc サンプルとして表示されます。Timeline ビューでは、明るい赤紫色になります。コールスタックを表示するには、CPU プロファイラーモジュールを選択し、Timeline ビューで GC.Alloc サンプルを選択します。コールスタックは、選択範囲がハイライトされて表示されます。

GC.Alloc コールスタックを使用した CPU Usage モジュール (Timeline ビュー)
GC.Alloc コールスタックを使用した CPU Usage モジュール (Timeline ビュー)

代わりに、Hierarchy または Raw Hierarchy ビューでコールスタックを見ることができます。Details ビューを Show Related Objects に設定します。GC.Alloc サンプルには名前がないため、このパネルでは N/A と表示されます。N/A オブジェクトを選択すると、プロファイラーは詳細ビューの下半分にコールスタックを表示します。

マネージアロケーションの詳細については、自動メモリ管理を理解します を参照してください。

Hierarchy ビューのコールスタック
Hierarchy ビューのコールスタック

一般的なサンプル

スクリプティングコードが生成するサンプルと同様に、Unity は、アプリケーションで何に時間がかかっているかを理解するための多くのサンプルを提供します。以下の表は、一般的なサンプルの一部を説明しています。

メインスレッドの基本サンプル

メインスレッドの基本サンプルは、アプリケーションに費やされた時間と、エディターとプロファイラーの働きに費やされた時間を明確に区別します。Recorder は、これらのサンプルを使用してメインスレッドのフレームのタイミングを取得することもできます。

サンプル 機能
PlayerLoop アプリケーションのメインループから発生するサンプルのルート。プレイヤーがアクティブな再生モードのエディターで実行されているときに、再生モード ではなく エディター をターゲットにする場合、このサンプルは EditorLoop の下にネスト状になります。
EditorLoop エディターのメインループから発生したサンプルのルート。これは、エディターでプレイヤーをプロファイルする間にのみ表示されます。プロファイラー再生モード をターゲットにする場合、このサンプルは、フレームのどのくらいの時間がプレイヤーを含むエディターのレンダリングと実行に費やされたかを示します。エディターの動作を確認したい場合は、ターゲットを エディター に切り替えます。
Profiler.CollectEditorStats さまざまな種類のアクティブなプロファイラーモジュールの統計の収集に関連するサンプルのルート。 子サンプル Profiler.CollectGlobalStats 下の任意のサンプルは、プレイヤーのオーバーヘッドの起因になります。他のすべての子サンプルはエディターにのみ影響します。特定のモジュールをオフにするには、それらのチャートを閉じるか、Profiler.SetAreaEnabled() を 呼び出します。

スクリプト更新サンプル

ジョブシステムを使用していない限り、ほとんどのスクリプトコードは以下のサンプルの下にネストされます。

サンプル 機能
Update.ScriptRunBehaviourUpdate このサンプルには、MonoBehaviour.Update への呼び出しとコルーチンの処理が含まれています。
BehaviourUpdate このサンプルは、すべての Update() メソッドを処理します。
CoroutinesDelayedCalls 最初の yield の後にコルーチンサンプルが含まれます。
PreLateUpdate.ScriptRunBehaviourLateUpdate このサンプルは、すべての LateUpdate() メソッドを処理します。
FixedBehaviourUpdate このサンプルは、すべての FixedUpdate() メソッドを処理します。

レンダリングと VSync サンプル

これらのサンプルは、CPU が GPU のデータ処理の何に時間を費やしているのか、または、どこで GPU の終了を待機しているのかを表示します。GPU プロファイラーが使用できない場合や、オーバーヘッドが多すぎる場合は、ツールバーにこの情報は表示されません。これらのサンプルは、アプリケーションが CPU バウンドか GPU バウンドかを判断するのに役立ちます。

サンプル 機能
WaitForTargetFPS Application.targetFrameRate が指定するターゲット FPS をアプリケーションが待機する時間。

このサンプルが Gfx.WaitForPresentOnGfxThread のサブサンプルである場合、QualitySettings.vSyncCount で構成された VSync を待機するのにアプリケーションが使う時間を表します。

ノート: エディターは GPU で VSync を実行せず、代わりに WaitForTargetFPS を使用して VSync の遅延のシミュレーションを行います。一部のプラットフォーム、特に Android と iOS は、VSync を適用するか、デフォルトのフレームレートの上限を 30 または 60 にします。
Gfx.ProcessCommands レンダースレッドのレンダリングコマンドのすべての処理が含まれます。その時間の一部は、メインスレッドからの VSync または新しいコマンドの待機に費やされる場合があります。それは、その子サンプル Gfx.WaitForPresentOnGfxThread から確認できます。
Gfx.WaitForCommands レンダースレッドが新しいコマンドの準備ができていることを示し、メインスレッドのボトルネックを示す場合もあります。
Gfx.PresentFrame GPU がフレームをレンダリングして表示するのをアプリケーションが待機する時間を示します。これには VSync を待機する時間も含まれる場合があります。

メインスレッドの WaitForTargetFPS サンプルは、VSync の待機に費やされる時間を示します。
Gfx.WaitForPresentOnGfxThread メインスレッドが次のフレームのレンダリングを開始する準備ができているが、レンダースレッドが GPU でフレームを表示するのを待機し終えていないことを示します。これは、アプリケーションが GPU バウンドであることを示している可能性があります。 レンダースレッドが同時に何に時間を費やしているかを確認するには、Timeline ビューを確認してください。

レンダースレッドが Camera.Render で時間を費やしている場合、アプリケーションが CPU バウンドで、ドローコールやテクスチャを GPU に送信するのに時間をかけすぎている可能性があります。

レンダースレッドが Gfx.PresentFrame で時間を費やす場合、ゲームは GPU バウンドか、GPU で VSync を待機している場合があります。Gfx.WaitForPresentOnGfxThreadWaitForTargetFPS サブサンプルは、アプリケーションが VSync の待機に費やす現在のフェーズの部分を示します。現在のフェーズは、Unity がグラフィックス API にバッファを交換するように指示してから、この操作が完了するまでの時間です。
Gfx.WaitForRenderThread レンダースレッドが現在コマンドストリームにあるすべてのコマンドを処理するのをメインスレッドが待機していることを示します。このサンプルは、マルチスレッドレンダリングでのみ発生します。

マルチスレッドのサンプル

これらのサンプルは CPU サイクルを消費しませんが、代わりにスレッドとジョブシステムに関連する情報を強調します。これらのサンプルが表示されたら、Timeline ビュー を使用して、同時に他のスレッドで何が起こっているかを確認します。

サンプル 機能
Idle ジョブシステムがワーカースレッドを使用しない場合は常に、Idle サンプルを発行します。Idle サンプル間の小さなギャップは通常、例えば新しいジョブをスケジュールするためにジョブシステムがそれらを起動するときに発生します。長いギャップは、インストルメント化されていないネイティブのジョブを示します。
Semaphore.WaitForSignal このスレッドは別のスレッドで何かが終了するのを待機しています。待機しているスレッドを見つけるには、Timeline ビューでこのサンプルの直前に終了したサンプルを確認します。
WaitForJobGroupID JobHandle の同期フェンスがトリガーされました。これは、ワークスチール を引き起こす可能性があります。これは、ワーカーが作業を終了し、他のワーカージョブが完了するのを確認するときに発生します。これらは、このサンプルの下で実行されるジョブサンプルとして表示されます。“盗まれた” ジョブは、必ずしも待機されていたジョブではありません。

物理サンプル

次の表は、高レベルの物理演算プロファイラーサンプルの一部をまとめたものです。FixedUpdate() はこれらすべてのサンプルを呼び出します。

サンプル 機能
Physics.Simulate シミュレーションを実行するよう物理演算エンジンに指示して、現在の物理演算状態を更新します。
Physics.Processing クロス以外のすべての物理関連ジョブを処理します。このサンプルを展開すると、 物理演算エンジンで内部的に行われた作業の低レベルの詳細が表示されます。
Physics.ProcessingCloth すべてのクロスの物理演算ジョブを処理します。このサンプルを展開すると、 物理演算エンジンで内部的に行われた作業の低レベルの詳細が表示されます。
Physics.FetchResults 物理演算エンジンによる物理演算シミュレーションの結果を収集します。
Physics.UpdateBodies すべての物理関連ボディの位置と回転を更新します。このサンプルには、これらの更新が送信されるときに通知するメッセージも含まれています。
Physics.ProcessReports 物理演算の FixedUpdate が終了すると実行されます。シミュレーションの結果に応答するさまざまな段階を処理します。このサンプルには、接触、ジョイントのブレーク、更新とメッセージのトリガーが含まれます。4 つの異なるサブステージがあります。
Physics.TriggerEnterExits OnTriggerEnterOnTriggerExit イベントを処理します。
Physics.TriggerStays OnTriggerStay イベントを処理します。
Physics.Contacts OnCollisionEnterOnCollisionExitOnCollisionStay イベントを処理します。
Physics.JointBreaks 壊れたジョイントに関連する更新とメッセージを処理します。
Physics.UpdateCloth クロスとそのスキンメッシュに関する更新が含まれます。
Physics.Interpolation すべての物理演算オブジェクトの位置と回転の補間を管理します。

スクリプトのライフサイクル内のスクリプトのライフサイクルと一般的なサンプルの詳細については、イベント関数の実行順序 を参照してください。

パフォーマンスに関する警告

CPU プロファイラーは一般的なパフォーマンスの問題を検出し、警告します。これらは、モジュールの詳細ペインの Hierarchy ビューの Warning 列に表示されます。

プロファイラーは、パフォーマンスに重要なコンテキストで避けるべき特定の呼び出しを検出できます。以下のように、操作がパフォーマンスに影響を与えている理由とともに警告を表示します。

  • Rigidbody.SetKinematic は凸状でないメッシュコライダーを再作成します
  • Animation.DestroyAnimationClip は RebuildInternalState をトリガーします
  • Animation.AddClip は RebuildInternalState をトリガーします
  • Animation.RemoveClip は RebuildInternalState をトリガーします
  • Animation.Clone は RebuildInternalState をトリガーします
  • Animation.Deactivate は RebuildInternalState をトリガーします

エディターのみのサンプル

一部のサンプルは、エディターでプロファイルするときにのみ表示されます。これには、GetComponentNullErrorWrapper などのセキュリティチェックが含まれます。これは、null コンポーネントの使用を識別するのに役立ちます。CheckConsistency はオブジェクトの設定を検証します。CheckAllowDestructionRecursive は破棄のチェックです。プレハブ関連の作業も含まれます。これらのサンプルのすべてがプレイヤーにあるわけではありません。

デフォルトでは、エディターのみのサンプルは Hierarchy ビューで折りたたまれ、EditorOnly [サンプル名] と名付けられます。ガベージコレクションの割り当てを引き起こす可能性がありますが、それらが折りたたまれている場合、それらを含むサンプルの GC.Alloc 値には影響しません。

デフォルトの動作を変更するには、モジュールの詳細ペインの右上にあるコンテキストメニューをクリックし、Collapse EditorOnly Samples 設定を無効にします。これを行うと、サンプルを展開し、その GC.Alloc 値を一緒に梱包するサンプルに加えることができます。

このオプションは Timeline ビューには影響しません。通常は、これらのサンプルを無視するか、それらをプロンプトとして使用してターゲットデバイスでプレイヤービルドをプロファイルして、実際の問題を見つけます。

  • Added Flow Events in 2020.1 NewIn20201
Audio Profiler モジュール
Global Illumination Profiler モジュール