【发布时间】:2017-04-27 11:16:34
【问题描述】:
我正在尝试从 Firebase 存储下载我的游戏的资源文件,并显示下载进度。但是我遇到了 GetFileAsync 函数的奇怪行为。文件下载过程中不定期调用StorageProgress的Report函数,如参考中所述。在将文件放入内存(下载)后,在保存到磁盘期间调用报告函数。我做错了什么?
string resourcesURL = "URL_TO_RESOURCE_FILE"; // https://firebasestorage.googleapis.com/......
public void UpdateProgress(float val)
{
labelProgress.text = Mathf.RoundToInt(val * 100f) + "%";
circleProgress.fillAmount = val;
}
void OnDownloadClick()
{
SetDownloadingView();
string saveToPath = GetParentFolder() + "/resources.bin";
StorageReference fileRef = FirebaseBackend.Instance.GetStorage().GetReferenceFromUrl(resourcesURL);
StorageProgress<Firebase.Storage.DownloadState> progressHandler = new StorageProgress<Firebase.Storage.DownloadState>(state =>
{
Debug.Log(String.Format ("Progress: {0} of {1} bytes transferred.", state.BytesTransferred, state.TotalByteCount));
UpdateProgress(state.BytesTransferred / state.TotalByteCount);
});
Task dwnTask = fileRef.GetFileAsync
(
saveToPath,
progressHandler,
CancellationToken.None
);
dwnTask.ContinueWith(resultTask =>
{
if (!resultTask.IsFaulted && !resultTask.IsCanceled)
{
ResetView();
Debug.Log("Download finished!");
}
else
{
ResetView();
Debug.Log("Download fail!");
}
});
}
Unity 版本为 5.5.0f3 Firebase Unity SDK 版本为 3.0.1
【问题讨论】:
标签: c# firebase unity3d firebase-storage