[TIL] 24.12.21 SAT

GDORI·5일 전
0

TIL

목록 보기
139/143
post-thumbnail

코루틴

클라분들과 협업하면서 얘기가 나오는 것 중 가장 많이 나오는 것이 코루틴인데, 나는 노드 서버기수이지만 클라이언트도 알면 좋을 것 같아 알아보았다.

코루틴은 유니티에서 비동기적 작업을 수행할 수 있게 해주는 기능이다. 반복적으로 수행되어야할 때 효율적으로 처리하는데 도움을 준다. 예를 들어 애니메이션, 네트워크 요청등 시간 간격을 두고 발생하는 이벤트를 코루틴을 통해 쉽게 구현할 수 있다.

코루틴 정의

코루틴은 IEnumerator를 반환하는 메서드로 정의되는데 호출된 후 즉시 실행되지 않고 특정 조건이 충족될 때 실행을 중단 및 재개할 수 있다.

public class CoroutineEx : MonoBehaviour
{
    void Start()
    {
        StartCoroutine(KkCoroutine());
    }

    IEnumerator KkCoroutine()
    {
        Debug.Log("코루틴 시작");
        yield return new WaitForSeconds(2); // 2초 대기
        Debug.Log("2초 후 실행");
        yield return null; // 다음 프레임까지 대기
        Debug.Log("코루틴 종료");
    }
}

코루틴 사용법

코루틴은 StartCoroutine 메서드를 이용하여 사용할 수 있다.
yield return은 코루틴 실행을 중단하고 이후 조건에 따라 재개할 수 있다.

  • yield return null: 다음 프레임까지 대기.
  • yield return new WaitForSeconds(float seconds): 지정된 시간 동안 대기.
  • yield return StartCoroutine(...): 다른 코루틴이 완료될 때까지 대기.
  • yield return new WaitUntil(Func<bool>): 특정 조건이 참이 될 때까지 대기.
  • ield return new WaitWhile(Func<bool>): 특정 조건이 거짓이 될 때까지 대기.

코루틴 종료

start로 시작했으니 종료는 stop이다 StopCoroutine

void StopKkCoroutine()
{
    if (KkCoroutine != null)
    {
        StopCoroutine(KkCoroutine);
    }
}
profile
하루 최소 1시간이라도 공부하자..

0개의 댓글