Оптимизация физики для игр, требующих только запросов или не симулирующих
Предотвратите запуск цикла обновления физики по умолчанию, чтобы уменьшить ненужную нагрузку на производительность, изменив Режим симулирования на Сценарий.
Предотвращение запуска цикла обновления физики по умолчанию может быть полезным, если ваша игра не требует симуляцию физики для сцены физики по умолчанию. Например, ваша игра может требовать только физические запросы, такие как raycasts, spherecasts или проверки накладок, но не Rigidbody компоненты с силами, гравитацией или движением, управляемым физикой.
Этот подход использует физические запросы для обнаружения столкновений или взаимодействия с окружающей средой без затрат на производительность полного физического моделирования и сохраняет контроль над синхронизацией данных преобразования.
Обратите внимание на следующее, если вы установите Режим Симулирования сцены по умолчанию на Сценарий:
- Физико-математические запросы по-прежнему функционируют, проверяя их на соответствие представлению коллайдеров в физике.
- Если у вас есть объекты в вашей сцене, которые перемещаются путем непосредственного манипулирования их
Transformкомпоненты, их положение во внутренних пространственных структурах физического движка не обновляется автоматически в соответствии с ихTransformпозиции кадр за кадром (поскольку по умолчанию в этом режиме не происходит никаких шагов симулирования). - Чтобы гарантировать точность лучевой трансляции и других запросов на эти коллайдеры, предположив, что
Physics.autoSyncTransformsявляетсяfalse(настройка по умолчанию и рекомендуемая), вы должны вручную вызватьPhysics.SyncTransformsодин раз за кадр перед выполнением запросов. Эта функция явно обновляет физическую систему текущим состоянием всех преобразований GameObject, у которых есть коллайдеры. - Если
Physics.autoSyncTransformsустановлен наtrue, то эта синхронизация происходит имплицитно перед каждым запросом, но это, как правило, не рекомендуется из-за потенциальной накладной синхронизации перед каждым запросом. Обратите внимание, чтоPhysics.autoSyncTransformsустарел. Чтобы узнать, как синхронизировать преобразования, см. Оптимизация синхронизации значений преобразований. - Без явного вызова
Physics.SyncTransforms(когдаautoSyncTransformsявляетсяfalse), запросы могут использовать устаревшие позиции объектов и приводить к неправильным результатам.
Чтобы предотвратить выполнение обновления физики по умолчанию в редакторе:
- Выберите Изменить > Project Настройки, чтобы открыть окно Настройки Project.
- Выберите вкладку Physics > Settings.
- Выберите вкладку GameObject.
- Установите Режим симулирования на Сценарий.
Чтобы отключить автоматическое моделирование в скрипте, установите Physics.simulationMode = SimulationMode.Script; во время выполнения.