대마법사의 개발 블로그랄까?

유니티 비동기 작업에 대해 알아보자 본문

Unity 한테 정복당하기

유니티 비동기 작업에 대해 알아보자

대마법사(진) 2025. 2. 12. 21:33

Coroutine

우선 코루틴은 멀티스레드가 아닌 메인스레드 작업이다.
yield Retrun 통해 주도권을 번갈아 가며 사용하는 방식이다.

Await / Async

Await Async 즉 비동기처리이다.

private async void Start()
{
    await Test();
}

private async void Test()
{
    await Task.Run(()=>{// RUN으로 감싸인 부분만 비동기 처리
        while(true)
        {
            //DoSomething ...
        }
    });
    //비동기 처리 완료후 이후 라인 수행
    //UNITY API 접근 가능
}
  • Async Await 을 통해서는 Unity API에 직접적으로 접근할 수 없다.
    • ex) Transform, Texture, Shader ....
    • 접근시 컴파일 에러발생함
  • 무거운 연산에 적합하다.

Parallel

CPU 연산에 최적화된 병렬 작업

public static System.Threading.Tasks.ParallelLoopResult For (int 
  fromInclusive, int toExclusive, 
  Action<int,System.Threading.Tasks.ParallelLoopState> body);
  • 마찬가지로 UNITY API에 접근할 수 없다.
  • 파일 로드/저장 정도로 사용할 수 있다.