본문 바로가기

유니티(Unity)

비동기 예시

using UnityEngine;
using System.Threading.Tasks;

public class TaskTest : MonoBehaviour
{
    void Start()
    {
        Test();
    }
    public async Task<string> FetchDataAsync()
    {
        // 비동기 작업 시뮬레이션을 위해 1초 대기
        await Task.Delay(5000);

        // 비동기 작업 결과 반환
        return "데이터 결과";
    }
    private void Test()
    {
        PerformAsyncOperation();
    }
    public async void PerformAsyncOperation()
    {
        A();
        B();
        C();

        // 비동기 함수 호출
        string result = await FetchDataAsync();
        D();
        // 비동기 작업 완료 후 결과 처리
        Debug.Log(result);
    }
    private void A()
    {
        Debug.Log("A");
    }
    private void B()
    {
        Invoke("InvokeTest", 3f);
    }
    private void C()
    {
        Debug.Log("C");
    }
    private void D()
    {
        Debug.Log("D");
    }
    private void InvokeTest() 
    {
        Debug.Log("B");
    }
}

A, B, C 함수 동시실행된다. 그것을 확인하기 위해 B에 Invoke를 사용했다. 그 결과 로그창에는 다음과 같은 순서로 출력된다.

 

A

C

(3초후) B

(B실행후 2초후. 총 5초 후) D

데이터결과

'유니티(Unity)' 카테고리의 다른 글

Firebase Storage MetaShop  (0) 2023.05.30
MetaShopEditor  (0) 2023.05.30
웹소켓,TCP,패킷  (0) 2023.03.07
클래스, 객체, 인스턴스  (0) 2023.03.03
프로그램 패러다임  (0) 2023.03.03