Unity3D中的Coroutine使用(协同执行程序)

本文介绍了Unity3D中的Coroutine(协同程序)的基本概念和实例应用。Coroutine允许在主程序运行时开启另一段逻辑处理,类似开启线程但非真正多线程。通过实例展示了如何使用Coroutine实现物体移动并解释了StartCoroutine、IEnumerator和yield的用法。还探讨了Coroutine在资源加载等场景中的应用,以及WaitForSeconds、WaitForEndOfFrame等延迟执行选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    基本概念

    Coroutine,概念上讲,有两点值得注意的:1.它是在主程序运行时同时开启另一段逻辑处理来协同当前程序的执行。2.开启协同程序就类似于开启一个线程,但是它又不是真正意义上的多线程。

    实例讲解

    下面为了快速理解,我用一个简单的实例来说说它的具体使用方法。

    首先,没有用Coroutine的时候,我们要在鼠标点击一个Cube时让这个Cube的X方向移动到10然后回到原点,下面是代码,但是这样我们会发现点击鼠标以后没有任何效果,因为循环执行的太快了。

	void OnMouseDown ()
	{
		testMove ();
	}
	
	void testMove ()
	{
		for (int i=0; i<100; i++) {
			transform.Translate(0.1f, 0f, 0f);
		}
		//回到原点
		transform.position = new Vector3(0, 0, 0);
		Debug.Log("Completed Moving!");
	}

    要达到我们想要的效果,可能有人说可以在Update函数中执行移动的部分。没错,可以那么去做,但是也可以用Coroutine达到我们想要的效果。

    再次,用Coroutine重新实现功能,我们就可以看到我们的Cube移动以后又回到原点。我先直接上代码,后面再做讲解。

	void OnMouseDown ()
	{
		StartCoroutine (testCoroutineMove());
	}

	IEnumerator testCoroutineMove()
	{
		for (int i=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值