CPU Usage Profiler (CPU使用率プロファイラー) はゲームのどの部分で時間が使用されているかを表示します。選択すると、下方のペインは選択されたフレームの階層的なタイムデータを表示します。詳細は プロファイラーウィンドウ を参照してください。
グラフのラベルを上下にドラッグして CPU グラフの重なり順を変えることができます。
下方のペインの項目を選択すると、その CPU のグラフに関係しているものはハイライトされます (残りは薄く表示されます)。選択解除するには項目を再度クリックします。
階層的に表示されているタイムデータで、Self の行は、特定の関数にかかった時間の量が表示されています。これにサブ関数の呼び出しに要した時間は含まれません。上のスクリーンショットの例では、時間の41.1%は Camera.Render
関数に消費されています。この関数は多くの作業をこなしており、さまざまな描画とカリングの関数を呼び出しています。しかし実際には、これらの関数を除けば、Camera.Render
関数自身に使用したのは消費時間のうち2.1% にしかすぎません。
Time ms と Self ms 列は同様の情報を表示していますが、表示方法をミリ秒としています。 Camera.Render
には0.01ミリ秒かかっていますが、そこから呼び出される関数すべてを含めば0.21秒かかります。 GC Alloc の行は現在のフレームにおけるメモリの割り当て量を表しています。これは後からガベージコレクターによって回収されます。この値を 0 に保つことによって、フレームレートでガベージコレクターのしゃっくりを避けることができます。
CPU プロファイラーの Others
は Renderer、Scripts、Physics、ガベージコレクタまたは VSync に分類されていないすべての領域の合計を記録しています。この中にはアニメーション、AI、オーディオ、パーティクル、ネットワーキング、ローディング、PlayerLoop が含まれています。
以下では、多様な高レベル物理プロファイラーマーカーの意味についてそれぞれ説明します。
FixedUpdate
から呼び出されます。この関数が物理シミュレートを行う PhysX に指示を出すことによって物理の現状を更新します。FixedUpdate
から呼び出されます。布の物理演算以外はすべてここで処理されます。このマーカーを開くと PhysX 内部で実行されている作業の低レベルの詳細が表示されます。FixedUpdate
から呼び出されます。布の物理演算以外はすべてここで処理されます。このマーカーを開くと PhysX 内部で実行されている作業の低レベルの詳細が表示されます。FixedUpdate
から呼び出されます。ここに、物理エンジンから収集された物理シミュレーションの結果が保存されます。FixedUpdate
から呼び出されます。この関数はすべての物理的な物体の位置と回転を更新させます。更新指令の送信元も同様に更新します。FixedUpdate
から呼び出されます。このステージは物理の FixedUpdate
によって最終的な状態が決定するたびに1度実行され、シミュレーション結果に応じてさまざまなステージが処理されます。接触、結合の解除やトリガーはこちらから送信されるメッセージで更新されます。これには独自な4つのステージがあります。
FixedUpdate
から呼び出されます。ここでは OnTriggerEnter
と OnTriggerExit
イベントが処理されます。FixedUpdate
から呼び出されます。ここでは OnTriggerEnter
と OnTriggerExit
イベントが処理されます。FixedUpdate
から呼び出されます。ここでは OnTriggerEnter
と OnTriggerExit
イベントが処理されます。FixedUpdate
から呼び出されます。ここではジョイントの破壊の処理に関係したことの更新、メッセージの送信を行います。Update
から呼び出されます。ここでは布や、Skinned Mesh の形成に関連したことを更新します。Update
から呼び出されます。このステージはすべての物理オブジェクトの位置や回転の補間を処理します。CPU Profiler が検知し、警告可能な一般的な問題がいくつかあります。これらの警告は CPU Usage を見ていると、下方ペインの Warning 列に表示されます。
プロファイラーが検知し得る特別な問題には以下のようなものがあります。
上記スクリーンショットでは、Profiler は Static Collider.Move の警告を発しています。Warning の列では現在のフレームで 12 回警告が発生しています。 “Delayed Cost” という用語は、Profiler は現時点では低いコストを示しているかもしれませんが (この場合 0.00ms です)、このアクションはよりダメージのある操作を後に引き起こす可能性があることを意味しています。