본문 바로가기
Unity3D

[Unity3D] UnityWebRequest를 사용하여 이미지를 다운로드하고 저장하기

by 따봉이 2020. 11. 8.
728x90
반응형

1. 개요

Unity5.4에서 공식적으로 발표 된 [UnityWebRequest]를 사용하여
web에있는 이미지 파일을 다운로드하여
로컬에 저장하려고합니다.

동작 확인을 실시한 nity 버전은 [2019.2.13f1]입니다.

 

2.스크립트

using System;
using System.IO;
using UnityEngine.Networking;


StartCoroutine(GetwebReqContents());


private IEnumerator GetwebReqContents()
{
    Debug.Log("처리시작");
    while (Application.internetReachability == NetworkReachability.NotReachable)
    {
        Debug.Log("인터넷 접속불가 상태");
        yield return new WaitForSeconds(5f);
    }

    Debug.Log("이미지 다운시작");
    UnityWebRequest webReq = UnityWebRequestTexture.GetTexture("이미지URL");
    yield return webReq.SendWebRequest();
    Debug.Log("이미지 다운완료");

    if (webReq.isNetworkError || webReq.isHttpError)
    {
        Debug.Log(webReq.error);
    }
    else
    {
        try
        {
            File.WriteAllBytes(@"실저장경로", webReq.downloadHandler.data);
            Debug.Log("저장완료");
        }
        catch(Exception ex)
        {
            Debug.Log(ex.Message);
        }
    }
}

3.사용법

기본적으로 코루틴 (Coroutine )을 사용하게됩니다.
[IEnumerator] 인터페이스를 사용하여 [StartCoroutine]에서 함수를 실행합니다.

스크립트에 대한 설명은
[Application.internetReachability] 인터넷 액세스 상태를 확인합니다.
상태가 [NetworkReachability.NotReachable]이면
인터넷에 연결되지 않은 상태이므로

yield return new WaitForSeconds (5f);

위에서 5 초간 처리를 중지하고 다시 시작합니다.
액세스 가능한 상태가 될 때까지 반복합니다.

액세스 가능한 상태

NetworkReachability.ReachableViaCarrierDataNetwork 

or

NetworkReachability.ReachableViaLocalAreaNetwork : Wi-Fi

되면

UnityWebRequestTexture.GetTexture

에서 HTTP Get 통해 이미지를 다운로드로 이동합니다.
다운로드가 완료되면 지정된 경로에 저장형태입니다.

 

 

 

728x90
반응형

댓글