How to load an image from URL with Unity?

Michel Jung picture Michel Jung · Aug 1, 2015 · Viewed 37.8k times · Source

Please save me from going crazy.

No matter how many times I google, I always end up with (usually deprecated) versions of the following code:

IEnumerator setImage(string url) {
    Texture2D texture = profileImage.canvasRenderer.GetMaterial().mainTexture as Texture2D;

    WWW www = new WWW(url);
    yield return www;

    Debug.Log("Why on earh is this never called?");

    www.LoadImageIntoTexture(texture);
    www.Dispose();
    www = null;
}

I'm using Unity 5 not 4. The URL I'm trying to load exists. Please shine some light on me.

How do I load an image over HTTP and display it in a UnityEngine.UI.Image?

Answer

pale bone picture pale bone · Dec 13, 2018

For Unity 2018+ use UnityWebRequest which replaces the WWW class.

void Start(){    
    StartCoroutine(DownloadImage(url));
}

IEnumerator DownloadImage(string MediaUrl)
{   
    UnityWebRequest request = UnityWebRequestTexture.GetTexture(MediaUrl);
    yield return request.SendWebRequest();
    if(request.isNetworkError || request.isHttpError) 
        Debug.Log(request.error);
    else
        YourRawImage.texture = ((DownloadHandlerTexture) request.downloadHandler).texture;
}