When two co-routines are running, how do you stop the first co-routine?
GLOBALS.stableTime = 5;
IEnumerator StableWaittingTime ()
{
yield return new
There are three ways to stop coroutines.
StopAllCoroutines()
, which will obviously stop all running coroutines.StopCoroutine(coroutine)
, where coroutine
is a variable name given to your IEnumerator
.yield break
from within the coroutine.Worth noting is that both StopAllCoroutines and StopCoroutine can only stop a coroutine when the coroutine reaches a yield return *
.
So if you have two coroutines with the same name and you want to stop the one you are executing in you do yield break
.
Interestingly, if you want to stop every other coroutine besides the one you are executing in, you call StopCoroutines()
from within that coroutine.
@Imapler answer is almost all you need. I would just add that StopCoroutine
method of MonoBehaviour
is overloaded and has 3 types of parameters, so it is possible to stop many coroutines of same name.
For your need here, just use yield break; like this:
void Start ()
{
StartCoroutine (StableWaittingTime ());
}
IEnumerator StableWaittingTime ()
{
yield return new WaitForSeconds (1f);
if (false)
{
// do something
}
else
{
// do something
StartCoroutine (StableWaittingTime ());
yield break;
}
}