我正在Unity中工作,並且我有一個大腳本。在腳本的某個位置,將啓動一個協程foo
。我想讓這個協程運行另一個IEnumerator
函數,bar
,但我不想bar
作爲一個協程啓動。相反,我需要foo
才能開始運行,可能會產生幾次,請撥打bar
,等待欄已完成運行,然後繼續運行。目前我在做bar
IEnumerable
做:C#等待函數返回yield break繼續
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
函數?
你要找的東西通常被稱爲'yield foreach'。這是一個不存在的功能(儘管需求頻繁)。你幾乎被迫完成你在這裏做的事情。 – Servy
@Servy感謝您的快速回復。我忘了問的是:我是否試圖強制C#去做一些它沒有做的事情?這不是非常C#的代碼?如果不是,我該如何做同樣的事情? – scohe001
這就是我所說的;這是一個通常要求的功能,但它不存在。就是這樣。它可能會在未來某個時候添加,或者可能不會。在此之前,你需要爲此做出解決。 – Servy