- Today
- Total
프로그래밍 농장
코루틴에 대한 간단한 정리 본문
코루틴은 '대기'라는 말이 너무 중심으로 이어지기 때문에 코루틴을 대기시간으로 아는 사람이 많다.
코루틴을 Invoke와 비교한다. 코루틴은 Update이다.
Update란? -> 프레임마다 발동한다 -> Update는 60fps
알기쉽게 말하자면 Update는 1초에 60장, 즉 0.016초마다 발동된다는 소리이다.
30fps면 1초에 30장, 즉 0.032초마다 발동된다는 소리이다.
그렇다면 코루틴은 몇초마다 발동될까 ? -> 정답은 0초이다.
0초마다 반복되는게 어디있나? -> 그렇기때문에 대기시간을 거기에 넣는것이다. 만약 코루틴 대기시간을 숫자로 0.016초 대기시간을 주면 Update = 코루틴 0.016초 대기와 같은수준이라는것이다.
코루틴 1프레임 = null 이라고 정해져있다. 그렇기 때문에 Update = 코루틴 0.016초 지연 = 코루틴 null 지연
위 세개가 같은 수준이라는것이다.
1초를 정확히 60번 나눌수 없지만 0.016666666.. 초니까 유의미하지않다.
그러면 왜 코루틴을 쓰는가 ?
-> if문으로 5초를 세려면 60fps 짜리를 5초를 세려면 연산을 한번씩해야한다. if문으로 체크를 해야한다. if문으로 체크를 계속 연산을 300번 해야한다. 5/0.016 = 300 연산을해야하는 문제가 발생한다.
그렇기에 코루틴을 사용하는것이다.
+
코루틴 = Coroutine = Co - Routine = Co(함께) Routine(돈다), Routine = Update
즉 메인 Update와 같이 돈다는 의미로 CoRoutine이라는 것입니다.
코루틴이라는 용어는 유니티에서 만든것입니다. 실제로 프로그램에서는 친숙한 용어로 쓰레드라는 것이 있죠.
기본적으로 여러분의 프로그램은 하나의 스레드에서 돕니다. 메인스레드에서 뭔가 하면서 추가로 동시에 하고 싶은게 있다면
별도의 스레드를 만들어 돌려야 하죠. (별도의 스레드를 같이 돌렸을때의 생기는 문제는 여러가지가 있는데 이건 논외로..)
유니티의 Coroutine은 별도의 스레드에서 돌아가듯이 뭔가를 동시에 수행할 수 있도록 해줍니다.
출처 :
https://gall.dcinside.com/mgallery/board/view/?id=game_dev&no=108373&page=1
'Unity' 카테고리의 다른 글
Base에 대하여 [Unity] (0) | 2022.09.27 |
---|---|
쉐이더그래프 [ Unity ] (0) | 2022.09.26 |
씬 전환할 때 라이트가 어두워지는 문제 해결 방법 (0) | 2022.09.23 |
이펙트 및 효과용 스프라이트 시트 사이트 (0) | 2022.09.22 |
[해결] IPointerClickHandler 인식이 안되는 문제 (0) | 2022.09.22 |