Unity 协程用法总结
Unity 协程用法总结
协程:协同程序,在主程序运行的同时,开启另外一段逻辑处理,来协同当前程序的执行,注意协程不是线程,只是具有线程特点的“伪协程”。
协程的使用需要直接或间接的继承MonoBehavior。
协程的执行原理
如果MoveNext函数返回为true意味着协程的执行条件被满足,则能够从当前的位置继续往下执行。否则不能从当前位置继续往下执行。
协同方法与普通方法的区别:
开启协程的两种方式
终止协程的两种方式:
StopCoroutine(string methodName) //只能终止以字符串形式启动的协程
StopAllCoroutine() //终止所有协程
协程的返回值
协程的一些注意地方:
- 多个协程可以同时运行,它们会根据各自的启动顺序来更新;
- 协程可以嵌套任意多层;
- 如果你想让多个脚本访问一个协程,那么你可以定义静态的协程;
- 如果你的程序需要进行大量的计算,那么可以考虑在一个随时间进行的协程中处理它们;
- IEnumerator类型的方法不能带ref或者out型的参数,但可以带被传递的引用;
- 目前在Unity中不能检测作用于对象的协程数量以及具体是哪些协程作用在对象上。
协程简单实例
usingUnityEngine;
Using System.Collections; Public class MoveExample : MonoBehaviour
{ public Vector3 targetPosition; public float moveSpeed; Void Start() { StartCoroutine(MoveToPosition(targetPosition)); } IEnumerator MoveToPosition(Vector3 target) { while(transform.position != target) { transform.position = Vector3.MoveTowards(transform.position, target, moveSpeed * Time.deltaTime); Yield return 0; } }
}
Using UnityEngine;
Using System.Collections; Public class MoveExample : MonoBehaviour
{ public Vector3[] path; public float moveSpeed; Void Start() { StartCoroutine(MoveOnPath(true)); } IEnumerator MoveOnPath(bool loop) { do { foreach(var point in path) Yield return StartCoroutine(MoveToPosition(point)); } while(loop); } IEnumerator MoveToPosition(Vector3 target) { while(transform.position != target) { transform.position = Vector3.MoveTowards(transform.position, target, moveSpeed * Time.deltaTime); Yield return 0; } }
}
Unity 协程用法总结相关推荐
- Unity协程简述(简单用法,简易分析)
Unity协程 协程的简单用法 简述 函数 协程的执行顺序 协程替我们做了什么 Yleid Return 如何进行跳帧,延迟,等待的操作 从IL的角度分析 IL语言 总结 自定义一个迭代器 优化 最后 ...
- unity 协程特点
协程 一. Unity中使用协程 1. 什么是协程 2. 如何使用 3. 协程的应用场景 创建补间动画 打字机效果 异步加载资源 4. 注意事项 二. Unity协程的底层原理 1. 协程本体:C#的 ...
- Unity协程深入及实现
Unity协程深入 文章目录 Unity协程深入 Unity协程简介 Unity协程的用法 协程的原理 协程的缺陷 自己实现协程 参考 Unity协程简介 Unity中的协程能够允许我们将一个任务分散 ...
- 【Unity】Unity协程(Coroutine)的原理与应用
文章目录 前言 一.什么是协程 二.应用场景 1.异步加载资源 2.将一个复杂程序分帧执行 3.定时器 三.协程的使用 注意事项 四.Unity协程的底层原理 1. 协程本体:C#的迭代器函数 2. ...
- Unity 协程Coroutine综合测试
Unity 协程Coroutine综合测试 1 using UnityEngine; 2 using System.Collections; 3 using System.Text; 4 5 publ ...
- Unity协程(Coroutine)原理深入剖析再续
Unity协程(Coroutine)原理深入剖析再续 By D.S.Qiu 尊重他人的劳动,支持原创,转载请注明出处:http.dsqiu.iteye.com 前面已经介绍过对协程(Coroutine ...
- Unity 协程深入解析与原理
先来直接放一段代码 1 using System.Collections; 2 using System.Collections.Generic; 3 using UnityEngine; 4 5 p ...
- Unity协程实现分析以及Lua协程与Unity协程的混合使用
1,节选翻译一篇stackoverflow关于Unity协程实现的讨论 - The big clues are in the C# version. Firstly, note that the re ...
- Unity协程(Coroutine)原理深入剖析
Unity协程(Coroutine)原理深入剖析 By D.S.Qiu 尊重他人的劳动,支持原创,转载请注明出处:http.dsqiu.iteye.com 记得去年6月份刚开始实习的时候,当时要我写网 ...
最新文章
- 2018-2019-2 网络对抗技术 20165324 Exp4:恶意代码分析
- 第十六届智能车竞赛比赛进行中 - 参赛队员提出的问题
- Python之seaborn:利用seaborn的color_palette()函数改变绘图界面风格
- 剑指Offer - 面试题47. 礼物的最大价值(动态规划)
- Java实现Spark-Redis,Spark 之 Redis on spark java.io.NotSerializableException
- 又一次Java线程卡死的调试经历
- Linux下Kafka单机安装配置
- jieba分词怎么操作_常用分词工具使用教程
- 查看windows系统信息
- 知其所以然技术论坛VC++资源下载
- python批量查询(excel)数据
- linux系统下使用gcc编译C++程序出现XXX未定义的引用的处理
- BI工具和报表工具有什么不同
- 电脑安装哪款linux系统好,四款linux操作系统总有一款适合你
- 用R语言画相关性矩阵,带P值和*号
- 谢绝枯燥快乐编程,四大游戏编程网站,让你边玩游戏,边学Python
- 《流浪地球》中的逃生气囊球和马斯克有什么关系?
- 用 Python 爬取电影,这些电影真的很不错
- ACE学习笔记(4)——第三个例子:任务和反应堆
- 凡客和PPG都是半斤八两
热门文章
- LaTex数学公式中常用的符号及标记
- macOS下malware移除之anysearch劫持(Remove hijacking of anysearch)
- 什么是SOA架构?SOA架构有什么作用?
- 流量矿石:经历九死一生,曾获王欣亲自嘉奖,被5亿快播用户追捧
- 计算机语言cobol,COBOL计算机方言
- 万象2004不能用的解决方法
- 生成csv文件打开列变成科学计数法
- 华为OceanStor全闪存技术论坛登陆上海滩:探寻智能时代闪存普惠
- 揭秘边缘计算新晋“网红”——5G MEC深度解读第一弹
- linux LTP移植Android,LTP交叉编译(LTP201XXXX以上版本)