网上有很多协程的讲解
但讲到协程返回自定义IEnumerator的却很少
今天看到一个框架里有类似的写法
简单整理如下
public class CustomIEnumerator : IEnumerator { public bool isDone { get; set; } = false; public bool MoveNext() { return !isDone; } public void Reset() { } public object Current => null; } private IEnumerator TestCustomIEnumerator() { Debug.Log("TestCustomIEnumerator begin"); yield return op; Debug.Log("TestCustomIEnumerator end"); } CustomIEnumerator op = new CustomIEnumerator(); StartCoroutine(TestCustomIEnumerator());
执行后日志打印顺序如下
1.先打印TestCustomIEnumerator begin
2.停住
3.等到其他地方将op.isDone=true之后随即打印TestCustomIEnumerator end
十分简单清晰
关于协程yield return的不同类型网上有很多讲解
包括return数字、null、StartCoroution、WaitForSeconds等等
但介绍return IEnumerator的例子却非常少(注意:IEnumerator就是协程函数定义时的返回类型)
简单讲,return IEnumerator时,IEnumerator对象MoveNext方法返回true就下一帧继续等 返回false协程就执行完了
大概就这么回事儿
参考资料
https://gwb.tencent.com/community/detail/117096
https://www.codenong.com/cs110791595/
QQ:393422044
Email:fkrfkrfkr@163.com