【发布时间】:2018-08-03 02:09:27
【问题描述】:
问题:
我想在完成下载文件之前获取assetBundle 的大小。我可以向用户显示剩余时间。在 Unity2018.2 中,我们可以得到 文件大小 或 下载的文件大小 让我乘以 progress 吗?或者还有其他方法可以计算剩余时间?
我知道 WWW.responseHeaders 包含信息,但似乎需要完成下载。
这是我目前的代码。
using (WWW downloadPackageWWW = new WWW(pkg.url))
{
while (!downloadPackageWWW.isDone)
{
print("progress: " + downloadPackageWWW.progress * 100 + "%");
yield return null;
}
if (downloadPackageWWW.error != null)
print("WWW download had an error:" + downloadPackageWWW.error);
if (downloadPackageWWW.responseHeaders.Count > 0)
print(pkg.fileName + ": " + downloadPackageWWW.responseHeaders["Content-Length"]+" byte");
byte[] bytes = downloadPackageWWW.bytes;
File.WriteAllBytes(pkgPath, bytes);
}
--
更新:
为了得到剩余时间,我提出了一个理想的计算方法,即Time.deltaTime,我们不需要知道总文件大小和下载速度。
float lastProgress = 0;
while (!www.isDone)
{
float deltaProgress = www.progress - lastProgress;
float progressPerSec = deltaProgress / Time.deltaTime;
float remaingTime = (1 - www.progress) / progressPerSec;
print("Remaining: " + remaingTime + " sec");
lastProgress = www.progress;
yield return null;
}
【问题讨论】: