如何从特定URL下载图像到Unity3D?

1yjd4xko  于 2023-03-30  发布在  其他
关注(0)|答案(1)|浏览(104)

我正在从我的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;
    }
oxf4rvwz

oxf4rvwz1#

为了回答这个问题,我建议您除了解决问题之外,还可以使用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
}

相关问题