본문 바로가기

Unity/Unity2D

Unity2D_Week1 : Coroutine

※ 코루틴(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