2022. 6. 27. 03:34ㆍ유니티 코딩 기본 개념
본 포스팅에서는 이해를 위한 오류가 포함되어 있습니다.
유니티 초보자가 코루틴( coroutine )을 처음 들어보면 도대체 뭔가 싶고 어려워 보이는 이름에 겁을 먹을 수 있다.
하지만 코루틴은 코딩을 더욱 쉽게 만들고 효율적인 코드를 작성할 수 있게 해주기에 꼭 알고 있으면 좋을 것 같다.
1. 코루틴 개념
우선 코루틴을 간단하게 말하자면 함수 실행 중간 중간에 딜레이를 줄수 있는 함수 같은 것이다. ( 완전히 틀린 말이지만 일단은 이렇게 알아두자 )
만약에 우리가 숫자를 카운트 다운하는 함수를 만든다고 해보자
이런식으로 함수를 만들수 있을것이다.
매개변수로 받은 값부터 1까지 콘솔 창에 띄우는 함수이다.
그런데 만약 이 숫자들을 1초 간격으로 출력하고 싶다면 어떻게 해야 할까
Invoke를 쓰거나 하는 방법도 있지만 이럴 때는 코루틴을 쓰는 것이 제일 간단하다.
이 함수를 숫자를 1초 단위로 출력하게 코루틴으로 바꾸어 써보겠다.
뭔가 많이 바뀌어 졌지만 겁먹을 것 없다.
yield return new waitforseconds(1);
이 부분부터 설명하겠다.
코루틴은 함수를 실행하는 도중에 딜레이를 줄 수 있는데
그 종류는 초 단위, 한 프레임 동안, 특정 조건이 만족될 때까지, fixedupdate 주기만큼 등등 여러 방식이 있다.
yield return new WaitForSeconds(1); //초 단위 ( 1초 )
yield return null; //한 프레임 동안
yield return new WaitUntil(() => 조건); //조건이 true가 될때까지
yield return new WaitForFixedUpdate(); //FixedUpdate 주기만큼
각각 이런 식으로 사용한다.
앞에 공통적으로 붙는 Yield return은 일단 그냥 쓴다고 생각하자.
이제 아까의 코드를 다시 보면 for 문에서 i 값을 출력할 때마다 1초씩 쉬게 되어있다는 것을 알 수 있다.
또한 함수 이름 앞에 붙은 IEnumerator는 yield return ~~~ 를 사용하기 위해 함수앞에 붙이는 키워드이다. ( IEnumerator를 안쓰고 yield return ~~~ 를 사용하면 오류난다. )
또한 코루틴은 실행할때 StartCoroutine( 함수이름() );
이런식으로 써야 한다.
지금은 1초 간격으로 카운트다운을 하는 함수지만 게임의 보스가 1초 간격으로 총을 쏜다던가 하는 식으로 사용할 수 있을 거다.
'유니티 코딩 기본 개념' 카테고리의 다른 글
[Unity] 유니티(c#) 정렬 하기 - Linq (0) | 2023.12.24 |
---|---|
[unity] 열거형 ( Enum ) 에 대해 알아보자 (0) | 2022.06.28 |
[unity] 유니티 대리자를 알아보자 #1 ( action, func ) (0) | 2022.06.27 |
[unity] 유니티 삼각함수에 대해 알아보자 (sin, cos) (0) | 2022.06.26 |