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();
        }
    }
}

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 :slight_smile: