最近在学习uinty,用到了协程这个东西。网上查阅了很多资料,介绍的都十分复杂,而且没有太大价值,不得不说有项目经验的人果真厉害,几句话就点醒了我,现在直接解释。
1. 协程不是多线程!!! 协程还是在主线程里面,这点十分重要,不要被网上其他资料误导。
2. 协程不是只能做简单的延迟,虽然你可能用过下面的延迟几秒的代码,但是协程的价值在这里完全体现不出来。
void Start()
{
StartCoroutine(coRoutine());
}
IEnumerator coRoutine()
{
yield return new WaitForSeconds(1);
}
因为其实这种只是暂停几秒,完全没必要单独开一个协程,下面这种方法也可以实现
IEnumerator Start () {
// StartCoroutine(coRoutine());
Debug.Log("1");
yield return new WaitForSeconds(3);
Debug.Log("2");
}
是不是很意外,start竟然也可以return,当然一般不这么做,这个例子只是为了说明协程不只是用来做延迟的
3. 协程的真正用途是分步做一个比较耗时的事情,比如游戏里面的加载资源
private int num = 0;
private const int total=30;
void Start()
{
StartCoroutine(coRoutine());