unity 协程 某一条件执行完成后执行另一段逻辑
时间: 2024-12-08 10:21:00 浏览: 18
在Unity中,协程(Coroutine)是一种特殊的异步编程技术,它允许你在主线程中按照顺序逐步执行一段代码块,而无需创建线程或其他同步机制。当你有一个任务A完成后再执行任务B的需求时,可以使用yield关键字配合` StartCoroutine `和` yield return`来实现:
例如,我们有这样一个场景:当某个物体检测到碰撞后,执行一段时间的动画,然后执行另一个动作:
```csharp
private void OnCollisionEnter(Collision collision) {
StartCoroutine(AnimateAndThenExecuteTask());
}
IEnumerator AnimateAndThenExecuteTask() {
// 模拟碰撞后执行动画
yield return new WaitForSeconds(2f); // 等待2秒
Debug.Log("Collision animation finished");
// 动画完成后执行其他逻辑
PerformAnotherTask();
}
void PerformAnotherTask() {
Debug.Log("Executing another task");
}
```
在这个例子中,`OnCollisionEnter`函数启动了一个名为`AnimateAndThenExecuteTask`的协程。当发生碰撞后,`WaitForSeconds`方法会让游戏暂停执行直到指定的时间过后,这个时间就是动画执行的时间。当动画完成后(即`WaitForSeconds`返回),程序会继续执行下一个`PerformAnotherTask`逻辑。
阅读全文