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의 코루틴에 대한 유니버설 대체물은 아니지만, 활용할 수 있는 또 다른 도구입니다. 이 기능의 범위는 이 문서에서 다루지 않지만 몇 가지 모범 사례 및 팁은 아래에 나와 있습니다.
댓글
댓글 쓰기