Unity 协程暂停
时间: 2024-06-16 09:04:37 浏览: 10
在Unity中,协程是一种特殊的函数,可以在执行过程中暂停并在稍后继续执行。协程通常用于处理需要延迟执行或需要分步执行的任务,例如动画、网络请求等。
要暂停协程的执行,可以使用yield语句。yield语句可以将协程暂停,并在满足某个条件后继续执行。常用的yield语句有以下几种:
1. yield return null:暂停协程一帧的时间,然后继续执行。
2. yield return new WaitForSeconds(time):暂停协程指定的时间(以秒为单位),然后继续执行。
3. yield return new WaitForFixedUpdate():暂停协程直到下一次固定更新(FixedUpdate)时才继续执行。
4. yield return StartCoroutine(otherCoroutine):暂停协程并启动另一个协程,直到另一个协程执行完毕后才继续执行。
以下是一个示例代码,演示了如何使用协程暂停和继续执行:
```csharp
using UnityEngine;
using System.Collections;
public class CoroutineExample : MonoBehaviour
{
private IEnumerator coroutine;
void Start()
{
coroutine = MyCoroutine();
StartCoroutine(coroutine);
}
IEnumerator MyCoroutine()
{
Debug.Log("Coroutine started");
yield return new WaitForSeconds(2f);
Debug.Log("Coroutine paused for 2 seconds");
yield return null;
Debug.Log("Coroutine resumed");
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
if (coroutine != null)
{
StopCoroutine(coroutine);
Debug.Log("Coroutine stopped");
}
}
}
}
```
在上述示例中,协程MyCoroutine()会在开始时打印一条日志,然后暂停2秒钟,再打印一条日志,最后继续执行并打印最后一条日志。按下空格键会停止协程的执行。