코루틴과 인보크함수
코루틴과 인보크
게임을 만들다 보면 혹은 다른 프로그램을 만들다 보면 일정 간격 혹은 지정된 시간마다
반복해야 하는 함수들이 있다 코루틴과 인보크 함수는 이런 일들을 간편하게
처리할수있게 해준다
1.인보크 함수
InvokeTest가 하는 일은 콘솔 창에 InvokeTest : 시간 을 출력해준다.
그리고 Start 함수에서 Invoke("InvokeTest", 1); 을 입력했다.
이 문장의 뜻은 InvokeTest 라는 이름의 함수를 1초 후에 실행하라 이다.
실제로 코드를 넣고 실행하면 1초 후 위와 같은 문장이 콘솔창에 출력된다.
만약 인보크함수를 실행했는데 취소하고 싶다면 아래와 같은 함수를 사용하면
모든 인보크가 취소 된다
만약 모든 인보크가 아니라 특정한 함수만 취소하고 싶다면
해당 함수면 취소가 된다.
만약 해당 함수를 일정 시간마다 반복하고 싶다면
InvokeRepeating 함수를 사용하면 된다.
예를 들어 InvokeRepeating("InvokeTest", 3, 1); 이렇게 적었다면
InvokeTest 함수를 3초 후 부터 1초마다 반복하라 가 된다.
이 함수도 위에서 설명한 CancelInvoke함수로 취소가 가능하다.
2. 코루틴
코루틴은 처음보면 조금 난해할수 있다. 하지만
위에서 배운 인보크와 크게 다를것이 없다.
위 코드를 보면 IEnumerator CoroutineTest() 라는 함수가 있다.
이는 우리가 평소에 쓰는 함수와 완전히 같지만 반환형만 조금 다른것 뿐이다.
위 함수를 실행하면 콘솔창에 "CoroutineTest : 시간" 을 2번 출력하는데
중간에 yield return new WaitForSeconds(1); 이라는 문장이 있다.
이 문장의 뜻은 1초 동안 Update를 실행하다 돌아오라는 뜻이다.
따라서 실행하면 다음과 같은 결과가 나온다.
코루틴은 StartCoroutine(함수이름()); 으로 실행을 할수 있다.
코루틴으로도 반복하는 작업을 할 수 있다.
반복문 때문에 다시 반복하게 된다.
코루틴은 인보크와 다르게 반복할 시간을 중간에 바꿀 수 있다.
나보다 왜 더 잘쓴거 같냐
답글삭제