场景中导入图片为空

问题描述 投票:0回答:1

我正在从我的 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;
    }
c# unity3d
1个回答
0
投票

回答这个问题,我建议大家除了解决问题之外,使用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
}
© www.soinside.com 2019 - 2024. All rights reserved.