协程可以通过StartCoroutine()来调用
只需要在里面穿进去一个IEnumerator类型的方法 就可以了。这个方法是可以带有参数的哦。
举个例子
IEnumerator Test2()
{
Debug.Log("Test211111111111111111111111111111111111");
yield return null;
}
void Start ()
{
StartCoroutine(Test2());
}
这样就在一开始调用这个Test2的方法了
现在我来着重讲讲最让人烦心的yield return这个东西
yield return 这里我是返回的Null,这个代表这个协程在这里跳出,在下一帧的时候再次从这里开始执行代码,也就是后面的空语句。
Test2()这个方法体中的所有程序语句全部按顺序执行完毕后,这个协程就做完了。
但是这个方法是可以通过循环语句重复调用,使协程永远不会结束。
IEnumerator test()
{
while (true)
{
Debug.Log("Test1"+Time.time);
yield return null;
}
}
回到yield return上来
yield return null:
yield return new WaitForSeconds(): 调用Unity自带的方法,等待多少秒后继续执行后面代码
yield return test(): 调用自己的协程方法
yield return 0:同null
yield return 1:同null
yield return 100:也同null , 也就是说 后面的数字不管多少,都是同null
yield break:协程直接从此处终止
return null:别用会报空指针。
刚才讲了IEnumerator 自制函数,并且这个自制函数是可以传入参数的,我们就在想,可不可以传入一个IEnumerator的参数来在这个自制函数里执行另一个函数,结果是不行。
更多详细的知识请参考:https://blog.csdn.net/tom_221x/article/details/78546037