Вы запускаете новый Coroutine каждый кадр, что почти наверняка является проблемой (если ничего другого это, вероятно, не приведет к снижению производительности).
Вы также говорите Coroutine, чтобы он остановился сразу после запуска, так что вы определенно никогда не пройдете первый выход Coroutine.
При использовании Coroutines в целом, если вы хотите, чтобы в любой момент был запущен только один живой экземпляр Coroutine, вы должны сохранить ссылку, возвращенную StartCoroutine, и вызвать StopCoroutine для этой ссылки следующим образом:
Coroutine Routine = null;
void Example()
{
if (Routine != null)
{
StopCoroutine(Routine);
}
Routine = StartCoroutine(ExampleCoroutine());
}
IEnumerator ExampleCoroutine()
{
// do coroutine
// end coroutine with:
Routine = null;
}
Убедитесь, что Monobehaviour, вызывающий StopCoroutine, совпадает с Monobehaviour, вызывающим StartCoroutine. Несоблюдение этого требования, вероятно, является наиболее распространенной причиной указанной вами ошибки.