Почему сопрограммы наследуются от IEnumerator? - PullRequest
4 голосов
/ 18 октября 2019

Как наследование от IEnumerator заставляет метод вести себя как сопрограмма? Это должно быть как-то связано с компилятором, верно?

IEnumerator Fade() 
{
    for (float ft = 1f; ft >= 0; ft -= 0.1f) 
    {
        Color c = renderer.material.color;
        c.a = ft;
        renderer.material.color = c;
        yield return null;
    }
}

1 Ответ

4 голосов
/ 18 октября 2019

Согласно документации Microsoft C # , IEnumerator - это просто полезный интерфейс для перебора коллекции объектов. Он определяет метод MoveNext() и метод Reset() для навигации по коллекции, к которой он прикреплен. Сопрограммы могут выполняться во многих кадрах, поэтому Unity, вероятно, использует IEnumerator для итерации по изменениям состояния Coroutine по мере продвижения каждого кадра.

Объявление методов Coroutine можно найти в привязках MonoBehavior в исходном коде Unity. здесь .

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