协程

协程

分时执行,不卡主线程

使用场景

异步加载

异步下载

场景异步加载

批量创建防止卡顿

协程函数

1
2
3
4
5
6
IEnumerator MyCoroutine(int i, string str)
{

yield return new WaitForSeconds(5f);

}

开始协程

1
Coroutine c1 = StartCotoutine(MyCoroutine(1,"123"));

关闭协程

1
StopAllCoroutines();
1
2
关闭指定携程
StopCoroutine(c1);

返回值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
   1.下一帧执行
yield return 数字;
yield return null;
在Update和LateUpdate之间执行

2.等待指定秒后执行
yield return new WaitForSeconds();
在Update和LateUpdate之间执行

3.等待下一个固定物理帧更新时执行
yield return new WaitFOrFixedUpdate();
在FixedUpdate和碰撞检测相关函数之后执行

4.等待摄像机和GUi渲染完成后执行
yield return new WaitForEndOfFrame();
在LateUpdate之后的渲染相关处理完毕之后

5.一些特殊类型对象 比如异步加载相关函数返回的对象
一般在Update和LateUpdate之间执行

6.跳出协程
yield break

失活影响

组件和物体销毁,协程不执行

物体失活协程不执行,组件失活协程执行