您的位置:首页 > 其它

使用WebClient下载AssetBundles时遇到问题

2016-12-24 11:23 302 查看
原文地址:https://support.unity3d.com/hc/en-us/articles/207037346-Experiencing-problems-downloading-AssetBundles-using-WebClient

症状

使用WebClient的下载速度相当慢。

原因

WebClient使用了WebRequest。当下载AssetBundles时速度慢,这是因为AssetBundles就是设计为用WWW类来下载的。

解决方案

这是一个变通方案:设置WebClient的代理为null(
webClient.Proxy = null
)。因为请求被配置成自动检测代理。如果这样设置,它就会避免初始化延迟。同时,还有3个提高WebClient速度的建议:

增加 DefaultConnectionLimit

如果确实需要代理(比如不使用
wbClient.Proxy = null
),并且代理信息已知,只需要通过脚本手动设置代理设置(比如
string proxyUrl = "proxy.myproxy.com"; int proxyPort = 8080;


停用 Expect100Continue

另一种可行的解决方案是使用 WWW 类。在Unity5.2中,如果你使用 WWW.LoadFromCacheOrDownload 方法,那么该文件将会随着下载,以不压缩的形式分成小块存储到磁盘上。下载时,它不需要全部加载进内存。在Unity5.3中,新增了一个选项用于将文件以新支持的LZ4压缩方式存储到缓存中。

更多信息

更多信息参见以下链接:

http://stackoverflow.com/questions/754333/why-is-this-webrequest-code-slow

http://www.scriptscoop.net/t/1f2d4a8a2004/c-webrequest-slow-even-with-null-proxy.html

http://en.code-bude.net/2013/01/21/3-things-you-should-know-to-speed-up-httpwebrequest/

https://holyhoehle.wordpress.com/2010/01/12/webrequest-slow/

http://stackoverflow.com/questions/2519655/httpwebrequest-is-extremely-slow

本文适用于Unity 5.x版本。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息