폐관수련
코루틴 (Coroutine) 본문
코루틴 (Coroutine)
메서드는 return 구문을 만나거나 그 메서드가 끝날때까지 실행된다.
하지만 코루틴 메서드에서는 yield return 구문을 만나게 되면 그 구문의 조건을 충족할 때까지 메서드가 정지되고 해당 메서드를 호출한 곳으로 돌아가 그 뒤를 실행한다. (중간에 조건이 충족되면 다시 코루틴 메서드 중단지점 이후부터 실행한다)
void Work()
{
// 오전업무
StartCoroutine(Eat());
// 오후업무
}
IEnumrator Eat()
{
// 점심을 먹는다
yield return 저녁 시간까지 기다린다
// 저녁을 먹는다
}
오전업무가 끝나고 Eat 메서드가 호출되어 점심을 먹는다.
yield return 구문의 조건대로 저녁 시간까지 Eat 메서드는 중단된다.
오후업무를 하다가 저녁 시간이 되면 다시 Eat 메서드의 중단지점 이후부터 실행된다.
코루틴 시작 및 종료
코루틴 시작 및 종료 함수는 매개변수가 각각 string 또는 (반환값이 IEnumerator인)method이다.
// Start
public Coroutine StartCoroutine(string methodName)
public Coroutine StartCoroutine(string methodName, object value)
public Coroutine StartCoroutine(IEnumerator routine)
// Stop
public void StopCoroutine(IEnumerator routine)
public void StopCoroutine(Coroutine routine)
public void StopCoroutine(string methodName)
String
- 매개변수를 하나만 적용할 수 있다.
- 코루틴 함수 이름을 잘못 적어도 오류가 나지 않는다.
- string이기 때문에 오버헤드가 발생하지만, 이 후 method 방법과 성능 차이는 없다.
- StopCoroutine을 사용할 때 string으로 중지시켜야 한다. 또한, 이름이 같은 모든 코루틴을 중지시킨다.
Method
- 매개변수를 여러 개 적용할 수 있다.
- StopCoroutine을 사용할 때 반환 값을 저장한 뒤 저장된 반환 값을 사용하여 중지시킨다.
private Coroutine tmpCo;
private void StartMyCoroutine()
{
if(tmpCo != null)
{
StopCoroutine(tmpCo);
}
tmpCo = StartCoroutine(MyCoroutine());
}
'Programming > unity' 카테고리의 다른 글
이벤트 함수 (0) | 2021.11.02 |
---|---|
DOTween (0) | 2021.10.26 |
스프라이트 (Sprite) (0) | 2021.10.22 |
Comments