这里写自定义目录标题
协同程序
进程:每一个可执行应用程序都是一个进程
线程:每一个进程中,至少有一个主线程,可以有多个辅线程
协同程序的概念:在unity中,协同程序是为了模拟多线程的工具,注意:协程是单线程,并不是多线程
开启一个协程: StartCoroutine(“Speak”);
修饰一个协程方法的关键字:IEnumerator
当开启一个协程的时候,主线程会进入到协程函数中和普通方法一样执行,直到遇到yield return 程序暂时挂起,跳出协程,继续向下执行;
直到yield return 的条件满足,才会执行yield之后的代码,从yield开始,协程外部的代码就和协程内部的无关
yield return null/0:等待一帧的时间。
yield return new WaitForSeconds()
yield return FixedUpdate()
yield return new WaitForEndOfFrame()
yield break;
yield return Function()
yield return new WWW(url);
协程执行完整的条件是保证开启协程的组件对象不能被销毁,并且游戏物体不能失活
如果保证不了,就把协程开启在其他对象身上,
1:如果使用方法名的字符串形式开启协程,方法必须在要开启的对象身上
2:如果使用方法名加括号的形式开启,这个方法必须在自己身上
StartCoroutine(方法名); //由此开启一个协程,程序由此进入到Speak方法里去执行;
IEnumerator 方法名(){ //IEnumerator 是迭代器对象
yield return new WaitForSeconds(时间); //等几秒的意思
注意: 当开启一个协程的时候,主线程(main 函数里的)会进入到协程函数中和普通方法一样执行;
直到遇到 yield return ,代表程序返回(暂时挂起),跳出协程,继续向下执行;
直到yield return 的条件满足,才会执行yield 之后的代码;
}
注: 当需要在协程中 锁死循环时(这就是 让协程模拟多线程的原因),可以用
yield return 跳出。<