231005_ Coroutine과 Invoke

Minsang Kim·2023년 10월 5일
0

TIL

목록 보기
34/41

코루틴

코루틴 그동안 많이도 사용해봤다.
그치만 코루틴의 자잘한 팁 몇개 써보자.

  1. 코루틴을 클래스로 선언할 수 있다.
private Coroutine co = null;

private void Update()
{
	if (co == null)
    {
    	co = startCoroutine(CoAction());
    }
}

이런 식으로 코루틴을 변수?처럼 사용할 수 있다. StartCoroutine은 보아하니 코루틴을 반환하는 메소드였다는 사실. 그래서 이런 식으로 코루틴 변수에 넣어줘서 코루틴이 실행되고 있나를 체크하는 방식도 있다.

StopCoroutine(co);

또한 변수로 선언된 코루틴을 지정해서 멈출 수 있는 방법도 있다.

  1. 코루틴에 매개변수넣기 삽가능
StartCoroutine(CoAction(transform.position));

Invoke

그치만 인보크도 얘기안해주면 삐질지도 모른다.

일반 인보크 : Invoke(), 반복 인보크 : InvokeRepeating()
인보크는 메소드이름을 매개변수로 받는다. 즉 string을 받는 다는 뜻. 그래서 string을 넣는다면 당신은 초보. nameof 메소드를 이용하자.

그리고 인보크 중지 : CancelInvoke().
이거는 이번에 알게 되었는데 인보크 실행 여부 : IsInvoking() <= 이게 코루틴과 가장 다른 점 같다. 이 메소드를 이용해 중복 실행을 방지할 수 있다.

차이점

스크립트가 비활성화 되면, 두 개 모두 동작 상태 유지.
오브젝트 비활성화 시, 코루틴은 정지, 인보크는 상태가 유지된다.
이 이외에 차이점이 있는지는 몰루

profile
게임만 하다가 개발자로

0개의 댓글