UnityWebRequest:为什么下载不使用可用带宽?

时间:2019-07-18 12:35:07

标签: c# unity3d networking

我有一个应用程序(平台:Android),需要从服务器下载数据。为此,我使用了UnityWebRequest对象:

    string url = "http://myserver:8080/path/";
    string method = "GET";
    UnityWebRequest request = new UnityWebRequest(url, method);

    request.downloadHandler = new DownloadHandlerBuffer();
    request.SendWebRequest();


现在,我已经进行了一些性能测试(请参见图形:Download Throughput)。 “在Unity中”表示我的应用程序(在Android上)进行下载时的数据吞吐量。但是,“在浏览器中”表示直接在Windows笔记本电脑的浏览器中下载时的吞吐量。两个设备都连接到相同的WIFI。如您所见,后者的最大吞吐量要高得多。

有人知道为什么从Unity应用程序内部下载时吞吐量受到限制吗?

1 个答案:

答案 0 :(得分:0)

通过将数据下载为原始字节并将其作为资产束从内存中加载,我能够绕过以下问题:

public IEnumerator GetAssetBundleByRawBytes(string url, Action<AssetBundle> onSuccess)
{
    using (UnityWebRequest uwr = UnityWebRequest.Get(url))
    {
        yield return uwr.SendWebRequest();
        var bundle = AssetBundle.LoadFromMemory(uwr.downloadHandler.data);
        if (onSuccess != null)
            onSuccess(bundle);
    }
}


这样,所有可用带宽都将被使用。