[Unity菜鸟] 协程Coroutine
2024-10-18 23:34:59
1.协程,即协作式程序,其思想是,一系列互相依赖的协程间依次使用CPU,每次只有一个协程工作,而其他协程处于休眠状态。
unity中StartCoroutine()就是协程,协程实际上是在一个线程中,只不过每个协程对CUP进行分时,StartCoroutine()可以访问和使用unity的所有方法和component
2.Thread,多线程是阻塞式的,每个IO都必须开启一个新的线程,但是对于多CPU的系统应该使用thread,尤其是有大量数据运算的时刻,但是IO密集型就不适合;而且thread中不能操作unity的很多方法和component
3.异步,其实就是从线程池中的一个线程来完成某个任务,适合于IO密集型的操作。
4.协同程序(coroutine)与多线程情况下的线程比较类似:有自己的堆栈,自己的局部变量,有自己的指令指针(IP,instruction pointer),但与其它协同程序共享全局变量等很多信息。线程和协同程序的主要不同在于:在多处理器情况下,从概念上来讲多线程程序同时运行多个线程;而协同程序是通过协作来完成,在任一指定时刻只有一个协同程序在运行,并且这个正在运行的协同程序只在必要时才会被挂起。
=====================================================================
1.
2. 逐层显示出楼房
void Start()
{
for (int i = 1; i < 14; i++) //第1秒显示第1层,第10秒的时候显示第10层
{
StartCoroutine(Show(i));
}
}
IEnumerator Show(int i)
{
//实现逐层显示,下两句的位置不能颠倒
yield return new WaitForSeconds(i);
if (j < 14)
{
floor[j++].SetActive(true);
}
}
如果按下面方式写就会卡好几秒之后全部显示出来,而不会一层层显示
IEnumerator Show(int i)
{
if (j < 14)
{
floor[j++].SetActive(true);
}
yield return new WaitForSeconds(i);
}
unity 隐藏与显示www.unity@manual.com/4419.html
StartCoroutine(string methodName)和StartCoroutine(IEnumerator routine)的区别(参考 关于线程一说有待研究)
最新文章
- python学习笔记(基础二:注释、用户输入、格式化输出)
- $(";";).click与onclick的区别示例介绍
- Mac OS X 系统12个常用的文本编辑快捷键(移动、选中)
- leach-matlab
- HDU3491 Thieves(最小割)
- Object类、包装类、内部类详解
- LintCode-Implement Queue by Stacks
- FastLoad错误 — SELECT Failed. 2652
- 美好头标ToolBar
- Oracle 优化——位图、函数等索引介绍
- 浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路
- Windows 8 应用开发 - 磁贴
- 字典的.get方法
- 关于postman各功能的说明及用法以及批量执行
- 20145225《网络对抗》Exp8 Web基础
- mapreduce方式操作hbase
- 数据结构notes
- 【转】dd命令详解及利用dd测试磁盘性能
- shader 变体variants
- PIE SDK云图动画导出