【Unity】协程

news/2024/10/21 9:23:51

协程在主线程执行,可以利用yield实现类似多线程/异步的操作

StartCoroutine

StartCoroutine("方法名");//无参数
StartCoroutine(fun(a));//有参数
StartCoroutine("方法名",argu);//有参数

StopCoroutine

yield

yield return null;//暂停等待下一帧继续执行
yield return 0;//同上
yield return new WaitForSeconds(秒);//暂停等待指定时间后继续执行
yield return StartCoroutine(“携程方法名”)//开启协程,嵌套协程

IEnumerator

协程的方法写在迭代器中

观察下面的代码,可知:

  • yield return null 后的内容必须在update内容全部执行完成才能继续执行;
  • 在update中开启协程(会开启多次),会陆续执行完全部协程的内容
  • 在Start中开启协程,按帧执行完协程的内容
int time = 1;
IEnumerator Demo(int i){Debug.Log(i+1);yield return null;//暂停 1Debug.Log(i-1);yield return null;//暂停 2Debug.Log(i+2);yield return null;//暂停 3Debug.Log(i-2);
}//在update中开启协程
private void Update(){if (time <= 5){Debug.Log($"第{time++}帧");Debug.Log("开始");StartCoroutine(Demo(10));Debug.Log("update");}
}//结果
//------第一帧(开启新协程)-----
//	开始
//	11(第一个协程)
//	update
//------第二帧(开启新协程)-----
//	开始
//	11(第二个协程)
//	update
//	9(第1个协程的第2句)
//------第三帧(开启新协程)-----
//	开始
//	11(第三个协程)
//	update
//	9(第2个协程的第2句)
//	12(第1个协程的第3句)
//------第四帧(开启新协程)-----
//	开始
//	11(第4个协程)
//	update
//	9(第3个协程的第2句)
//	12(第2个协程的第3句)
//	8(第1个协程的第4句) ----- 第1协程全部执行完
//------第五帧(开启新协程)-----
//	开始
//	11(第5个协程)
//	update
//	9(第4个协程的第2句)
//	12(第3个协程的第3句)
//	8(第2个协程的第4句)----- 第2协程全部执行完//------第六帧(不在开启新协程)-----
//	9(第5个协程的第2句)
//	12(第4个协程的第3句)
//	8(第3个协程的第4句)----- 第3协程全部执行完
//------第七帧(不在开启新协程)-----
//	12(第5个协程的第3句)
//	8(第4个协程的第4句)----- 第4协程全部执行完
//------第八帧(不在开启新协程)-----
//	8(第5个协程的第4句)----- 第5协程全部执行完
//在Start中开启协程
private void Start()
{StartCoroutine(Demo(10));
}
private void Update()
{if (time <= 6){Debug.Log($"第{time++}帧");Debug.Log("update");}}
//结果
//	11
//------第一帧-----
//	update
//------第二帧-----
//	update
//	9
//------第三帧-----
//	update
//	12
//------第四帧-----
//	update
//	8
//------第五帧-----
//	update
//------第六帧-----
//	update

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/74047.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

10.14-10.20 总结

1234567890联考题解:https://www.cnblogs.com/british-union/p/liankao.html 如果忽略挂分,这周打的还可以。但是问题是挂了不少分导致实际得分远不如期望得分。 做题: 做了几道 Project Euler,有一道没想出来:588,638,457,307。 P10353:群论题 AGC012F 尝试枚举一下前…

C10-08-宽字节注入-mysql注入之getshell-sqlmap

一 宽字节注入 利用宽字节注入实现“库名-表名”的注入过程。 靶场环境:容器镜像:area39/pikachu 宽字节概念1、如果一个字符的大小是一个字节的,称为窄字节; 2、如果一个字符的大小是两个及以上字节的,称为宽字节; 像GB2312、GBK、GB18030、BIG5、Shift_JIS等编码都是常…

集成电路企业怎样进行红区绿区的跨网文件交换?

在集成电路企业中,红区与绿区的划分通常基于信息的安全性和敏感性。红区一般就是密级比较高的网络区域,绿区就是密级低一些的。划分不同安全区域后,不同区域之间需要进行跨网文件交换,才能实现业务数据的流转。红区: 涉及高度敏感的信息,如设计数据、知识产权、商业秘密等…

某存储项目RAID卡出现踢盘动作

描述:某项目分布式存储设备,OSD频繁掉线, 通过查看RAID串口日志发现slot3槽位之前出现过大量命令超时,且在10月17日1:47时出现过Removed动作查看盘在位情况,发现slot3已经掉线了解决方法: 更换slot3槽位的硬盘作者:杨灏 出处:http://www.cnblogs.com/HByang/

500强企业是如何进行数据安全建设的?看这篇就够了

500强企业对于数据安全的保护尤其重视,所以在数据安全建设方面通常采取多层次的策略,具体包括以下几个方面:风险评估与管理:定期进行全面的风险评估,识别数据安全风险,制定相应的管理策略。 安全政策与标准:制定并实施严格的数据安全政策和标准,确保所有员工和合作伙伴…

ChatGPT国内中文版镜像网站整理合集(2024/10/21)

ChatGPT 镜像站的用途 镜像站(Mirror Site)是指通过复制原始网站内容和结构,创建的备用网站。其主要目的是在原始网站无法访问时,提供相同或类似的服务和信息。​ 一、GPT中文镜像站 ① yixiaai.com 支持4o以及o1,支持MJ绘画 ② chat.lify.vip 支持通用全模型,支持文件读…

插件发布新特性,让运动适配更简单。

为了让广大开发者更好的适配各AI运动场景,我们的AI运动识别插件已经迭代了23个版本,最近又迎来了我们的1.5.5小版本更新,本次更新了2个新特性,新特性有助于大家更好的适配新运动,更轻松的开发健身、体育、体测、AR互动等AI运动场景场景;下面我们就来看看这两个新特性。一…

P1078

然而题单里就是有这题…… dij,照亮世界! #include<bits/stdc++.h> using namespace std; int n,k,m,s,t,a[105][105],wen[105]; int d[100005]; bool vis[100005]; int qi,mo,f; inline int read(){int x=0;char ch=getchar();while (ch>=0&&ch<=9){x=x…