[Unity] 코루틴 사용하기

dd_ddong·2022년 6월 5일
0

Unity

목록 보기
8/9

시간 관리

게임 스킬 중에 스킬 시전 후 4초 뒤에 터지는 스킬을 구현하고 싶다면 어떻게 해야 할까?
그냥 코루틴 박아 넣으면 손쉽게 구현할 수 있다.

코루틴은 함수의 상태를 저장/복원할 수 있다.
따라서 엄청 오래 걸리는 작업을 잠시 끊거나 원하는 타이밍에 함수를 잠시 멈추거나 복원할 수 있다.

기본적 사용

class CoroutineTest : IEnumerable{
	public IEnumerator GetEumerator(){
    	yield return 1;
        yirld return 2;
    }
    
    void Start(){
    	CoroutineTest co = new CoroutineTest();
        foreach(var i in co){
        	int value = (int)i;
            Debug.Log(value);
        }
    }
}

// Log : 1
		 2

IEnumable 인터페이스를 구현한 객체는 yield return을 사용할 수 있다.
처음 호출시에는 처음 yield return까지 실행하고 다음 호출시에는 다음에 있는 yield return까지 실행한다.

시간관리가 필요한 스킬구현


IEnumerator ExplodeAfterSeconds(float second)
{
	Debug.Log("Explode Enter");
	yield return new WaitForSeconds(seconds);
    Debug.Log("Explode Execute!!");
}

먼저 코루틴을 사용할 함수의 반환형식은 IEnumerator로 하고 yield return으로 WaitForSeconds()객체를 넘겨주면 된다.

WaitForSeconds객체는 코루틴을 편하게 사용하기 위해 unityEngine에서 제공해주는 객체로
second를 인자로 넘겨주면 second 뒤에 다음 yield return 까지 함수를 실행시켜 준다.

void Start(){
	Coroutine co = StartCoroutine("함수 이름", 인자);
    
    StopCoroutine(co);
}

Coroutine 함수를 실행시키고 싶으면 StartCoroutine을 실행해주면 되고 실행한 코루틴을 멈추게 하고 싶은면 StopCoroutine을 실행해주면 된다.

0개의 댓글