迭代器实现及携程原理
力扣刷了7题
执行foreach第一次时先会调用GetEnumerator,每一次循环都会调用MoveNext,它的返回值也决定了循环是否继续,foreach中的i就是Test对象a中的current
语法糖简写,只需继承一个接口就能实现上面的逻辑,在编译代码遇到yield return系统会帮我们将上面复杂写法的方法实现
这个携程函数和上面简单迭代器的实现写法一致,携程就是通过迭代器函数来实现分部处理,而分时则是通过unity中的携程协调器来管理的,当你调用StartCoroutine的方法时就把IEnumerator这个接口传进去了协调器就可以通过这三个成员来实现分时执行
特殊文件夹
1.Resource 需要动态加载的资源可放入,只读
2.StreamingAssets 需要动态加载的初始默认资源可放入,pc端可读写移动只读
3.persistentDataPath Appliction.persistentDataPath 可读可写,用于游戏中需要动态存储和获取的资源
4.Plugins Editor 插件文件夹
5.Editor 编辑器相关脚本可放入,不会被打包
6Standard Assets Unity的自带资源都会放在这个文件夹
线程知识点
进程:是程序关于某数据集合的上的一次运行活动,打开一个应用程序即开启了一个进程
线程:操作系统进行运算调度的最小单位,相当与一条执行代码的管道,被包含于进程中
多线程:一个进程中可以开启多个线程,他们之间互不干扰
语法
关闭
unity中的线程记得关闭,否则即使停止运行也会执行里面的逻辑
在c#中和unity中都有一个线程,当执行复杂耗时逻辑时,为了避免卡顿可以开启一个线程
Resources 资源加载
异步加载新开线程防卡顿,以上两种均是等待异步加载后执行的逻辑
场景异步加载
它的两个等待完成后执行的方法和资源异步加载类似
范围检测
射线检测
Camera.main.ScreenPointToRay(Input.mousePosition);
数据持久化
保存在Appliction.dataPersistentPath中,因为它可读可写