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个,等一帧后再执行下一代码
一些补充介绍#
异步场景加载#
协程加载场景,返回一个加载信息,可以查看进度和是否完成加载
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!