Unity/이론

[Unity] 1) Invoke 와 Coroutine의 차이

GiveZero 2023. 2. 28. 13:48

Invoke

매개변수 전달 불가능

함수를 대신 실행, Reflection을 통해 값을 가져옴

Reflection 이란?

- 프로그램 실행 도중에 객체의 정보를 조사
- 다른 모듈에 선언된 인스턴스 생성
- 기존 개체에서 형식을 가져와 해당하는 함수를 호출

비활성화가 되더라도 동작

InvokeRepeat를 통해 지속 반복 동작할 수 있고, CancelInvoke 또는 오브젝트 파괴를 통해 종료


Coroutine

매개변수 전달 가능

현재 위치를 기억하고 다른 루틴에게 수행권한을 넘겨주고 다시와서 처리하는 방식 (yield return)

게임 오브젝트가 비활성화 되면 동작 X

비활성화 → 활성화 되더라도 동작 X

Update 에서는 5초 뒤 동작하라 한다면 약 250번을 호출하지만

코루틴은 5초를 쉴 수 있기에 효율적

Time Scale이 0 인 경우 동작 가능(WaitForSecondsRealtime())