процедуры (и более сопрограмм)
Сопрограммы делают именно то, что вы хотите сделать.
private IEnumerator Countdown2() {
while(true) {
yield return new WaitForSeconds(2); //wait 2 seconds
//do thing
}
}
private IEnumerator Countdown3() {
while(true) {
yield return new WaitForSeconds(3); //wait 3 seconds
//do other thing
}
}
Затем вы запускаете их, вызывая ваш Start()
метод (или где-либо еще):
void Start() {
StartCoroutine(Countdown2());
StartCoroutine(Countdown3());
}
Обратите внимание, что оба метода обратного отсчета будут работать вечно, если не произойдет одно из трех:
StopCoroutine(...)
вызывается, передавая ссылку, возвращаемую StartCoroutine
- Функция обратного отсчета сама возвращается (что не произойдет, если она не выйдет из бесконечного цикла
while(true)
)
- Сама функция Coundown вызывает
yield break
Также обратите внимание, что в случае, если обе сопрограммы должны возобновиться в одно и то же время (например, через 6 секунд), сопрограмма 2 будет выполняться первой (как она была запущена первой), если не вмешивается какой-либо другой эффект (например, один из циклов имеет другой yield
инструкция, один из циклов завершен и т. Д.).