Unity Coroutine Yields, но также продолжает обновлять переменные

Я ищу эту сопрограмму для обновления переменной каждую секунду:

int i = 0;

void Start()
{
    StartCoroutine ("MyCoRoutine");
}

IEnumerator MyCoRoutine()
{
    while ( true )
    {
        print ("Counter Value: " + i++);
        yield return new WaitForSeconds(1f);
    }
}

Я ожидал бы, что отладка консоли будет показывать увеличивающееся значение каждую секунду, вместо этого она обновляется каждую секунду, но с непоследовательными значениями:

Значение счетчика: 0 UnityEngine.MonoBehaviour:print(Object) c__Iterator0:MoveNext() (в Assets/building.cs:81)

Значение счетчика: 51 UnityEngine.MonoBehaviour:print(Object) c__Iterator0:MoveNext() (в Assets/building.cs:81)

Значение счетчика: 119 UnityEngine.MonoBehaviour:print(Object) c__Iterator0:MoveNext() (в Assets/building.cs:81)

так далее..

Что я не понимаю о сопрограммах / урожайности, которые могут вызвать такие странные явления?

0 ответов

Другие вопросы по тегам