Я пишу свою первую игру Unity. У меня есть ряд вложенных функций, давайте назовем их Function1, Function2, et c. Предположим, что в Function3 я хочу на короткое время отобразить что-то , прежде чем будет выполнен любой другой код .
Если я сделаю Function3 сопрограммой и выйду с возвращаемым выходом новых WaitForSeconds, то не останавливает выполнение всего кода в других моих функциях, а просто предотвращает выполнение остальной части кода в Function3, верно? Между тем, Функции 1 и 2 продолжают свой веселый путь.
Есть ли способ получить то, что я хочу, не перестраивая каждую функцию, чтобы она была сопрограммой и не добавляла множество выходов и в то же время истинных утверждений? (В моей настоящей игре довольно много функций, которые я бы предпочел быть сопрограммой.)
Я добавлю псевдокод, чтобы проиллюстрировать мою ситуацию.
Спасибо .
public Function1()
{
.
.
Does some stuff
.
.
call Function2()
.
.
Do some more stuff
.
.
}
public Function2()
{
.
.
Does some stuff
.
.
StartCoroutine(Function3())
.
.
Does some more stuff
.
.
return to Function2;
}
IEnumerator Function3()
{
.
.
Does some stuff...
Now I want to wait for specified time (say, .5 seconds) to display a message, play a sound, etc., **without continuing the code in Function2 or Function1 * *!
yield return new WaitForSeconds(.5f)
Then do some more stuff
.
.
return to Function2;
}