Collider типы и производительность
Оптимизируйте производительность CPU, выбрав наиболее подходящий тип коллайдера для вашей сцены.
Выбор правильного типа коллайдера напрямую влияет на производительность CPU. Unity имеет несколько типов коллайдеров, каждый из которых имеет различные вычислительные затраты.
Чтобы узнать больше о свойствах компонента Mesh Collider, см. Справочная информация о компонентах сетчатого коллайдера.
Чтобы узнать больше о взаимодействиях коллайдера, см. Collider взаимодействия.
В нижеследующей таблице кратко описываются типы коллайдеров и их эксплуатационные характеристики в порядке от наиболее эффективных до наименее эффективных:
| Collider тип | Эксплуатационные характеристики |
|---|---|
| Сфера Collider | Самый простой и эффективный коллайдер. Используется для круглых объектов и взаимодействий общего назначения. |
| Капсула Collider | Немного сложнее, чем Сфера Collider, но все же эффективно. Используйте для символов, столбов или других удлиненных форм. |
| Коробка Collider | Эффективный и гибкий, особенно для прямоугольных или блоковых объектов. Немного более ресурсоемкий, чем Sphere Collider или Capsule Collider. |
| Выпуклые сетки Collider | Более ресурсоемкий, чем примитивные коллайдеры. Используйте только тогда, когда примитивные формы или сложные коллайдеры не могут приблизить геометрию. Сетка должна быть выпуклой. Вы можете прикрепить это к GameObjects с некинематическими Rigidbody компонентами. |
| Невыпуклые сетки Collider | Сетка Collider с Выпуклость снят. Самый ресурсоёмкий тип коллайдера. Применяйте его только для статической, неподвижной геометрии, которой нужны точные поверхности столкновений. К некинематическим Rigidbody его прикреплять нельзя. |
Композитные коллайдеры
Композитные коллайдеры формируются путем объединения нескольких примитивных коллайдеров, таких как коллайдеры сферы, коробки и капсулы, в один GameObject с компонентом Rigidbody. Вы можете использовать композитные коллайдеры, которые состоят из простых компонентов, для приближения сложных форм. Композитные коллайдеры, как правило, более эффективны, чем использование одной сложной сетки Collider для динамического объекта, но они более ресурсоемки, чем один примитивный коллайдер.
Использование как можно меньшего числа примитивных коллайдеров в составной конфигурации для эффективного обнаружения столкновений.
Чтобы узнать больше о сложных коллайдерах, см. Композитные коллайдеры.
Используйте коллайдеры с комбинированным блоком в следующих случаях:
- У вас есть объект, форма которого не может быть точно представлена одним примитивным коллайдером.
- У вас есть динамические объекты, которые требуют сложной формы столкновения, но должны оставаться производительными (в качестве альтернативы дорогостоящей выпуклой сетке Collider).
- Вам нужны динамические вогнутые формы столкновения, которые не могут быть получены с помощью одной сетки Collider на динамической
Rigidbody, поскольку одна сетка Collider должна быть выпуклой. - Для геймплея вам нужны точно отрегулированные зоны столкновения. Например, у вас есть отличные hitboxes головы, туловища или конечностей на персонаже.
Подготовка мешей для коллайдеров мешей
Компоненты Mesh Collider требуют предварительной обработки, называемой «приготовлением сетки», для преобразования их геометрии в оптимизированный формат для эффективных физических расчетов. Если это приготовление происходит во время выполнения, это может вызвать значительный пик производительности CPU.
Чтобы узнать больше о компонентах Mesh Collider, см. Коллайдеры Mesh.
Чтобы избежать приготовления сетки во время выполнения, выполните следующие действия:
- Использовать приготовление во время работы редактора (подразумеваемое): Основной способ предварительного приготовления мешей в Редакторе. Когда вы назначаете ассет Mesh компоненту Mesh Collider в окне Inspector и сохраняете сцену или префаб, Редактор автоматически приготовлен меш для конкретного экземпляра коллайдера. Затем приготовленные данные сохраняются с вашим ассетом.
- Включите Prebake Collision Meshes в разделе Player Project Настройки: Включить Prebake столкновения сетки чтобы редактор проактивно искал и готовил все меши, используемые Mesh Collider компонентов в вашем проекте во время сборки, импорта ресурсов и загрузки редактора. Этот параметр включен по умолчанию. Prebake столкновения сетки может увеличить время сборки и время загрузки редактора по мере обработки мешей. Данные хранятся, что незначительно влияет на размер сборки, если участвует много уникальных мешей, но главным компромиссом является увеличение времени сборки и загрузки по сравнению со стабильностью выполнения. Prebake столкновения сетки чтобы предотвратить неожиданные пики приготовления во время выполнения, обеспечивая готовность большинства мешей. Рекомендуемая передовая практика заключается в том, чтобы Prebake столкновения сетки в качестве сети безопасности. Рассмотрите возможность отключения Prebake столкновения сетки только если вы вручную и тщательно управляете всем приготовлением меши. Например, вы полагаетесь исключительно на приготовление экземпляра редактора во время и
Physics.BakeMeshдля всех динамических случаев и вы хотите потенциально сократить время обработки сборки и редактора. - Использование
Physics.BakeMesh: Для мешей, назначенных или процедурно созданных во время выполнения, используйтеPhysics.BakeMesh(meshInstanceId, convex, cookingOptions)для явного контроля за тем, когда происходит приготовление.Physics.BakeMeshво время загрузки экранов или в фоновых потоках, если вы используете система работы.