Unity C# 코루틴 Coroutine

Intro

C# 코루틴

코루틴

코루틴은 진입점이 여러개인 함수이며 코루틴을 이용하면 어떤 작업을 필요에 따라 시간 간격에 따라 처리할 수 있다.

일반 메서드

void Start()
{
    LoopA();
    LoopB();
}

void LoopA()
{
    for(int i=0; i<100; i++)
    {
    ...
    }
}

void Loop2()
{
    for(int j=0; j<100; j++)
    {
    ...
    }
}

위와 같이 일반적인 메서드는 LoopA가 끝나고나서 LoopB가 실행된다.

코루틴

Coroutine myCoroutine1;
Coroutine myCoroutine2;

void Start()
{
   myCoroutine1 = StartCoroutine(LoopA());
   myCoroutine2 = StartCoroutine(LoopB());
   StartCorutine(Stop());
}

IEnumerator LoopA()
{
    for(int i=0; i<100; i++)
    {
    ...
    
    yield return new WaitForSeconds(1f);
    }
}

IEnumerator Loop2()
{
    for(int j=0; j<100; j++)
    {
    ...
    
    yield return new WaitForSeconds(1f);
    }
}

IEnumerator Stop() // 
{
    yield return new WaitForSeconds(2f);
    StopCoroutine(myCoroutine1);
}

1초마다 LoopA와 B가 실행되며 Stop()에 의해 2초뒤에 LoopA는 멈추게된다.

이러한 코루틴을 활용해서 캐릭터의 버프를 일정시간뒤에 사라지게 하거나 캐릭터가 서서히 사라지게 하는 효과 등등 다양한 기능을 구현할 수 있다.

실행결과

1

참고자료

https://youtu.be/ePl2C4LTKGQ?list=PLUZ5gNInsv_O7XRpaNQIC9D5uhMZmTYAf

태그: ,

카테고리:

업데이트:

댓글남기기