我正在从我的 URL 链接导入图像。该链接在浏览器中运行良好,我可以看到图像。但是当我试图在 Unity 中导入它时,它完全是空白的。为什么会这样?
图片是jpg.
public RawImage img;
public string url;
public 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
img.texture = ((DownloadHandlerTexture) request.downloadHandler).texture;
}
回答这个问题,我建议大家除了解决问题之外,使用Asynchronous方法代替IEnumerator。因为它增加了代码的灵活性,并且可以在 Unity 的时间范围之外活动。因此,下面的代码是一个非常好用的图片下载器。
private async Task<Texture2D> DownloadImage(string MediaUrl) {
var request = UnityWebRequestTexture.GetTexture(MediaUrl);
request.SendWebRequest();
while (!request.isDone) await Task.Yield(); // wait 1 frame until request done
if (request.isNetworkError || request.isHttpError)
{
Debug.Log("Error: " + request.error); // Optinal: Call Errors
return null;
}
return DownloadHandlerTexture.GetContent(request);
}
现在要使用Async代码,只要在方法调用后面加上Await即可
private async void Start()
{
image.texture = await DownloadImage(url); // Automatically wait until images download from link
}