जवाबों:
public static IEnumerator Sequence(params IEnumerator[] sequence)
{
for(int i = 0 ; i < sequence.Length; ++i)
{
while(sequence[i].MoveNext())
yield return sequence[i].Current;
}
}
उपयोग उदाहरण:
IEnumerator PrintCoroutine(string arg)
{
yield return new WaitForSeconds(0.3f);
}
StartCoroutine(Sequence(PrintCoroutine("foo"), PrintCoroutine("bar")));
हाइजेनबग ने जो वर्णन किया है, इसके अलावा, कुछ ऐसा जो यूनिटी मैनुअल को स्पष्ट नहीं करता है, वह यह है कि आप yield return
एक Coroutine
ऑब्जेक्ट कर सकते हैं , जिसे आप StartCoroutine
कॉल से प्राप्त करते हैं ।
public IEnumerator RunColorCoroutineLoop()
{
while (true) {
yield return StartCoroutine(FirstColorCoroutine());
yield return StartCoroutine(SecondColorCoroutine());
yield return StartCoroutine(ThirdColorCoroutine());
yield return StartCoroutine(FourthColorCoroutine());
}
}
public IEnumerator FirstColorCoroutine()
{
SetColor("color1");
yield return new WaitForSeconds(1f);
}
public IEnumerator SecondColorCoroutine()
{
SetColor("color2");
yield return new WaitForSeconds(1f);
}
public IEnumerator ThirdColorCoroutine()
{
SetColor("color3");
yield return new WaitForSeconds(1f);
}
public IEnumerator FourthColorCoroutine()
{
SetColor("color4");
yield return new WaitForSeconds(1f);
}
यह कभी-कभी मूवनेक्स लूप की तुलना में बेहतर पढ़ने के लिए बनाता है, लेकिन इसका नुकसान यह है कि आप बच्चे को कोरटाइन लूप के शीर्ष पर तर्क के माध्यम से दौड़ने से नहीं रोक सकते हैं, जो IEumumerator के शीर्ष पर अधिक परिष्कृत प्रवाह नियंत्रण तकनीकों के निर्माण के लिए उपयोगी हो सकता है।
इस पर अधिक जानकारी के लिए, आपको इस यूनाइट वीडियो को देखना चाहिए, जिसमें आपके कॉरटाइन शेड्यूलर के निर्माण के बिना आपके कॉरआउट्स से अधिक बाहर निकलना शामिल है।