Я работаю в Unity, и у меня большой скрипт. В какой-то момент скрипта будет запущена сопрограмма, foo
. Я хочу, чтобы эта сопрограмма запускала еще одну функцию IEnumerator
, bar
, но я не хочу, чтобы bar
начинался как сопрограммы. Скорее, мне нужно foo
, чтобы начать работать, возможно, несколько раз, позвоните по телефону bar
, дождитесь окончания работы бара и продолжите работу. На данный момент у меня сделать bar
IEnumerable
сделать:C# Подождите, пока функция вернет выходную проработку, чтобы продолжить
void Start() {
StartCoroutine(foo());
}
IEnumerator foo() {
//Do something up here
foreach (int x in bar()) {
yield return null; //Wait for bar to yield break
}
//Do more stuff down here
yield break;
}
IEnumerable bar() {
for (int x=0; x < 5; x++) {
//Do Something 5 Times
yield return x;
}
yield break;
}
Я искал, но я не могу найти правильный способ сделать это. Разумеется, будет более 10 таких функций «бара», поэтому я не хочу, чтобы каждый цикл я делал для цикла. Как я могу вызвать другие функции IEnuerator
таким образом?
То, что вы ищете, часто называют «выходным foreach». Это функция, которой не существует (несмотря на то, что ее часто запрашивают). Вы в значительной степени вынуждены делать именно то, что вы здесь делаете. – Servy
@Servy Спасибо за быстрый ответ. Я забыл спросить, есть ли: Я пытаюсь заставить C# сделать то, что он не был создан? Это не очень C# -образный код? А если нет, как я должен делать то же самое? – scohe001
Это то, что я сказал; это обычно запрашиваемая функция, но ее не существует. Это просто. Он может быть добавлен в какой-то момент в будущем, или может быть и не так. Пока это не так, вам нужно согласиться на это. – Servy