加载中...

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;
	}
}

延时函数

可以自己设定延时要执行的函数和具体延时的时间,收到对象销毁/脚本移除的影响
脚本依附对象失活,延时函数可以继续执行(√被删除
脚本依附对象销毁/脚本移除,延迟函数无法继续执行
image

image
image

多线程

Unity支持多线程,但新线程无法访问Unity相关对象的内容,一般在新线程中进行复杂算法等不访问主线程资源的计算。
Unity中多线程记得关闭
image
如果你想通过协程修改主线程的资源(例如:物体的位置)你可以定义一个变量,存储下来,然 后赋值给主线程的物体

多线程可以公用一个堆(即:线程a和线程b可以调用同一个对象里的参数(引用类型),但是不能调用栈内的变量(值类型))

协程

主要作用:将代码分时执行,

区别

image

协程的使用

image

yield return 讲协程分成几块

image
image
image

yield return null;	//yield return 中断当前的协程程序,下一帧再走下段代码
yield break;		//直接结束后续

协程的应用

生成10000个随机位置的小方块,且不卡顿
每次只生成1000个,等一帧后再执行下一代码

image

一些补充介绍

image
image
image

异步场景加载

image

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

posted @ 2022-05-07 21:07  lxp_blog  阅读(131)  评论(0)    收藏  举报