记录:借用Unity LateUpdate实现MyCoroutine及Wait代码

本文记录了作者在研究Unity协程过程中,根据理解创建MyCoroutine的实践。文中详细介绍了如何利用LateUpdate进行协程控制,并在MyCoroutine类中实现了相关接口和等待操作。
摘要由CSDN通过智能技术生成

最近在看unity coroutine相关内容,基于自己的理解写了mycoroutine;
后边的接口和实现类,偷懒就直接写在MyCoroutine了。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MyCoroutine : MonoBehaviour {
	int frame = 0;
	IEnumerator ie;
	void Start()
	{
		ie = myCoroutine();
	}

	void LateUpdate()
	{
		if(ie != null)
		{
			if(ie.Current != null)
			{
				IWait wait = (IWait)ie.Current;
				if(wait.Tick())
				{
					ie.MoveNext();
				}
			}
			else
			{
				ie.MoveNext();
			}
		}
		frame ++;
	}

	IEnumerator myCoroutine()
	{
		yield return new WaitForSomeFrame(1);
		Debug.Log("myCoroutine Frame:" + frame);
		yield return new WaitForSomeFrame(10);
		Debug.Log("myCoroutine Frame:" + frame);
		yield return new WaitForSomeTime(1);
		Debug.Log("myCoroutine Frame:" + frame);

	}

	interface IWait
	{
		bool Tick();
	}

	class WaitForSomeFrame:IWait
	{
		private int frame = 0;

		public WaitForSomeFrame(int frame)
		{
			this.frame = frame;
		} 

		public bool Tick()
		{
			frame --;
			return frame <= 0;
		}
	}


	class WaitForSomeTime:IWait
	{
		private float time = 0;
		public WaitForSomeTime(float time)
		{
			this.time = time;
		}

		public bool Tick()
		{
			time -= Time.deltaTime;
			return time <= 0;
		}

	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值