не рекомендую делать WaitForSeconds в Update потому что по сути такой код будет начинать каждый тик (Update вызывается 60 вроде бы раз в секунду) новый интервал задержки, и сам Update может встать (или чтото еще в таком духе, надо тестить, вообщем баг явный)
на самом деле такой код может рабоатть, но только для быстрых корутин, не для ожидания 5 сек
лучше запустить корутину из Start() - пример же в доке есть
void Start()
{
//Start the coroutine we define below named ExampleCoroutine.
StartCoroutine(ExampleCoroutine());
}
IEnumerator ExampleCoroutine()
{
//Print the time of when the function is first called.
Debug.Log("Started Coroutine at timestamp : " + Time.time);
//yield on a new YieldInstruction that waits for 5 seconds.
yield return new WaitForSeconds(5);
//After we have waited 5 seconds print the time again.
Debug.Log("Finished Coroutine at timestamp : " + Time.time);
}
sylniyduxom, зависит от того что для вас "определенный момент"
если у вас объект создается в этот самый момент, то его Start() запустит корутину
ну или в каком-то корневом объекте (менеджере игры?) сделайте запуск корутины, в которой WaitForSeconds(нужное число задержки) и по исполнению этой задержки = действие сработает
// GAME MANAGER
void Start()
{
StartCoroutine(CoroutineDelayAndRun());
}
IEnumerator CoroutineDelayAndRun()
{
yield return new WaitForSeconds(5);
Run(); // этот метод через 5 сек вызовется от старта корутины
}