Unity线程与协程

1.Unity的多线程无法调用关键数据:tranform

2.Unity的底层实现了线程池,如资源加载

协程:

yield return的介绍:

yield return null;//下一帧在执行后续代码

yield return 0;//下一帧在执行后续代码

yield break;//直接结束该协程的后续操作

yield return asyncoperation;//等异步操作结束后再执行后续代码

yield return StartCoroution(某个协程);//等待某个协程执行完毕再执行后续代码

yield return WWW();//等待WWW操作完成后再执行后续代码

扫描二维码关注公众号,回复: 6213107 查看本文章

yield return new WaitForEndOfFrame();//等所有的摄像机和Gui渲染完成后再该帧显示在屏幕之前执行

yield return new WaitForScends(0.3f);//等待0.3秒,在所有的Update函数调用之后执行(受Time.timeScale影响)

yield return new WaitForSecondsReaItime(0.3f);//等待0.3秒,同上(不受Time.timeScale影响)

yield return WaitFourFixedUpdate();//等待下一次FixedUpdate开始时再执行后续代码

yield return new WaitUntil();//当输入的参数或者委托为True时

yield return new WaitWhile();//当输入的参数或者委托为false时

物体不激活停止协程,脚本不激活协程不停止

所有的协程执行后续代码必须要在当前循环结束如:

While(true)

{

for(int i=0;i<2;i++)

{

Debug.log(123);

yield return null;

}

Debug.log(12);

yield return new WaitForSeconds(2);

}

打印顺序为123 123 12

协程开启和关闭的方法:第一种:

开启:StartCoroutine("Test");    关闭:StopCoroutine("Test");

开启:StartCoroutine("Test2",1);   关闭:StopCoroutine("Test2");

开启:StartCoroutine(Test3());  关闭:Coroutine c = StartCoroutine(Test3());   StopCoroutine(c)

开启:IEnumrator coroutine = Test();  StartCoroutine(coroutine );  关闭:StopCoroutine(coroutine);

4.StopAllCoroutines() 
可以停掉当前脚本的所有Coroutine.

猜你喜欢

转载自blog.csdn.net/qq_36429060/article/details/89601366