Unity&&C#学习笔记异步加载和协程与迭代器

异步加载

异步加载和同步加载的区别用另外一种概念描述就是“阻塞”。同步方法会阻塞在当前代码的执行,而其它部分(如UI)都在等着它结束调用,因此如果资源加载很耗时,那么就会出现“卡住了”的现象。异步加载则是非阻塞的,调用完异步方法后,代码继续执行,而加载工作由Unity在后台另开辟一个异步线程来进行。
而是异步方法的生效至少要一帧的时间。异步加载的这个特性是十分重要的,不仅对于Resources类的方法,对于AssetBundle也一样。比如,你要在Update中查询一些游戏状态以决定是否要加载新的资源,你编写了判断条件、加载代码,这都很很棒。然后你继续编写代码想让这些资源立即生效,然而抱歉,在这一帧你的这些代码就没有任何意义了,因为无论你怎么样查询加载状态,它都会告诉你异步加载还没有成功,因为它至少有一帧的延迟


协程

协程不是进程,也不是线程,它就是一个特殊的函数——可以在某个地方挂起,并且可以重新在挂起处继续运行。

协程不是多线程,它与主线程同时运行,它在主线程运行的同时开启另一段逻辑处理。

协程不是线程,不是异步执行;协程和monobehaviour的update函数一样也是在主线程中执行
unity在每一帧都会处理对象上的协程,也就是说,协程跟update一样都是unity每帧会去处理的函数

迭代器

1.指针针是C语言里面就有的东西,而迭代器是C++里面才有的

2.指针用起来灵活,效率高。迭代器功能更丰富一些

3.指针通常用来访问的是序列的元素,但不是所有的容器都会在连续的内存空间上保存数据。所以,对于这些容器我们不能单纯地使用指针作为迭代器,而是针对每一种容器,都会有专门配对的迭代器。

4.指针用起来灵活,效率高。迭代器功能更丰富一些,c++的stl里面很多算法都是基于迭代器的,一部分算法的参数可以传递指针作为迭代器使用。

IEnumerable接口的作用就是获得枚举器IEnumerator,而IEnumerator接口的作用才是迭代的主体,负责遍历序列

通过这两段代码就可以看出foreach遍历的原理是先通过IEnumerable获得枚举器IEnumerator,然后通过枚举器的MoveNext和Current方法来遍历序列。
C#迭代器的详细用法_c# 迭代器-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值