注:需要了解C#的迭代器,不然很难理解。

之前面试有被问到unity协程的原理,以及撇开unity用纯C#去实现协程的方法。后来了解一下,确实可以的。趁这会有空,稍微总结一下。

还是结合代码说事吧:

 1 /// <summary>
 2 /// 等待接口
 3 /// </summary>
 4 public interface IWait
 5 {
 6     /// <summary>
 7     /// 每帧检测是否等待结束
 8     /// </summary>
 9     /// <returns></returns>
10     bool Tick();
11 }
View Code

先定义一个等待接口,WaitForSeconds 和 WaitForFrames 实现接口的Tick()方法,每一帧调用Tick()方法检测是否等待结束

 

 1 /// <summary>
 2 /// 按秒等待
 3 /// </summary>
 4 public class WaitForSeconds:IWait
 5 {
 6     float _seconds = 0f;
 7 
 8     public WaitForSeconds(float seconds)
 9     {
10         _seconds = seconds;
11     }
12 
13     public bool Tick()
14     {
15         _seconds -= Time.deltaTime;
16         return _seconds <= 0;
17     }
18 }
View Code

相关文章: