unity---协程
协程
协程小案例
实现淡入淡出UI效果
StartCoroutine(Fade(Color.clear, new Color(0,0,0,.95f), 1));//调用
IEnumerator Fade(Color from, Color to, float time)
{
float speed = 1 / time;
float percent = 0;
while (percent < 1)
{
percent += Time.deltaTime * speed;
fadePlane.color = Color.Lerp(from, to, percent);
yield return null;
}
}
延时函数
可以自己设定延时要执行的函数和具体延时的时间,收到对象销毁/脚本移除的影响
脚本依附对象失活,延时函数可以继续执行(√被删除)
脚本依附对象销毁/脚本移除,延迟函数无法继续执行


多线程
Unity支持多线程,但新线程无法访问Unity相关对象的内容,一般在新线程中进行复杂算法等不访问主线程资源的计算。
Unity中多线程记得关闭
如果你想通过协程修改主线程的资源(例如:物体的位置)你可以定义一个变量,存储下来,然 后赋值给主线程的物体
多线程可以公用一个堆(即:线程a和线程b可以调用同一个对象里的参数(引用类型),但是不能调用栈内的变量(值类型))
协程
主要作用:将代码分时执行,
区别

协程的使用

yield return 讲协程分成几块



yield return null; //yield return 中断当前的协程程序,下一帧再走下段代码
yield break; //直接结束后续
协程的应用
生成10000个随机位置的小方块,且不卡顿
每次只生成1000个,等一帧后再执行下一代码

一些补充介绍



异步场景加载

协程加载场景,返回一个加载信息,可以查看进度和是否完成加载



浙公网安备 33010602011771号