[스토리]
다른 프로그램도 마찬가지겠지만, Function의 호출, 흐름은 멈출 수 없다. 이게 무슨말인가 하면,
function1();
function2();
----1시간만 기다려!----
function3();
기다리는 부분에 특수한 장치 혹은 함수를 활용하지 않는 이상, 만약 무한루프를 활용하여 대기를 한다면
당신의 PC는 이상은 감지하고 프로그램을 죽은것으로 판단할 것이다. (흔하게 보는 응답없음)
C#에는 Thread.Sleep();이라는 좋은 함수를 활용하여 멈출 수 있지만, 아쉽게도 Unity에서는 제공되지 않는다.
하지만 언제나 Wait-Function이 필요할 수 있기 때문에 이번 리서치를 기회삼아 Coroutine을 활용한 방식을 포스팅한다.
1. 설계
Unity에서는 yield return 에서 제공하는 여러가지 유용한 기능들이 있다.
하지만 이 기능은 Coroutine에서만 사용할 수 있기 때문에, 우리는 Coroutine을 사용해본다.
* 코루틴에 대해서 자세히 들여다 보고 싶다면 아래 블로그의 포스팅을 참고하자
http://theeye.pe.kr/archives/tag/waitforendofframe
1) for(int index = 0; index < 10; index++) 를 통해서 같은 함수를 10번 호출시킨다.
(앞 함수가 진행되고 있더라도 호출)
2) 하지만 사용자의 의도는 한 함수가 끝나면 그 다음 함수를 '순차적'으로 호출하는 것이다.
3) 그러기 위해선 for문 안에 들어갈 것은 function이 아닌 Coroutine을 활용한다.
2. 소스코드
'C# Unity3D' 카테고리의 다른 글
[Input] 사용자 지정 Input EventHandler 만들기 (0) | 2019.04.11 |
---|---|
[Transform] 각도에 따른 Object 방향 구하기 (0) | 2019.03.25 |
[Transform] 두 Vector 사이의 각도 구하기 (-180~+180) (0) | 2019.03.22 |
[Physics] 빠르게 움직이는 Object의 충돌 감지 (0) | 2019.03.22 |
[Physics] Cast에 관해서 Gizmo 그리기 (0) | 2019.03.19 |