自己总结的一点关于携程的小知识

这里写自定义目录标题


协同程序
进程:每一个可执行应用程序都是一个进程
线程:每一个进程中,至少有一个主线程,可以有多个辅线程
协同程序的概念:在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 跳出。
// 生命周期函数可以将返回值写成IEnumerator,这样就可以使用yield 进行迭代
// IEnumerator Start () {
// yield return new WaitForSeconds(3);
// StartCoroutine(“Speak”); //由此开启一个协程,程序由此进入到Speak方法里去执行
// Debug.Log(“this is Start”);
// StopCoroutine(“Speak”);
//}

StopAllCoroutines ()//接束所有协程;
StopCoroutines(参数)// 结束参数的协程;

俗语:想让协程正常运行:
1.游戏物体不能失活。
2.脚本不能删除。
3.游戏物体不能删除。)

你可能感兴趣的:(Unity协同程序)