Unity 비동기 프로그래밍

 Unity에서 .NET 4.x 사용 | Microsoft Docs

AP(작업 기반 비동기 패턴)

비동기 프로그래밍을 사용하면 애플리케이션이 응답하지 않는 시간이 오래 걸리는 작업을 수행할 수 있습니다. 또한 이 기능을 사용하면 시간이 많이 소요되는 작업이 완료될 때까지 코드를 기다렸다가 이러한 작업의 결과에 따라 코드를 계속 사용할 수 있습니다. 예를 들어 파일이 로드되거나 네트워크 작업이 완료될 때까지 기다릴 수 있습니다.

Unity에서 비동기 프로그래밍은 일반적으로 코루틴을 사용하여 수행됩니다. 그러나 C# 5 이후부터 .NET 개발에서 비동기 프로그래밍의 기본 방법은 System.Threading.Task와 함께 async 및 await 키워드를 사용하는 TAP(작업 기반 비동기 패턴)입니다. 요약하면 async 함수에서 나머지 애플리케이션의 업데이트를 차단하지 않고 await 작업의 완료가 가능합니다.

C#
// Unity coroutine
using UnityEngine;
public class UnityCoroutineExample : MonoBehaviour
{
    private void Start()
    {
        StartCoroutine(WaitOneSecond());
        DoMoreStuff(); // This executes without waiting for WaitOneSecond
    }
    private IEnumerator WaitOneSecond()
    {
        yield return new WaitForSeconds(1.0f);
        Debug.Log("Finished waiting.");
    }
}
C#
// .NET 4.x async-await
using UnityEngine;
using System.Threading.Tasks;
public class AsyncAwaitExample : MonoBehaviour
{
    private async void Start()
    {
        Debug.Log("Wait.");
        await WaitOneSecondAsync();
        DoMoreStuff(); // Will not execute until WaitOneSecond has completed
    }
    private async Task WaitOneSecondAsync()
    {
        await Task.Delay(TimeSpan.FromSeconds(1));
        Debug.Log("Finished waiting.");
    }
}

TAP는 Unity별 뉘앙스를 고려해야 하는 복잡한 주제입니다. 결과적으로 TAP는 Unity의 코루틴에 대한 유니버설 대체물은 아니지만, 활용할 수 있는 또 다른 도구입니다. 이 기능의 범위는 이 문서에서 다루지 않지만 몇 가지 모범 사례 및 팁은 아래에 나와 있습니다.

댓글

이 블로그의 인기 게시물

About AActor!!! "UObject" has no member "BeginPlay"

UNREAL Android build information

C++ 생성자 위임 (delegating constructor)