Unity載入網路圖片的兩種方式
阿新 • • 發佈:2020-12-27
using System.Collections; using UnityEngine; using UnityEngine.Networking; using UnityEngine.UI; /* * * Writer:June * * Date: 2020.12.26 * * Function:兩種從網路上下載圖片的請求方式 * * Remarks:這些方法僅支援Image元件 * */ public class RequestData : MonoBehaviour { /// <summary> /// www請求 /// </summary> /// <param name="_imageComp">image元件</param> /// <param name="_url">URL</param> public void GetImageByWWW(Image _imageComp, string _url) { StartCoroutine(WWWGetData(_imageComp, _url)); } /// <summary> /// UnityWebRequest請求 /// </summary> /// <param name="_imageComp">image元件</param> /// <param name="_url">URL</param> public void GetImageByUnityWebRequest(Image _imageComp, string _url) { StartCoroutine(UnityWebRequestGetData(_imageComp, _url)); } IEnumerator WWWGetData(Image _imageComp, string _url) { using (WWW www = new WWW(_url)) { yield return www; if (!string.IsNullOrEmpty(www.error)) Debug.Log(www.error); else { if (www.isDone) { int width = 1920; int height = 1080; Texture2D texture2d = new Texture2D(width, height); www.LoadImageIntoTexture(texture2d); Sprite tempSprite = Sprite.Create(texture2d, new Rect(0, 0, width, height), new Vector2(0.5f, 0.5f)); _imageComp.sprite = tempSprite; } } } } IEnumerator UnityWebRequestGetData(Image _imageComp, string _url) { using (UnityWebRequest uwr = UnityWebRequestTexture.GetTexture(_url)) { yield return uwr.SendWebRequest(); if (uwr.isHttpError || uwr.isNetworkError) Debug.Log(uwr.error); else { if (uwr.isDone) { int width = 1920; int height = 1080; Texture2D texture2d = new Texture2D(width, height); texture2d = DownloadHandlerTexture.GetContent(uwr); Sprite tempSprite = Sprite.Create(texture2d, new Rect(0, 0, width, height), new Vector2(0.5f, 0.5f)); _imageComp.sprite = tempSprite; Resources.UnloadUnusedAssets(); } } } } }