※ 코루틴(Coroutine) : Co(함께/협력) Routine(루틴, 함수)
· yield return으로 반환할 때 까지 실행되는 함수.
· 반환값은 IEnumerator로 받는다.
· 실행문은 StartCoroutine("Coroutine 함수 명");
void Update()
{
StartCoroutine("FindEnemy())"
}
IEnumerator FindEnemy()
{
// 적을 탐색하는 지시문
yield return new WaitForSeconds(1.0f);
}
코루틴을 사용하는 이유
· 플레이어를 탐지하는 간단한 AI를 가진 Enemy가 있다.
· Update(){}문에서 사용하게 된다면, 프레임당 한 번씩 플레이어를 탐지하려고 한다.
· 이것은 지나치게 지속적으로 체크해야 되며, 다수의 Enemy가 있다면 과부하를 초래할 지도 모른다.
· 그렇기에, 코루틴에서 return을 1초마다 실행시켜 게임에 악영향을 안끼치게 체크 회수를 감소시킬 수 있다.
간단한 피격판정 코루틴 함수
IEnumerator takeDamage()
{
// 스프라이트 렌더러의 색상을 빨간색으로 바꾼다.
spriteRenderer.color = Color.red;
// 0.05초 쉬고
yield return new WaitForSeconds(0.05f);
// 스프라이트 렌더러의 색상을 흰색(원래색)으로 바꾼다.
spriteRenderer.color = Color.white;
}
· for문이나 while문으로 횟수를 늘린다면 더 나은 이펙트가 될 수 있다.
'Unity > Unity2D' 카테고리의 다른 글
| Unity2D_Week2 : Collsion (0) | 2021.12.23 |
|---|---|
| Unity2D_Week2 : Property (0) | 2021.12.09 |
| Unity2D_Week1 : Raycast (0) | 2021.12.06 |
| Unity2D_Week1 : ChargeJump (0) | 2021.12.06 |
| Unity2D_Week1 : Jump (0) | 2021.12.06 |