Unity开发笔记系列(协程)—— Coroutine continue failure报错
2026/5/23 9:50:03 网站建设 项目流程

一、概述

在开发中使用协程时遇到了Coroutine continue failure的报错,这个报错因为没有堆栈信息不好定位,虽然好像不影响运行,但为了不留隐患,还是查找资料解决了一下,特此记录。

二、问题描述

通过总结引发报错的代码,可以将其抽象成如下A、B两个脚本。在A脚本中,我们定义了一个迭代器Method(),并通过RunMethod()方法开启协程并返回。在B脚本中,我们通过调用A的RunMethod()并将返回的协程存储在变量中,并在后续使用StopCoroutine()停止该协程的运行。运行后便会引发上述报错。

public class A : MonoBehaviour { public Coroutine RunMethod() { StartCoroutine(Method) } private IEnumerator Method() { //.... } }
public class B : MonoBehaviour { public A a; private Coroutine coroutine; private void Start() { coroutine = a.RunMethod(); StopCoroutine(coroutine); } }

三、解决方法

这个问题的原因非常简单,协程依赖于MonoBehaviour,每个MonoBehaviour只维护自己的协程,因此通过其他脚本关闭协程就会出现这种错误。此处最简单的方法就是如下修改B脚本,报错即可消除。

public class B : MonoBehaviour { public A a; private Coroutine coroutine; private void Start() { coroutine = a.RunMethod(); //StopCoroutine(coroutine); //不能关闭其他脚本的协程 a.StopCoroutine(coroutine); } }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询