Version: 5.4
Audio Profiler
GPU Profiler (GPU プロファイラー)

Physics プロファイラー

Physics (物理演算) プロファイラーはシーンで物理エンジンが処理する物理演算に関する統計を表示します。この情報は、シーンにおける物理特性に関連するパフォーマンスの問題や予期せぬ矛盾を診断し解決するのに役立ちます。

Physics Profiler
Physics Profiler

プロパティー

プロパティー 機能
Active Rigidbodies 動作中でスリープ状態でない Rigidbody コンポーネントの数。表示される数は正確でない場合もあります。プロファイル時間中に処理された数だけが含まれるため、シーン内の活動中のコンポーネントすべてが含まれているとは限りません。
Sleeping Rigidbodies * 物理エンジンとかかわっていない Rigidbody コンポーネント、すなわち物理エンジンによりアクティブに更新する必要がないものの数です (詳細については Rigidbody: Sleeping を参照してください)。ここに表示される数は正確でない場合があります。
Number of Contacts シーンにおけるすべてのコライダーの接触点の合計数です。
Static Colliders Rigidbody コンポーネントを持たないゲームオブジェクトにアタッチされたコライダーの数です。このゲームオブジェクトは、決して Physics コンポーネントを使って動くことはありません。
Dynamic Colliders Rigidbody オブジェクトを持つゲームオブジェクトにアタッチされたコライダーの数です。このオブジェクトは、Physics コンポーネントを使用して動きます。

注意 Physics Profiler は、物理演算ベースのコンポーネントを持つゲームオブジェクトすべては数えない場合があります。Physics Profiler は、物理エンジンに処理されたゲームオブジェクトのみを数えます。特定の Physics コンポーネントを持つゲームオブジェクトの正確な数を数えたい場合は、FindObjectsOfType 関数を使用してカスタムスクリプトを作成します。

Physics Profiler を使用してパフォーマンスの問題を理解する

物理演算シミュレーションは、別の固定された間隔の更新周期で、メインで行うアップデートのループから実行されます。1回の呼び出しにつき Time.fixedDeltaTime を通してのみ、時間を進めることができます。これは、Update()FixedUpdate() の違いに似ています (詳細は Time Manager を参照してください。)。

物理演算やグラフィックスフレームが多く使用され処理に時間がかかる場合、Physics プロファイラーはフレームごとに複数の物理演算シミュレーションを呼び出さなくてはなりません。これは、リソースに負荷がかかっているフレームにさらに時間とリソースがかかり、Maximum Allowed Timestep 値 (Edit > Project Settings > Time で設定できます) のために、物理演算シミュレーションが一時的に停止する原因となります。

これは、プロジェクトで CPU Usage Profiler を選択し、Overview セクションで Physics.ProcessingPhysics.Simulate の呼び出し数を確認することで検出できます。

Physics Profiler で Calls 行で値が 1 を示すもの
Physics Profiler で Calls 行で値が 1 を示すもの

この図の例では、Calls 行で値 1 の表示は、物理演算シミュレーションが最後の論理的フレームで 1 回呼び出されたことを示しています。

呼び出し回数が 10 に近いと問題を示唆している場合があります。最初の解決策として、物理演算シミュレーションの頻度を減らします。問題が続く場合は、Physics Profiler がゲーム時間に追いつくためにそれほど多くのシミュレーションの呼び出しをする直前の、負荷の高いフレームの原因を確認します。ときには、シーンで負荷の高いグラフィックスフレームがあると、後に物理演算シミュレーションがより多く呼び出される原因になることがあります。

シーンの物理演算シミュレーションのさらに詳しい情報を得るには、上のスクリーンショットに表示されているように、三角の矢印をクリックして Physics.Processing を広げます。こうすると、シーンを更新するために実行された物理エンジンの実際のタスク名が表示されます。最もよく見かける名前は以下の 2つです。

  • Pxs ‘PhysX solver’ を短縮した名称。重なったボディーの接触の解除も含め、ジョイントに必要な物理エンジンタスクです。

  • ScScene ブロードフェーズとナローフェーズを実行し、ボディーを統合するなど (力と衝動で空中にボディーを移動)、シーンの更新に必要なタスクに使用されます。2フェーズ衝突の検知に関する定義に関しては、Steven M. LaValle’s work on Planning Algorithms を参照してください。

Audio Profiler
GPU Profiler (GPU プロファイラー)