Unity 协程实现

Unity 的协程是通过 IEnumerator实现的。类似于切分成很多代码块,通过moveNext判断哪个代码块应该执行。

	public interface IEnumerator
	{
		object Current
		{
			get;
		}

		bool MoveNext();

		void Reset();
	}

MoveNext返回bool就是用来判断是否可以执行接下来的代码块。

因此只要继承IEnumerator,然后修改moveNext的判定方式,就可以通过yield return Class 这种方式判断是否继续执行。

yield return new WaitWhile 和 WaitUntil 返回bool 也是这个意思。

Unity有一个写好的类CustomYieldInstruction,这个类继承IEnumerator,然后实现了方法。

因此只需要继承CustomYieldInstruction这个类就行。

 public class CustomCameraBase : CustomYieldInstruction
    {
        protected bool isLoad;


        public override bool keepWaiting
        {
            get
            {
                return !isLoad;
            }
        }
    }
发布了31 篇原创文章 · 获赞 2 · 访问量 2768

猜你喜欢

转载自blog.csdn.net/BDDNH/article/details/104006258