Все еще на ранней стадии изучения как Unity, так и C#, но это возникло в упражнении и может быть ответом на вашу проблему?
от: https://docs.unity3d.com/Manual/Coroutines.html
По умолчанию сопрограмма возобновляется в кадре после его выдачи, но также можно ввести задержку по времени, используя WaitForSeconds:
Это можно использовать как способ распространять эффект в течение определенного периода времени, но это также полезная оптимизация. Многие задачи в игре необходимо выполнять периодически, и наиболее очевидный способ сделать это - включить их в функцию обновления. Однако эта функция обычно вызывается много раз в секунду. Когда задачу не нужно повторять достаточно часто, вы можете поместить ее в сопрограмму, чтобы получать обновления регулярно, но не каждый отдельный кадр. Примером этого может быть сигнал тревоги, который предупреждает игрока, если рядом находится враг.
Чтобы запустить сопрограмму, вам нужно использовать функцию StartCoroutine: