private IEnumerator WaitForLoad(string url) { HttpImage httpImage = null; while (!HttpImage.TextureCache.ContainsKey(url)) { yield return(null); } if (httpImage && httpImage.image) { httpImage.UpdateImageTexture(HttpImage.TextureCache[url]); } }
private IEnumerator StartAndWaitForLoad(string url) { HttpImage httpImage = null; UnityWebRequest unityWebRequest = new UnityWebRequest(url) { downloadHandler = new DownloadHandlerBuffer() }; HttpImage.RequestCache.Add(url, unityWebRequest); yield return(unityWebRequest.SendWebRequest()); HttpImage.RequestCache.Remove(url); Texture2D texture2D = null; if (unityWebRequest.isDone && !unityWebRequest.isHttpError && !unityWebRequest.isNetworkError) { texture2D = new Texture2D(16, 16) { name = url }; if (!ImageConversion.LoadImage(texture2D, unityWebRequest.downloadHandler.data, true)) { UnityEngine.Object.DestroyImmediate(texture2D); texture2D = null; } } if (texture2D == null) { texture2D = httpImage.MissingImage; if (texture2D == null) { texture2D = Texture2D.blackTexture; } } HttpImage.TextureCache.Add(url, texture2D); unityWebRequest.Dispose(); if (httpImage && httpImage.image) { httpImage.UpdateImageTexture(texture2D); if (httpImage.PreserveAspectHeight) { float single = (float)texture2D.height / (float)texture2D.width; RectTransform vector2 = httpImage.image.rectTransform; Rect rect = httpImage.image.rectTransform.rect; vector2.sizeDelta = new Vector2(0f, rect.width * single); httpImage.image.enabled = true; } } }