Problem with coroutine / create a gap of 5 seconds [C#]
Hello, I'm experimenting something with coroutines, but it doesn't seem to work. I would like to play each part of one coroutine each time I press the space bar. That works correctly. But, also, I would like to create a 5 second gap beetween each part of the coroutine.
For example, if I press space, It will write "first part". If I press again before 5 seconds, I would like nothing happen. For the moment, the 5 second constraint doesn't seem to be effective. Some idea to help me do that ?
using UnityEngine;
using System.Collections;
public class CoroutineTest : MonoBehaviour {
private IEnumerator test;
void Awake()
{
test = Test();
}
void Update()
{
if (Input.GetKeyDown("space"))
{
StartCoroutine(test);
}
}
IEnumerator Test()
{
Debug.Log("first part");
yield return new WaitForSeconds(5);
StopAllCoroutines();
Debug.Log("second part");
yield return new WaitForSeconds(5);
StopAllCoroutines();
Debug.Log("third part");
yield return new WaitForSeconds(5);
StopAllCoroutines();
Debug.Log("forth part");
yield return new WaitForSeconds(5);
StopAllCoroutines();
while (true)
{
Debug.Log("fifth and last part");
yield return new WaitForSeconds(5);
StopAllCoroutines();
}
}
}
If you stop a coroutine then call it again.... The coroutine starts from the begin.
Your code will always print "first part" every time you press the space key.
No it don't, It print well all of the part in the right order when I press the space key ^^... But the WaitForSeconds doesn't seem to work. Whatever the wait time I write, it doesn't change anything.
Answer by CirseiHyuga · Jan 25, 2017 at 11:51 AM
The coroutine doesn't restart from the beginning if you "instantiate" it in an IEnumerator variable. An other thing I learn about coroutine is that the method StopAllCoroutine() will be effective on the next frame, so we must WaitForEndOfFrame after this method.
Hoping those clues will help someone :)
Your answer
Follow this Question
Related Questions
C# coroutine not waiting on waitForSeconds? 2 Answers
Could not load source 'Coroutines.cs': No source available. 1 Answer
Am I using this Coroutine and IEnumerator correctly? 1 Answer
Trying to make my code pause using coroutines, what am i doing wrong? 2 Answers
Performance Issue with Coroutines 2 Answers