[Unity2018.3.0f2] 코루틴 - 유니티에서 While문 멈추지 않고 돌리기.
별거 아닌 얘기긴 한데, 한창 유니티 배우던 때, While문으로 내부에서 돌리고 싶은데 쓰면 거의 반드시 멈추기 때문에 골치아팠던 때가 있습니다. Update에서 주로 돌렸는데, 업데이트에서 while문을 돌리게 되면, 대충 잡아서 몇만회 이상 돌아가기 시작하면 Update에서 뻗어버리는 문제가 있었죠. 그 때 가장 흔하게 쓰던 방법으로 Coroutine 시스템이 있습니다. While은 코드의 컨트롤을 넘기지 않고 자기 자신이 끝날때까지 모든 일을 중단하고 잡고 있기 때문에 코드 중간에 넣어서 사용하기 시작하면 그 일을 끝날때까지 모든 코드의 일이 멈춰버리기 때문에, 부하가 심하게 걸리는 작업에 들어가버리면 가끔 멈춰버리기도 합니다. 1 2 3 4 5 6 7 void Start() // Unity Stop! { while ( true ) { Debug.Log( "Hello, World!" ); } } Colored by Color Scripter cs 그럴때 멈추지 않고 사용하기 위해서 특정 행위가 종료된 후 컨트롤을 다시 넘겨주고, 다시 돌아왔을때 해당 작업을 진행할 수 있도록 하는 내용입니다. 다음은 0.2초마다 1씩 더한 내용을 출력하는 코드입니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 void Start() { StartCoroutine(IncreaseCoroutine()); } IEnumerator IncreaseCoroutine() { while ( true ) { increaseInt + + ; Debug.Log(increaseInt);