赞
踩
协程就是在主程序运行的同时又开启一个逻辑处理程序来协助当前程序,协程程序相当一个线程。协程其实就是一个IEnumerator(迭代器),其中必须含有yield return ,yield return语句是一种特殊的返回语句,它可以确保函数在下一次被执行时,不是从头开始,而是从Yield语句处开始。
常用的yield return语句:
yield return new WaitForSeconds();//等待几秒,括号中填数字
yield return null / 0;//等待一帧
yield return new WaitForEndOfFrame();//等待一个固定的帧,有降低卡频率的作用
一个协程的声明格式:
IEnumerator 协程名(){ yield return语句; }(如果协程中有循环语句可通过 yield break跳出循环)
开启协程:
开启一个协程用StartCoroutine("协程名")或StartCoroutine(协程名()),一般协程的开启在Unity生命周期函数中的Start()函数中开启,不建议在Update()函数中直接开启一个协程,避免卡死
结束协程:
1、用StopCoroutine("协程名")结束一个协程
2、用StopAllCoroutines()结束所用协程
3、明一个协同程序(Coroutine)变量,再将StartCoroutine(协程名())赋值给协程变量,再用StopCoroutine(变量名)结束协程
例:
打印5个数字,每隔1秒打印一个数字,当打印到3的时候停止打印
- Coroutine c;
-
- private void Start () {
-
- c=StartCoroutine(Clone());
-
- }
-
- IEnumerator Clone()
-
- {
-
- for (int i = 1; i <= 5; i++)
-
- {
-
- if (i == 3)
-
- {
-
- StopCoroutine(c);
-
- }
-
- yield return new WaitForSeconds(1);
-
- }
-
- }
特别说明:
1、用StartCoroutine("协程名")开启协程,可以用上述的三种方法结束协程
2、用StartCoroutine(协程名())开启协程,只能用后两钟方法结束协程
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。