Как указано в в этом сообщении , Update () запускается один раз за кадр. Поэтому, если ваша игра работает на 30 кадрах в секунду, тогда Update () будет выполняться 30 раз в секунду.
Чтобы указать функцию, которая будет выполняться каждые x секунд, вы можете использовать InvokeRepeating . Для этого поместите логику, которую вы хотите выполнять каждую секунду, в свой собственный метод:
void DepleteHealth()
{
if (Hunger <= 0.0f)
{
userHealth -= HealthDepletionValue * Time.deltaTime;
}
}
А затем в методе Start()
вызовите InvokeRepeating
, передав имя вашего метода и количество секунд между выполнением указанного метода:
void Start()
{
InvokeRepeating("DepleteHealth", 1.0f, 1.0f);
}
Пост выше также показывает альтернативные способы справиться с этим. Включая отслеживание второго счетчика в методе Update (), чтобы убедиться, что ваша логика выполняется только в том случае, если счетчик прошел целую секунду.