首页 > 解决方案 > 为什么协程继承自 IEnumerator?

问题描述

从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;
    }
}

标签: unity3d

解决方案


根据Microsoft 的 C# 文档IEnumerator它只是一个用于迭代对象集合的有用接口。它定义了一个MoveNext()方法和一个Reset()用于导航它所附加到的集合的方法。协程可以跨多个帧执行,因此 Unity 可能会使用 IEnumerator 在每个帧进行时迭代协程的状态变化。

您可以在此处MonoBehavior的 Unity 源代码中的绑定中找到协程方法的声明。


推荐阅读