• 유니티에서 자신이 설정한 시간만큼 함수 시작을 지연시키는 기능.
• 비슷한 기능을 가진 코루틴이 있지만 Invoke가 간단하고 초보자도 쉽게 사용할 수 있는 효과적인 함수.
void Start() { Invoke("Wait",5f); } void Wait() { Debug.Log("5초 지남"); }
=>Start문에서 Invoke문으로 5초의 시간을 지연시키고 5초후 Wait이라는 함수를 실행시켜 5초지남이라는 로그를 보여주게 함.
Invoke( "함수명"(string) , 지연시간(float));
void Start() { InvokeRepeating("Wait",5f,1f); } void Wait() { Debug.Log("5초 지난 후 1초마다 반복"); }
=>일정 시간 지연 후, 일정 시간 마다 반복하게 해주는 기능.
InvokeRepeating( "함수명"(string) , 지연시간(float), 지연 후 반복할 시간(float));
void Start() { InvokeRepeating("Wait",5f,1f); Invoke("CancleInvokeLog,10f); } void Wait() { Debug.Log("5초 지난 후 1초마다 반복"); } private void CancleInvokeLog() { CancleInvoke("Wait"); }
=> 일정 시간 후 Wait함수의 반복을 멈춤.
CancleInvoke("함수명(String)");
• 인보크는 단순히 함수의 이름만 전달할 수 있으며, 함수의 지연 실행 + 매개변수 전달이 필요하다면 Coroutine을 사용.
• Invoke는 단순한 지연 실행에 있어서는 Coroutine보다 간편하지만, 성능면에서는 떨어짐.
• Invoke는 Coroutine이 메서드 자체를 인자로 받아가는 것과는 달리, 메서드의 이름을 받아가는 과정이 Coroutine보다 느리다는 것.
• 따라서 Unity 공식문서에서도 성능을 원한다면 Invoke보다 Coroutine을 권장.