게임 스킬 중에 스킬 시전 후 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
을 실행해주면 된다.