Physics Profiler の Legacy モードを使用する
Physics 2D プロファイラーモジュールのリファレンス
Physics 2D プロファイラーモジュールは、プロジェクトのシーン内で物理演算システムによって処理された物理演算に関する情報を表示します。この情報は、プロジェクトのシーンにおける物理演算に関連するパフォーマンス問題や予期せぬ矛盾の診断と解決に役立てることができます。
Profiler ウィンドウを開くには、メニューで Window > Analysis > Profiler の順に移動します。
チャートのカテゴリ
Physics 2D プロファイラーモジュールのチャートは、プロジェクトのシーンで物理演算システムが処理する物理演算に関連した様々な統計情報を、以下のチャートカテゴリ別にトラッキングします。フレームチャートのウィンドウをクリックするか、チャートグラフ内のキャプチャされたフレームを選択すると、選択したカテゴリをトラッキングできます。チャート内のカテゴリの順序を変更するには、チャートの凡例内でカテゴリをドラッグアンドドロップします。カテゴリの色の付いた凡例をクリックして、表示を切り替えることもできます。選択した統計に関する詳細については、モジュールの詳細ペイン を参照してください。
| Chart |
説明 |
| Total Contacts |
このフレームに存在した接触の総数です。これには Collision (衝突) 接触と Trigger (トリガー) 接触の両方が含まれます。接触の処理と解決には時間がかかる場合があるため、最小限に抑える必要があります。 |
| Total Shapes |
このフレームに存在した 物理形状 の総数です。Collider2D によって生成する物理形状の数が異なります (最小で 1、最大で無限)。形状数 と 物理形状を取得 して、任意の Collider2D でこれを判定できます。 |
| Total Queries |
このフレームで呼び出されたクエリの総数です。これには、Physics2D.Raycast、Physics2D.OverlapPoint などのクエリが含まれます。 |
|
Total Callbacks
|
このフレームで呼び出された OnCollisionEnter2D、OnCollisionStay2D、OnCollisionExit2D、OnTriggerEnter2D、OnTriggerStay2D、OnTriggerExit2D コールバックの総数です。 |
| Total Joints |
このフレームに存在した Joint2D の総数です。 |
| Total Bodies |
このフレームに存在した Rigidbody2D の総数です。 |
| Awake Bodies |
awake 状態 (スリープ でない状態)、かつ、このフレームに存在した Rigidbody2D の総数です。 |
| Dynamic Bodies |
このフレームに存在した、Dynamic (動的) ボディタイプの Rigidbody2D の総数です。Dynamic (動的) ボディはすべてのボディタイプの中で最も処理に時間がかかるため、数を最小限に抑える必要があります。 |
| Continuous Bodies |
このフレームに存在した、Continuous (連続型) 衝突判定モードの Rigidbody2D の総数です。Continuous (連続型) ボディは、Discrete (離散型) 衝突判定モードを使用した場合よりもはるかにコストがかかるため、最小限に抑える必要があります |
| Physics Used Memory |
2D 物理演算システムのみによって使用された永続メモリの総量です。これには、コアエンジンと各物理演算コンポーネントの使用メモリが両方含まれますが、このフレームで使用された一時メモリは含まれません。 |
モジュールの詳細ペイン
Physics 2D プロファイラーモジュールでフレームを選択すると、プロジェクトのシーンの物理演算に関する詳細情報が、詳細ペインに表示されます。詳細ペインはカテゴリ別にソートされ、各カテゴリがそれぞれ 1 つの行に表示されます。
以下の参照表には、利用可能な統計情報の説明と、対応の Profiler Counter (プロファイラーカウンター)、および、リリースビルドで使用可能かどうかの情報が掲載されています。プロファイラーカウンターは、エディタービルドと開発ビルドで常に利用可能です。この情報は、ProfilerRecorder API や プロファイラーモジュールエディター からも入手でき、カスタムの Profiler モジュールに追加することができます。
Physics Used Memory
| 統計 |
説明 |
対応のプロファイラーカウンター (正確な名称) |
リリースプレイヤーで利用可能か |
| Total |
2D 物理演算システムのみによって使用された永続メモリの総量です。これには、コアエンジンと各物理演算コンポーネントの使用メモリが両方含まれますが、このフレームで使用された一時メモリは含まれません。 |
Physics Used Memory 2D |
いいえ |
| Relative |
Unity の全体のメモリ使用量と比較した、2D 物理演算システムのメモリ使用量の相対的な割合です。 |
該当なし |
該当なし |
Bodies
| 統計 |
説明 |
対応のプロファイラーカウンター (正確な名称) |
リリースプレイヤーで利用可能か |
| Total |
このフレームに存在した Rigidbody2D の総数です。 |
Total Bodies |
いいえ |
| Awake |
awake 状態 (スリープ でない状態)、かつ、このフレームに存在した Rigidbody2D の数です。Static (静的) ボディタイプの Rigidbody2D は常にスリープ状態であることに注意してください。 |
Awake Bodies |
いいえ |
| Asleep |
スリープ状態 (awake でない状態) 、かつ、このフレームに存在した Rigidbody2D の数です。Static (静的) ボディタイプの Rigidbody2D は常にスリープ状態であることに注意してください。 |
Asleep Bodies |
いいえ |
| Dynamic |
このフレームに存在した、Dynamic (動的) ボディタイプの Rigidbody2D の数です。Dynamic (動的) ボディはすべてのボディタイプの中で最も処理に時間がかかるため、数を最小限に抑える必要があります。 |
Dynamic Bodies |
いいえ |
| Kinematic |
このフレームに存在した、Kinematic (キネマティック) ボディタイプの Rigidbody2D の数です。キネマティックなボディの処理は最小限なので、明示的な動きは必要だが外力への反応は必要ない場合には、これを使用してください。 |
Kinematic Bodies |
いいえ |
| Static |
このフレームに存在した、Static (静的) ボディタイプの Rigidbody2D の数です。Static (静的) ボディは、すべてのボディタイプの中で最も処理が少ないので、動きが必要ない場合は可能な限りこれを使用してください。 |
Static Bodies |
いいえ |
| Discrete |
このフレームに存在した、Discrete (離散型) 衝突判定モードの Rigidbody2D の数です。Discrete (離散型) ボディは、Continuous (連続型) 衝突判定モードを使用した場合よりもはるかにコストが低いため、可能な限りこれを使用してください。 |
Discrete Bodies |
いいえ |
| Continuous |
このフレームに存在した、Continuous (連続型) 衝突判定モードの Rigidbody2D の数です。Continuous (連続型) ボディは、Discrete (離散型) 衝突判定モードを使用した場合よりもはるかにコストがかかるため、最小限に抑える必要があります |
Continuous Bodies |
いいえ |
Shapes
| 統計 |
説明 |
対応のプロファイラーカウンター (正確な名称) |
リリースプレイヤーで利用可能か |
| Total |
このフレームに存在した 物理形状 の総数です。Collider2D によって生成する物理形状の数が異なります (最小で 1、最大で無限)。形状数 と 物理形状を取得 して、任意の Collider2D でこれを判定できます。 |
Total Shapes |
いいえ |
| Awake |
awake 状態の Rigidbody2D にアタッチされた物理形状は、awake 状態です。これは、awake 状態 (スリープ でない状態)、かつ、このフレームに存在した物理形状の数です。 |
Awake Shapes |
いいえ |
| Asleep |
スリープ状態の Rigidbody2D にアタッチされた物理形状は、スリープ状態です。これは、スリープ状態 (awake でない状態)、かつ、このフレームに存在した物理形状の数です。 |
Asleep Shapes |
いいえ |
| Dynamic |
Dynamic (動的) ボディタイプの Rigidbody2D にアタッチされた物理形状は Dynamic (動的) です。これは、Dynamic (動的) 、かつ、このフレームに存在した物理形状の数です。 |
Dynamic Shapes |
いいえ |
| Kinematic |
Kinematic (キネマティック) ボディタイプの Rigidbody2D にアタッチされた物理形状は Dynamic (動的) です。これは、Kinematic (キネマティック)、かつ、このフレームに存在した物理形状の数です。 |
Kinematic Shapes |
いいえ |
| Static |
Static (静的) ボディタイプの Rigidbody2D にアタッチされた物理形状は Dynamic (動的) です。これは、Static (静的)、かつ、このフレームに存在した物理形状の数です。 |
Static Shapes |
いいえ |
Queries
Contacts
| 統計 |
説明 |
対応のプロファイラーカウンター (正確な名称) |
リリースプレイヤーで利用可能か |
| Total |
このフレームに存在した接触の総数です。これには Collision (衝突) 接触と Trigger (トリガー) 接触の両方が含まれます。接触の処理と解決には時間がかかる場合があるため、最小限に抑える必要があります。 |
Total Contacts |
いいえ |
| Added |
このフレームで追加された接触の数です。これには Collision (衝突) 接触と Trigger (トリガー) 接触の両方が含まれます。1 つのフレームに接触を多く追加し過ぎるとパフォーマンス負荷が急増する可能性があるため、これは最小限に抑えてください。 |
Added Contacts |
いいえ |
| 削除 |
このフレームで削除された接触の数です。これには Collision (衝突) 接触と Trigger (トリガー) 接触の両方が含まれます。接触の削除は素早く行われるので、パフォーマンスへの影響は最小限です。 |
Removed Contacts |
いいえ |
| Broadphase Updates |
このフレームで処理されたブロードフェーズ更新の数です。ブロードフェーズ更新は、物理形状が追加、削除、またはサイズ変更された時に発生します。ブロードフェーズ更新は、2 つの物理形状が重なる可能性があり、結果としてブロードフェーズペア (以下参照) が作成され得る場合に、接触の変更を検出するために使用されます。 |
Broadphase Updates |
いいえ |
| Broadphase Pairs |
このフレームで処理されたブロードフェーズペアの数です。ブロードフェーズペアは、ブロードフェーズ更新の結果として 2 つの物理形状が重なる可能性がある場合に作成されます。ブロードフェーズペアは、作成された後で処理され、その結果、新しい接触になるか、(物理形状が接触し合うように設定されていない場合は) 無視されます。 |
Broadphase Pairs |
いいえ |
Callbacks
| 統計 |
説明 |
対応のプロファイラーカウンター (正確な名称) |
リリースプレイヤーで利用可能か |
| Total |
このフレームで呼び出された OnCollisionEnter2D、OnCollisionStay2D、OnCollisionExit2D、OnTriggerEnter2D、OnTriggerStay2D、OnTriggerExit2D コールバックの総数です。 |
Total Callbacks |
いいえ |
| Collision Enter |
このフレームで呼び出された OnCollisionEnter2D コールバックの数です。 |
Collision Enter |
いいえ |
| Collision Stay |
このフレームで呼び出された OnCollisionStay2D コールバックの数です。 |
Collision Stay |
いいえ |
| Collision Exit |
このフレームで呼び出された OnCollisionExit2D コールバックの数です。 |
Collision Exit |
いいえ |
| Trigger Enter |
このフレームで呼び出された OnTriggerEnter2D コールバックの数です。 |
Trigger Enter |
いいえ |
| Trigger Stay |
このフレームで呼び出された OnTriggerStay2D コールバックの数です。 |
Trigger Stay |
いいえ |
| Trigger Exit |
このフレームで呼び出された OnTriggerExit2D コールバックの数です。 |
Trigger Exit |
いいえ |
Solver
| 統計 |
説明 |
対応のプロファイラーカウンター (正確な名称) |
リリースプレイヤーで利用可能か |
|
World Count
|
このフレームに存在した 物理演算シーン の総数です。各物理演算シーンには 1 つの物理演算世界が含まれており、これは他のすべての物理演算世界から切り離してシミュレートすることができます。世界の数が多くても、それ自体はパフォーマンスの問題にはなりません。なぜなら、これはメモリを占有するだけで、シミュレーションが行われない限り何も実行しないからです。 |
Solver World Count |
いいえ |
|
Simulation Count
|
(Unity の Physics2D.Simulate の呼び出しで自動的に行われたか、PhysicsScene2D.Simulate の直接の呼び出しによって行われたかのいずれかの方法で) すべての物理演算シーンのシミュレーションが行われた回数です。 |
Solver Simulation Count |
いいえ |
| Discrete Islands |
アイランドは、共有のジョイントや共有の接触によって接続される複数のボディの連結グラフです。Static (静的) ボディタイプはアイランドを接続しないことに注意してください。これは、離散型の解決ステップの処理中に解決された接触アイランドの数です。 |
Solver Discrete Islands |
いいえ |
| Continuous Islands |
アイランドは、共有のジョイントや共有の接触によって接続される複数のボディの連結グラフです。Static (静的) ボディタイプはアイランドを接続しないことに注意してください。これは、連続的な解決ステップの処理中に解決されたアイランドの数です。連続的アイランドの解決は非常にコストのかかる処理で、アイランドの再生成と再処理を要するイテレーションを何度も行う必要があります。したがって、これは最小限に抑える必要があります。こうした追加的な連続的アイランドの形成と処理を発生させるのは、Continuous (連続型) 衝突判定モードを使用した Rigidbody2D だけです。 |
Solver Continuous Islands |
いいえ |
Transform Sync
| 統計 |
説明 |
対応のプロファイラーカウンター (正確な名称) |
リリースプレイヤーで利用可能か |
|
Sync Calls
|
このフレームで呼び出された Transform Sync コールの総数です。Transform Sync (Transform Read として知られる) では、Transform が変更されたかどうかのチェックが行われ、もし変更されている場合は Transform のポーズが読み取られて Rigidbody2D や Collider2D が更新されます。物理演算コンポーネントを使用する場合は Transform は変更すべきではありません。これが必要な場合もありますが、処理される数が多すぎるとパフォーマンスに問題が起きる可能性があるため、避ける必要があります。すべての動きは Rigidbody2D API を使用して処理する必要があります。
物理演算システムはシミュレーションステップの実行の最初の部分として 1 回の Transform Sync を実行するので、シミュレーションが発生した場合には、この数字は必ず少なくとも 1 になります (上記 Simulation Count 参照)。物理演算システムは、Rigidbody2D 補間を処理する場合、フレームごとに 1 つの Transform Sync も実行します。
Physics2D.AutoSyncTransforms (デフォルトでは非アクティブ) がアクティブな場合、あるいは Physics2D.SyncTransforms が呼び出された場合は、追加の呼び出しが行われますが、これらはどちらもパフォーマンスに深刻な影響を与えるため、避ける必要があります。 |
Total Transform Sync Calls |
いいえ |
| Sync Bodies |
Transform Sync の影響を受けた Rigidbody2D の数です。これは最小限 (できれば 0) に抑える必要があります。 |
Transform Sync Bodies |
いいえ |
| Sync Colliders |
Transform Sync の影響を受けた Collider2D の数です。これは最小限 (できれば 0) に抑える必要があります。 |
Transform Sync Colliders |
いいえ |
| Parent Sync Bodies |
Transform の親の変更によって発生した Transform Sync の影響を受けた Rigidbody2D の数です。これは最小限 (できれば 0) に抑える必要があります。 |
Transform Parent Sync Bodies |
いいえ |
| Parent Sync Colliders |
Transform の親の変更によって発生した Transform Sync の影響を受けた Collider2D の数です。これは最小限 (できれば 0) に抑える必要があります。 |
Transform Parent Sync Colliders |
いいえ |
Joints
| 統計 |
説明 |
対応のプロファイラーカウンター (正確な名称) |
リリースプレイヤーで利用可能か |
| Total |
このフレームに存在した Joint2D の総数です。ジョイントの解決には高いコストがかかる可能性があるので、これは最小限に抑える必要があります。 |
Total Joints |
いいえ |
Timings
ノート: すべての Timing (タイミング) は、すべての物理演算世界にわたっての合計です (World Count 参照)。タイミングが抽出された回数は、タイミング自体の後ろに続けて、角かっこ内に表示されます。タイミングを World Count の値で割れば平均時間が算出できます。
| 統計 |
説明 |
対応のプロファイラーカウンター (正確な名称) |
リリースプレイヤーで利用可能か |
| Sim |
完全なシミュレーションステップの処理に費やされた時間の合計です。これは、Unity によって (Physics2D.Simulate の呼び出しによって) 自動的に呼び出される場合と、直接の PhysicsScene2D.Simulate の呼び出しによって呼び出される場合があります。この時間には、Transform Sync (Read)、接触の計算、統合、接触とジョイントの解決、Transform Write、接触コールバックなどの、シミュレーションステップの完了に関わるすべてのステージが含まれます。 |
該当なし |
該当なし |
| Sync |
Transform Sync (Sync Calls 参照) の処理に費やされた時間の合計です。 |
該当なし |
該当なし |
| Step |
シミュレーションステップの処理に費やされた時間の合計です。この時間には、シミュレーションステップの完了に関わるコアステージ (接触の計算、統合、接触とジョイントの解決など) のみが含まれます。 |
該当なし |
該当なし |
| Write |
Transform Write 処理に費やされた時間の合計です。これは、シミュレーションステップの終了中の、ボディポーズが読み取られて Transform システムに書き戻される時に発生します。 |
該当なし |
該当なし |
| Callbacks |
すべてのコールバックの処理に費やされた時間の合計です (Total Callbacks 参照)。 |
該当なし |
該当なし |
追加リソース
Physics Profiler の Legacy モードを使用する