이번 팀프로젝트에서 몬스터를 소환하는 기능을 목표로 설정하고 구현했었다.
몬스터 소환은 반복되어야 했기 때문에 함수를 원하는 시간에 실행될 수 있는 지연함수 기능을
사용해야만했다. 그래서 Invoke와 Coroutine중 무엇을 써야할까 고민하다가 둘다 비슷한 기능 같아서
Invoke기능을 사용했고 결과로 반복적인 함수호출을 구현할 수 있었다.
프로젝트가 끝난 후 그냥 기능이 비슷하다고 넘어간 Invoke와Coroutine의 개념을 확실히 하고 싶어서
개념을 정리하고자 한다.
Invoke 와 Coroutine은 똑같은 지연함수라고 생각할 수 있다.
그래서 둘 중 하나를 골라서 마음대로 쓰고 있을 수 있는데 둘은 개념이 다르다.
1. Invoke와 Coroutine의 개념
- Invoke - 시간을 지연시키고 함수를 한 번만 실행한다.
- Coroutine - 시간을 지연시키고 함수를 반복 실행한다.
이로인해 Invoke가 Coroutine과 동일한 성능을 내기 위해선 InvokeRepeating 기능을 사용하면 된다
InvokeRepeating은 Invoke의 함수 한번 실행을 여러번 반복하게 해준다.
하지만 여기서도 둘의 차이는 있다.
2. InvokeRepeating과 Coroutine의 차이점
- InvokeRepeating - 코루틴으로 호출한 함수 내부에서 임의로 지연시간 설정 가능
- Coroutine - 처음에 정한 시간의 주기로 함수를 반복 호출하기 때문에 임의로 지연시간 설정 불가능
3. 취소 방법
- InvokeRepeating - CancelInvoke(함수명);
- Coroutine - StopCoroutine("함수명");
'TIL > Unity' 카테고리의 다른 글
[Unity] 부모의 Awake, Start, Update 호출하기 (override) (0) | 2023.09.19 |
---|---|
[Unity] 직렬화 (0) | 2023.09.18 |
Unity 효율적인 데이터 관리 (ScriptableObject) (0) | 2023.09.14 |
Unity 물체 감지 기능(LayerMask, RaycastHit) (0) | 2023.09.13 |
[Unity] 충돌체크 기능 OnCollision, OnTrigger (0) | 2023.09.12 |