기존 소스을 변경시

Task 은 UniTask로 변경

async Task  => async UniTask 로

async void => async UniTaskVoid 로

 

Forget() 처리가 가능할 경우 로 async UniTaskVoid 로 처리

testA.Forget();

async UniTaskVoid testA()

{


}

 

async 가 필요없는 삭제할것

UniTask SomeFunction() { // 아무것도 하지 않음 return UniTask.CompletedTask; }

 

 

UniTaskVoid는 await할 수 없음

UniTaskVoid는 일반적인 UniTask와 다르게 await할 수 없습니다.
만약 비동기적으로 호출해야 한다면, UniTaskVoid 대신 UniTask를 사용하세요.

 

async UniTaskVoid Test() { await UniTask.Delay(500); Debug.Log("완료"); } // ❌ 잘못된 코드 (await 불가능) // await Test(); // 컴파일 에러 발생!

 

 

 

기존 함수  Get;Set; 으로 되었는건 await 함수로 만들것

 

 

UniTaskVoid 정리

특징설명

리턴값 없음 return;을 명시적으로 쓰지 않아도 됨
자동 실행됨 Forget() 없이도 실행됨
await 필수 await이 없으면 경고 발생
예외 전파됨 try-catch로 예외를 직접 처리해야 함
await 불가능 UniTaskVoid는 await할 수 없음 → UniTask를 사용해야 함

 

 

추천: UniTaskVoid는 주로 Unity의 이벤트 기반 코드(Update, OnTriggerEnter 등)에서 사용하고, 일반적인 비동기 함수에서는 UniTask를 사용하는 것이 더 안전합니다.

 

 

 

코루틴 -> To.Coroutine()

Forget() 사용시 이후 코드와 동시혹은 늦게 되어도 상관없는 코드일경우에 적용하고 

문제 발생하면 상위 단계로 올라가서 Forget() 처리

 

 

 

 

 

webgl 빌드시

  • UniTask.RunOnThreadPool() ❌ → WebGL에서는 사용 불가
  • await Task.Delay(1000); ❌ → 대신 UniTask.Delay() 사용
  • UniTask.Yield(PlayerLoopTiming.Background) ❌ → 대신 Update 사용
  • async void ❌ → async UniTask 또는 async Task 사용
  • UnityWebRequest 사용 시 CORS 문제 주의

 

 

Posted by 아기곰푸우
,