Оптимизация обратных вызовов столкновений
Снижение нагрузки на сборщик мусора (GC) и повышение производительности за счет оптимизации распределения обратных вызовов коллизий.
Unity предоставляет такие сообщения об обратном вызове в случае физического столкновения:
По умолчанию, каждый раз, когда эти обратные вызова вызываются, Unity выделяет новые Collision (или Collider для триггеров) объекты данных в памяти для хранения информации о столкновении. Эти частые небольшие выделения могут увеличить нагрузку на сборщик мусора.
Чтобы уменьшить количество выделений от этих обратных вызовов, вы можете включить параметр Reuse Collision Callbacks, чтобы Unity повторно использовал меньший пул экземпляров данных Collision. Это снижает нагрузку на память и повышает производительность, особенно в сценариях с большим количеством событий столкновения в кадре. Обратите внимание, что если вы повторно используете обратные вызовы столкновений, то данные Collision, передаваемые обратным вызовам, действительны только во время этого конкретного обратного вызова.
Дополнительные сведения о сборе мусора см. в Обзор сборщика мусора.
По умолчанию Повторное использование коллизионных обратных вызовов включено в Настройках Project. Чтобы убедиться, что вы повторно используете коллизионные обратные вызовы и уменьшаете выделения GC из этих обратных вызовов в Редакторе:
- Перейдите в Изменить > Project Настройки, чтобы открыть окно Настройки Project.
- Выберите вкладку Physics > Settings.
- Выберите вкладку GameObject.
- Убедитесь, что Повторное использование обратных вызовов коллизий включено.
Чтобы уменьшить выделение GC из этих обратных вызовов в скрипте, установите Physics.reuseCollisionCallbacks = true.