Подтвердить что ты не робот

В чем разница между Update & FixedUpdate в Unity?

В чем разница между методами Update и FixedUpdate и когда следует использовать эти методы?

4b9b3361

Ответ 1

Из форум:

Обновление выполняется один раз для каждого кадра. FixedUpdate может запускаться один раз, ноль или несколько раз за кадр, в зависимости от того, сколько физических кадров в секунду установить в настройках времени и как быстро/замедлить частоту кадров.

Также см. ответ, данный утиной в том же форуме, для подробного объяснения разницы между ними.

Именно по этой причине FixedUpdate следует использовать при применении силы, крутящие моменты или другие связанные с физикой функции - потому что вы знаете он будет выполнен точно в синхронизации с самим физическим движком.

В то время как Update() может отличаться от шага с физическим движком, либо быстрее или медленнее, в зависимости от того, какая часть нагрузки графическая надевая механизм рендеринга в любой момент времени, который - если используется для физика - дадут соответственно варианты физических эффектов!

Ответ 2

FixedUpdate используется для того, чтобы идти в ногу с физическим движком, поэтому все, что нужно применить к жесткому телу, должно происходить в FixedUpdate. Обновление, с другой стороны, работает независимо от физического движка. Это может быть полезно, если пользовательская частота кадров должна была упасть, но вам нужно выполнить определенные вычисления, например, если вы обновляете чат или VoIP-клиент, вам нужно регулярное старое обновление.

У Unity есть хорошее видео об обновлении против FixedUpdate здесь: Unity - обновление против FixedUpdate

Сайт является отличным ресурсом для начинающих программистов игр.

Ответ 3

В добавление к другим ответам, обновление происходит с частотой кадров, а не с физическими расчетами. Это означает, что обычно, когда что-то меняет визуальные эффекты, вы хотите, чтобы это было сделано в Update, а не в FixedUpdate. Это гарантирует, что это всегда вовремя в тот самый момент, в который отображается кадр. Я столкнулся с рядом случаев, когда у меня было движение, которое не выглядело гладким, потому что я рассчитывал его в FixedUpdate.

Единственная потенциальная стоимость выполнения чего-либо в Update, которое должно быть сделано в FixedUpdate, заключается в том, что ваша физическая точность может снизиться, особенно если вы достигаете низкой частоты кадров (но в целом это отдельная проблема, которая должна быть решена, поэтому обычно это не так). хорошая причина поместить что-то в FixedUpdate вместо Update).

Если вы хотите контролировать порядок, в котором различные сценарии выполняют свои обновления, FixedUpdate - это неправильное дерево, которое нужно создавать; вы должны смотреть на что-то вроде EarlyUpdate.

Ответ 4

Я заметил, что большинство ответов здесь ясно объясняют, для чего предназначен FixedUpdate и когда его использовать. Однако я не видел четких примеров того, когда следует использовать обычное Update; Следующее из официального учебника Unity:

Update()

  • Называется каждый кадр
  • Используется для регулярных обновлений, таких как:
    • Движущиеся не физические объекты
    • Простые таймеры
    • Получение ввода (также известное как нажатие клавиш и т.д.)
  • Время вызова интервала обновления будет варьироваться, т.е. неравномерно

FixedUpdate()

  • Называется каждый шаг физики
  • FixedUpdate() интервалы FixedUpdate(), т.е. равномерно распределены
  • Используется для регулярных обновлений, таких как корректировка физических (например, RigidBody) объектов

Ответ 5

Update(): содержит тот код, который должен быть выполнен с визуальным рендерингом

FixedUpdate(): содержит тот код, который должен быть синхронизирован с физическим взаимодействием

источник: https://youtu.be/noXtT_zN-84?t=3057