Unity---协程的简单使用
2024-08-22 19:56:36
1、作用
协程的作用一共有两点:
- 延时执行代码。
- 在某项操作完后再执行代码。
就是控制代码在特性的时间执行。
2、协程和线程的区别
- 协程不是异步,不需要考虑同步和锁问题
- 线程避免了无意义的调度,提高了性能,但需要程序员自己承担调度责任。
- 协程无法多核同时进行。
3、C#中的IEnumerator(迭代器)
协程其实就是一个IEnumerator(迭代器),IEnumerator有两个方法和一个属性。
MoveNext():迭代到下一个元素
Reset():重置迭代
Current:返回当前集合中正迭代的一个元素
可枚举的接口 IEnumerable,
GetEnumerator():返回枚举器接口方法。
使用迭代器实现foreach功能
static void Main(string[] args)
{
int[] arr = new int[5] { 12, 65, 749, 16, 49 };
//foreach (int item in arr)
//{
// Console.WriteLine(item);
//}
IEnumerator e = arr.GetEnumerator(); //获取要迭代的对象
while (e.MoveNext()) //一个一个的读取元素,读取完会返回false
{
Console.WriteLine(e.Current); //输出读取内容
}
Console.ReadKey();
}
IEnumerator方法的用法
void Start () {
IEnumerator e = TestCoroutine();
while (e.MoveNext()) //一直读取到有yield的语句才会停止执行下面的代码
{
Debug.Log(count++);
Debug.Log(e.Current); //输出yield return里面的内容
}
}
IEnumerator TestCoroutine()
{
Debug.Log("num1");
Debug.Log("num1");
Debug.Log("num1");
yield return null;
Debug.Log("num2");
yield return 2;
Debug.Log("num3");
yield return new WaitForSeconds(1);
Debug.Log("num4");
yield break;
}
/*输出结果
num1
num1
num1
1
Null
num2
2
2
num3
3
UnityEngine.WaitForSeconds
num4
*/
4、Unity中的协程使用
推荐一篇博客CSDNhuang9012
写的超级好,由于比较长就不搬运了,可以直接去看
最新文章
- js正则获取url所带参数值
- ID还是普通字段做外键合适?
- 图片过大,在div中不压缩的居中方法
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作(转载)
- Linux网卡的相关配置总结
- POJ 3468 A Simple Problem with Integers(线段树/区间更新)
- 【leetcode】Convert Sorted Array to Binary Search Tree
- HDU4870_Rating_双号从零单排_高斯消元求期望
- How do you render tooltip on disabled HTML Button
- oracle——session
- 非XA式Spring分布式事务
- sougou输入法小技巧
- 用Seam实现:图片上传 + 保存到数据库 + 从数据库读出图片并显示到页面中
- 查看 SELinux状态及关闭SELinux
- $.each与$(data).each区别
- 循环json数据的列
- LINUX文件操作命令
- 预先封装数据的思路.md
- AET PN结
- JSON Web Token(JWT)使用步骤说明
热门文章
- css浏览器兼容问题集锦
- 《C prime plus (第五版)》 ---第12章 存储类.链接和内存管理
- interceptors
- Contiki Process概述
- Linux bash shell环境变量以及语法规范
- Java_泛型_01_T与?
- 「LOJ#10072」「一本通 3.2 例 1」Sightseeing Trip(无向图最小环问题)(Floyd
- 洛谷P2983 [USACO10FEB]购买巧克力Chocolate Buying
- The Django Book 2.0--中文版
- C++ STL std::wstring_convert处理UTF8