Ответы:
FixedUpdate
может работать быстрее или медленнее, чем в Update
зависимости от ваших настроек. Это будет зависеть от нагрузки (скорость Update
работы) и скорости, которую вы установили FixedUpdate
(см. «Правка» - «Настройки проекта» -> «Время»). В идеале, поскольку Update
он запускается один раз за кадр, именно здесь вы хотите захватить ввод. Если вам нужно воздействовать на входные данные в FixedUpdate
методе (например, управлять физическими телами), установите флаги и Update
обработайте их FixedUpdate
:
bool leftMouseDown = false;
void Update()
{
if(Input.GetMouseButtonDown(0))
leftMouseDown = true;
}
void FixedUpdate()
{
if(leftMouseDown )
{
//update physics bodies with input
leftMouseDown = false;
}
}
Хорошей идеей по-прежнему является управление физикой с помощью FixedUpdate
метода, поскольку вряд ли физику нужно обновлять так часто, а физику при фиксированном обновлении предсказать гораздо проще ( детерминизм ), чем физику при обновлении переменной.
FixedUpdate
. Это одна из тех вещей, которая требует некоторого игрового тестирования, чтобы действительно понять, что «чувствует» правильно.
Вы должны понимать, что каждый из них делает. Update()
вызывается как можно чаще (не уверен, может быть, его можно ограничить), в любом случае - каждый кадр. FixedUpdate()
вызывается каждый постоянный промежуток времени (следовательно, «фиксированный»).
Ввод идет Update()
так же просто (потому что, как вы заметили, FixedUpdate()
может не перехватить событие ввода). Логика игры, однако, может войти в любую из них. Физика должна быть детерминированным , и поэтому она должна быть FixedUpdate()
. Другие вещи не должны. В зависимости от использования вы должны решить, какая функция подходит.
Кроме того, стоит сказать, что в некоторых приложениях есть обновление всей игровой логики FixedUpdate()
(даже вне ее Unity
) - это называется «цикл игры с фиксированным шагом». Наличие всего кода обновления в функции с фиксированным шагом дает вам детерминизм и повышает вероятность того, что ваше приложение будет вести себя одинаково каждый раз (и на каждом устройстве). Также учитывает некоторые необычные функции, такие как повторы.