[Unity]TIL (6) | 2023.07.31

kjg5370·2023년 7월 31일
0

TIL

목록 보기
6/91

유니티 인보크 Invoke 사용법

Invoke란?

• 유니티에서 자신이 설정한 시간만큼 함수 시작을 지연시키는 기능.
• 비슷한 기능을 가진 코루틴이 있지만 Invoke가 간단하고 초보자도 쉽게 사용할 수 있는 효과적인 함수.

코드 예시

 void Start()
 {
 	Invoke("Wait",5f);
 }
 void Wait()
 {
 	Debug.Log("5초 지남");
 }

=>Start문에서 Invoke문으로 5초의 시간을 지연시키고 5초후 Wait이라는 함수를 실행시켜 5초지남이라는 로그를 보여주게 함.

형식

Invoke( "함수명"(string) , 지연시간(float));

지연 반복 InvokeRepeating

 void Start()
 {
 	InvokeRepeating("Wait",5f,1f);
 }
 void Wait()
 {
 	Debug.Log("5초 지난 후 1초마다 반복");
 }

=>일정 시간 지연 후, 일정 시간 마다 반복하게 해주는 기능.

형식

InvokeRepeating( "함수명"(string) , 지연시간(float), 지연 후 반복할 시간(float));

CancelInvoke

 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을 권장.

profile
학생입니다

0개의 댓글