답변:
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")));
Heisenbug 설명 것뿐만 아니라, 유니티 설명서가 분명하지 않는 일이 당신이 할 수 있다는 것입니다 객체, 당신은에서받는 전화.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);
}
이것은 때때로 MoveNext 루프보다 더 나은 판독을 제공하지만 최상위 coroutine 루프 내에서 로직을 통해 자식 coroutine이 실행되는 것을 막을 수 없다는 단점이 있습니다. 이는 IEnumerator 위에보다 정교한 흐름 제어 기술을 구성하는 데 유용 할 수 있습니다.
이에 대한 자세한 내용은 자신의 코 루틴 스케줄러를 구축하지 않고 코 루틴을 최대한 활용하는 이 Unite 비디오 를 참조하십시오.