티스토리 뷰

반응형

개발하던 중 이미지 url을 이용해 사진을 다운로드 하여 보여주는 기능을 구현하게 되었다. 

유니티 도큐먼트를 찾아보면 https://docs.unity3d.com/Manual/UnityWebRequest-RetrievingTexture.html 이 문서를 보면 쉽게 따라할 수 있다. (따라했는데 안된다면 대부분 GetTexture를 StartCoroutine하지 않고 일반 함수처럼 호출했을 가능성이 큼.)

using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
public class MyBehaviour : MonoBehaviour
{
    void Start()
    {
        StartCoroutine(GetTexture());
    }

    IEnumerator GetTexture()
    {
        UnityWebRequest www = UnityWebRequestTexture.GetTexture("https://www.my-server.com/image.png");
        yield return www.SendWebRequest();
        if (www.result != UnityWebRequest.Result.Success)
        {
             Debug.Log(www.error);
        }
         else
        {
            Texture myTexture = ((DownloadHandlerTexture)www.downloadHandler).texture;
        }
     }
}

 

나는 static 함수로 다운로드 텍스쳐 함수를 만들어서 인자로 내가 텍스쳐를 넣을 RawImage와 다운로드받을 URL을 받아서 함수내에서 넣어주도록 만들어서 사용하고 있다. (호출할때 코루틴 주의)

public static IEnumerator SetDownloadTexture(RawImage image, string downloadURL)
        {
            UnityEngine.Networking.UnityWebRequest request = UnityEngine.Networking.UnityWebRequestTexture.GetTexture(downloadURL);

            yield return request.SendWebRequest();

            if (request.result != UnityEngine.Networking.UnityWebRequest.Result.Success)
                Debug.Log(request.error);
            else
            {
                image.texture = ((UnityEngine.Networking.DownloadHandlerTexture)request.downloadHandler).texture;
                image.SetNativeSize();
            }
        }

 

반응형
댓글