WaitForSeconds не работает в "пользовательской" сопрограмме - PullRequest
0 голосов
/ 28 марта 2019

Я пишу свой собственный CoroutineScheduler, который выглядит (упрощенно) примерно так:

void Start()
{
    cr = test();
}

void Update()
{
    cr.MoveNext();
}

IEnumerator test()
{
    int i = 0;

    while (true)
    {
        print(i++);
        yield return new WaitForSeconds(3);
    }
}

Проблема в том, что моя функция печатает число не каждые 3 секунды, а каждый кадр.

это потому что я не использую StartCoroutine () или есть другая проблема?

1 Ответ

1 голос
/ 28 марта 2019

Вы не запускаете сопрограмму.Либо выполните

IEnumerator Start() 
{
   return test();
}

или

void Start() 
{
   StartCoroutine(test());
}

edit: вызов cr.MoveNext () просто переместит перечислитель к следующей записи без применения логики WaitForSeconds

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...