На паузе корутина награды не доходит до конца
Показ окна с наградой запускается корутиной:
IEnumerator ShowRewardDelayed()
{
yield return new WaitForSeconds(2f);
_rewardPopup.Show();
}
Окно паузы ставит Time.timeScale = 0f. Тестировщики нашли баг: если открыть паузу сразу после старта корутины, окно награды не появляется вообще, пока паузу не снимут. Объект с корутиной при этом активен и не уничтожается. Почему?
- При timeScale = 0 у объектов перестаёт вызываться Update, а корутины продвигаются именно из него, поэтому выполнение замирает до снятия паузы
- Корутина останавливается в момент открытия окна паузы, потому что пауза перехватывает управление интерфейсом: её надо перезапускать после снятия паузы
- WaitForSeconds отсчитывает игровое время, а при timeScale = 0 оно стоит: нужно ожидание по реальному времени
- Корутина запущена не на том компоненте: ожидание секунд отсчитывается только на объекте с активной камерой, на остальных объектах оно зависает
