Физика ProfilerОкно, помогающее оптимизировать игру. Он показывает, сколько времени вы тратите на различные области вашей игры. Например, он может сообщать о проценте времени, затраченном на рендеринг, анимацию или игровую логику. Дополнительная информация
См. в Словарь отображает информацию о физике, которую физический движокСистема, моделирующая аспекты физических систем, чтобы объекты могли правильно ускоряться и подвергаться воздействию столкновений, гравитации и других сил. Подробнее
См. в Словарь, обработанный в вашем СценаСцена содержит окружение и меню вашей игры. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее
См. в Словарь. Эта информация может помочь вам диагностировать и устранять проблемы с производительностью или непредвиденные несоответствия, связанные с физикой вашей сцены.
Дополнительную информацию об отладке физики в приложении см. в документации по визуализации отладки физики.
Категории диаграмм и панель сведений о модуле
Диаграмма модуля Physics Profiler отслеживает время, которое ваше приложение тратит на физику. Тайминги делятся на семь категорий. Чтобы изменить порядок категорий на диаграмме, вы можете перетащить их в легенду диаграммы. Вы также можете щелкнуть цветную легенду категории, чтобы переключить ее отображение.
Нажав на диаграмму, вы увидите точные числовые значения каждой категории диаграммы на панели сведений о модуле под диаграммой.
График | Функция |
---|---|
Active Dynamic | Количество активных некинематических компонентов Rigidbody. Активный Rigidbody — это тот, который не спит. |
Active Kinematic | Количество активных компонентов Kinematic Rigidbody. Kinematic Rigidbody активен, когда MovePosition или MoveRotation вызывается в кадр и остается активным в следующем кадре.
Примечание. Unity может обрабатывать компоненты Kinematic Rigidbody, к которым шарниры прикреплены несколько раз за кадр, и это влияет на отображаемое значение. |
Static Colliders | Количество компонентов Collider в GameObjects, у которых нет компонентов Rigidbody, прикрепленных к GameObjects или их родительским GameObjects.
Компоненты коллайдера на игровых объектах или родительских игровых объектах, которые имеют компоненты Rigidbody, не считаются статическими коллайдерами. Они называются составными коллайдерами. Составные коллайдеры упорядочивают несколько коллайдеров тела удобным способом, вместо того чтобы располагать все коллайдеры на одном игровом объекте в качестве компонента Rigidbody. |
Rigidbody | Количество компонентов Rigidbody, обработанных физическим движком, независимо от состояния сна компонентов. |
Trigger Overlaps | Количество перекрывающихся триггеров (считается парами). |
Active Constraints | Количество примитивных ограничений, обработанных физическим движком. Ограничения используются в качестве строительного блока JointsФизического компонента, обеспечивающего динамическую связь между компонентами Rigidbody, обычно допускающего некоторую степень движения, например как шарнир. Подробнее См. в Словарь, а также в collisionСтолкновение происходит, когда физический движок обнаруживает, что коллайдеры двух GameObject соприкасаются или перекрываются, когда хотя бы один имеет компонент Rigidbody и находится в движении . Подробнее См. ответ Словарь. Например, ограничение линейной или вращательной степени свободы ConfigurableJoint включает примитивное ограничение для каждого ограничения. |
Contacts | Общее количество пар контактов между всеми коллайдерами в сцене, включая количество пар перекрытия триггеров. Контакт — это пара коллайдеров, которые либо соприкасаются, либо перекрываются. Примечание. Unity создает пары контактов для каждого коллайдераневидимой формы, которая используется для обработки физических столкновений объекта. Коллайдер не обязательно должен быть точно такой же формы, как сетка объекта — грубое приближение часто бывает более эффективным и неразличимым в игровом процессе. Подробнее Просматривать в паре Словарь, когда расстояние между ними меньше определенного настраиваемого пользователем предела . Таким образом, вы можете увидеть контакты, сгенерированные для компонентов Rigidbody, которые еще не соприкасаются и не перекрываются. Дополнительную информацию см. в документации по Collider.contactOffset и ContactPoint.separation. подробности. |
Числа, отображаемые в Profiler, могут не соответствовать точному количеству GameObjectsфундаментального объекта в сценах Unity, который может представлять персонажей, реквизит, декорации, камеры, путевые точки и многое другое. Функциональность GameObject определяется прикрепленными к нему компонентами. Подробнее
См. в Словарь с физическими компонентами в вашей сцене. Это связано с тем, что Unity обрабатывает некоторые физические компоненты с разной скоростью в зависимости от того, какие другие компоненты влияют на него (например, присоединенный компонент Joint). Чтобы вычислить точное количество GameObjects с прикрепленными определенными физическими компонентами, вы должны написать собственный скрипт с функцией FindObjectsOfType.
Модуль Physics Profiler не показывает количество спящих компонентов Rigidbody. Это компоненты, которые не взаимодействуют с физическим движком и, следовательно, не обрабатываются профилировщиком. Дополнительные сведения о спящих компонентах Rigidbody см. в документации по RigidbodyКомпоненту, который позволяет GameObject, на который будет воздействовать смоделированная гравитация и другие силы. Подробнее
См. в Словарь.
Использование профилировщика физики для понимания проблем с производительностью
Моделирование физики выполняется в цикле обновления с фиксированной частотой, отдельном от цикла обновления основной логики, и может опережать время только через Time.fixedDeltaTime. за звонок. Это похоже на разницу между Update и FixedUpdate. Дополнительную информацию об этом см. в документации по окну времени.
Когда тяжелая логика или графический кадр занимают много времени, профайлеру приходится вызывать физическую симуляцию несколько раз для каждого кадра. Это означает, что и без того ресурсоемкий каркас требует еще больше времени и ресурсов. Это может привести к временной остановке имитации физики в соответствии со значением Максимально допустимого временного шага, которое можно установить в окне «Настройки проекта» (меню: Правка > Настройки проекта > Время).
Чтобы обнаружить это в своем проекте, выберите модуль CPU Usage Profiler и проверьте количество вызовов для Physics.Processing или Physics. .Simulate в разделе "Обзор" представления Иерархия.
На этом примере изображения значение 1 в столбце "Вызовы" указывает на то, что симуляция физики вызывалась один раз в течение последнего логического кадра.
Количество вызовов, близкое к 10, может указывать на проблему. В качестве первого решения уменьшите частоту симуляции физики, и если проблема не исчезнет, проверьте, что могло вызвать тяжелый кадр, прежде чем физическому движку пришлось бы использовать множество вызовов симуляции, чтобы догнать игровое время. Иногда тяжелый графический кадр может вызывать дополнительные вызовы физической симуляции позже в сцене.
Для получения более подробной информации о моделировании физики в вашей сцене выберите поле поиска в верхней части области сведений о модуле, выполните поиск Physics.Processing, а затем выберите Показать вызовы из раскрывающегося списка в правом верхнем углу панели. Здесь отображаются имена задач физического движка, которые запускаются для обновления вашей сцены. Два наиболее распространенных имени, которые вы, вероятно, увидите:
- Pxs: сокращение от «PhysX Solver», которые представляют собой задачи физического движка, требуемые для соединений, а также разрешение контактов для перекрывающихся твердых тел.
-
ScScene: используется для задач, которые обновляют Сцену, запускают широкую и узкую фазы и интегрируют твердые тела (перемещая их в пространстве под действием сил и импульсов). Для получения дополнительной информации см. определение двухэтапного обнаружение столкновенийАвтоматический процесс, выполняемый Unity, который определяет, вступал ли движущийся GameObject с Rigidbody и компонентом коллайдера в контакт с какими-либо другими коллайдерами . Подробнее
Просмотреть в Словарь.