我有一个应用程序(平台:Android),需要从服务器下载数据。为此,我使用了UnityWebRequest
对象:
string url = "http://myserver:8080/path/";
string method = "GET";
UnityWebRequest request = new UnityWebRequest(url, method);
request.downloadHandler = new DownloadHandlerBuffer();
request.SendWebRequest();
现在,我已经进行了一些性能测试(请参见图形:)。 “在Unity中”表示我的应用程序(在Android上)进行下载时的数据吞吐量。但是,“在浏览器中”表示直接在Windows笔记本电脑的浏览器中下载时的吞吐量。两个设备都连接到相同的WIFI。如您所见,后者的最大吞吐量要高得多。
有人知道为什么从Unity应用程序内部下载时吞吐量受到限制吗?
答案 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);
}
}
这样,所有可用带宽都将被使用。