반복문을 가지는 코루틴 대기 하는 방법
하나의 코루틴에서 서브로 반복문을 가지는 코루틴을 호출 하고 그 코루틴이 리턴 할 때까지 기다려야 할 때가 있다.
void Start()
{
StartCoroutine( RunFirst() );
}
IEnumerator RunFirst()
{
yield return StartCoroutine( RunSubFuntion() );
}
IEnumerator RunSubFuntion()
{
for(int i = 0; i < 10 ; i ++)
{
yield return new WaitForSeconds(1f);
}
}
위와 같이 yield return StartCoroutine() 으로 코루틴을 호출 하면 스킵 하지 않고 리턴 할 때 까지 기다리게 된다.
Coroutine Loop
IEnumerator RunLoop()
{
whie(true)
{
yield return null ; // unity의 update() 할수가 끝나면 return 함. 결과적으로 매 루프 처리됨.
}
}
코루틴에서 반복문으로 계속 처리되게 하려면 위와 같이
yield return null
yield return new WaitForSeconds(time)
과 같은 yield return 문을 넣어 줘야 한다.
“파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음"
그렇지 않고
while(true)
{
}
만 사용 하면 unity가 무한루프로 멈춰 버린다.
yield return null 의미:
스크립트의 update() 문이 처리 되고 나면 리턴 하고 다음 구문으로 진행 할 수 있게 된다.
즉, while 문 안 코드들이 매 프레임 실행 되게 된다.
tag:
unity c# coroutine loop
waiting loop for a coroutine to end
coroutine looping
coroutine loop unity
unity c# coroutine loop
coroutine was never awaited
coroutine never awaited
coroutine exception loop
coroutine for loop
coroutine to loop
c# coroutine loop
coroutine while loop
coroutine while
while loop coroutine unity
unity3d loop coroutine
unity coroutine loop
unity loop coroutine
'Unity3D' 카테고리의 다른 글
Unity3d Build Error - Android SDK path error - Unable to list target platforms (0) | 2020.05.11 |
---|---|
유니티3디의 JsonUtility 사용법 링크 (0) | 2020.04.21 |
Simple Object Pooling for Unity3D (0) | 2020.03.04 |
Curved World with Surface Shader (0) | 2020.02.28 |
Loading Scene Asynchronously for Unity (0) | 2020.02.26 |