코루틴 그동안 많이도 사용해봤다.
그치만 코루틴의 자잘한 팁 몇개 써보자.
private Coroutine co = null;
private void Update()
{
if (co == null)
{
co = startCoroutine(CoAction());
}
}
이런 식으로 코루틴을 변수?처럼 사용할 수 있다. StartCoroutine은 보아하니 코루틴을 반환하는 메소드였다는 사실. 그래서 이런 식으로 코루틴 변수에 넣어줘서 코루틴이 실행되고 있나를 체크하는 방식도 있다.
StopCoroutine(co);
또한 변수로 선언된 코루틴을 지정해서 멈출 수 있는 방법도 있다.
StartCoroutine(CoAction(transform.position));
그치만 인보크도 얘기안해주면 삐질지도 모른다.
일반 인보크 : Invoke()
, 반복 인보크 : InvokeRepeating()
인보크는 메소드이름을 매개변수로 받는다. 즉 string을 받는 다는 뜻. 그래서 string을 넣는다면 당신은 초보. nameof 메소드를 이용하자.
그리고 인보크 중지 : CancelInvoke()
.
이거는 이번에 알게 되었는데 인보크 실행 여부 : IsInvoking()
<= 이게 코루틴과 가장 다른 점 같다. 이 메소드를 이용해 중복 실행을 방지할 수 있다.
스크립트가 비활성화 되면, 두 개 모두 동작 상태 유지.
오브젝트 비활성화 시, 코루틴은 정지, 인보크는 상태가 유지된다.
이 이외에 차이점이 있는지는 몰루