Version: 2019.2
Audio Profiler
GPU Profiler

Perfilador de Física(Physics Profiler)

El Physics Profiler muestra estadísticas acerca de la física que ha sido procesada por el motor de física en su Escena. Esta información lo puede ayudar para diagnosticar y resolver problemas de rendimiento o discrepancias inesperadas relacionadas con la física en su escena.

See also Physics Debug Visualization.

Physics Profiler
Physics Profiler

Propiedades

Propiedad: Función:
Active Dynamic The number of non-Kinematic Rigidbody components that are not sleeping.
Active Kinematic The number of Kinematic Rigidbody components that are not sleeping. Note that Kinematic Rigidbody components with joints attached may be processed multiple times per frame, and this contributes to the number shown. A Kinematic Rigidbody is active when MovePosition or MoveRotation is called in a frame, and remains active in the next frame.
Static Colliders The number of Collider components on GameObjects that don’t have Rigidbody components attached to the GameObjects or their parent GameObjects. If such GameObjects or their parent GameObjects have Rigidbody components, the Colliders will not count as Static Colliders. Those Colliders are instead referred to as Compound Colliders. These help to arrange multiple Colliders of a body in a convenient way, rather than having all the Colliders on the same GameObject as the Rigidbody component.
Rigidbody The number of Rigidbody components processed by the physics engine, irrespective of the components’ sleeping state.
Trigger Overlaps The number of overlapping triggers (counted in pairs).
Active Constraints The number of primitive constraints processed by the physics engine. Constraints are used as a building block of Joints as well as collision response. For example, restricting a linear or rotational degree of freedom of a ConfigurableJoint involves a primitive constraint per each restriction.
Contacts The total number of contact pairs between all Colliders in the Scene, including the amount of trigger overlap pairs as well. Note that contact pairs are created per Collider pair once the distance between them is below a certain user configurable limit, so you may see contacts generated for Rigidbody components that are not yet touching or overlapping. Refer to Collider.contactOffset and ContactPoint.separation for more details.

Notes:

  • The numbers might not correspond to the exact number of GameObjects with physics components in your Scene. This is because some physics components are processed at a different rate depending on which other components affect it (for example, an attached Joint component). To calculate the exact number of GameObjects with specific physics components attached, write a custom script using the FindObjectsOfType function.

  • The Physics Profiler does not show the number of sleeping Rigidbody components. These are components which are not engaging with the physics engine, and are therefore not processed by the Physics Profiler. Refer to Rigidbody overview: Sleeping for more information on sleeping Rigidbody components.

Using the Physics Profiler to understand performance issues

The physics simulation runs on a separate fixed frequency update cycle from the main logic’s update loop, and can only advance time via a Time.fixedDeltaTime per call. This is similar to the difference between Update and FixedUpdate (see documentation on the Time window for more).

When a heavy logics or graphics frame occurs that takes a long amount of time, the Physics Profiler has to call the physics simulation multiple times per frame. This means that an already resource-intensive frame takes even more time and resources, which can easily cause the physics simulation to temporarily stop due to the Maximum Allowed Timestep value (which can be set in Edit > Project Settings, then select the Time category).

You can detect this in your project by selecting the CPU Usage Profiler and checking the number of calls for Physics.Processing or Physics.Simulate in the Overview section.

Physics Profiler with the value of 1 in the Calls column
Physics Profiler with the value of 1 in the Calls column

In this example image, the value of 1 in the Calls column indicates that the physics simulation was called one time over the last logical frame.

Un recuento de llamadas cercano a 10 podría indicar un problema. Como primera solución, reduzca la frecuencia de la simulación física; Si el problema continúa, compruebe lo que podría haber causado el frame pesado justo antes de que el Physics Profiler tuviera que usar muchas llamadas de simulación para ponerse al día con el tiempo de juego. A veces, un frame de gráficos pesados puede causar más llamadas de simulación física más adelante en una escena.

Para obtener información más detallada sobre la simulación física en su escena, haga clic en la flecha de triángulo para expandir Physics.Processing como se muestra en la captura de pantalla anterior. Esto muestra los nombres reales de las tareas del motor de la física que se ejecutan para actualizar su escena. Los dos nombres más comunes que puedes ver son:

  • Pxs: abreviatura de ‘PhysX solver’, que son tareas del motor de física requeridas por los joints (articulaciones), así como la resolución de contactos para los cuerpos sobrepuestos.

  • ScScene: se utiliza para las tareas necesarias para actualizar la escena, ejecutando la fase amplia y la fase estrecha, y los cuerpos integradores (moviéndolos en el espacio debido a las fuerzas y los impulsos). Véase el trabajo de Steven M. LaValle sobre algoritmos de Planning para una definición sobre fases de detección de colisión de dos fases.

Audio Profiler
GPU Profiler