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 @   lxp_blog  阅读(88)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示
主题色彩