在Unity3d中使用WWW继续下载文件

本文关键字:继续 下载 文件 WWW Unity3d | 更新日期: 2023-09-27 18:27:42

我有一个可以下载视频播放的主场景。如果正在进行下载,并且我播放了一个转到另一个场景的视频,则下载将停止。如何继续下载?

当我在主场景中击中一个物体时,我开始了这个协同程序:

WWW example = new WWW(strURL);
StartCoroutine(ShowProgress(example, video));
yield return example;
if (string.IsNullOrEmpty(example.error))
{
    if (System.IO.Directory.Exists(Application.persistentDataPath + "/Data") == false)
        System.IO.Directory.CreateDirectory(Application.persistentDataPath + "/Data");
    string write_path = Application.persistentDataPath + "/Data" + strURL.Substring(strURL.LastIndexOf("/"));
    Debug.Log(write_path);
    System.IO.File.WriteAllBytes(write_path, example.bytes);
}
else
{
    Debug.Log(example.error);
}

如果我想播放另一个视频,我必须转到另一个场景,当我回到主场景时,下载已经停止

在Unity3d中使用WWW继续下载文件

返回主屏幕后,实际上可以在后台继续下载。然而,单靠Unity是无法做到这一点的。需要某种Objective-C插件。

执行有限长度任务

如果你的应用程序正在执行任务,需要一点额外的时间来完成该任务,它可以调用UIApplication对象的beginBackgroundTaskWithName:expirationHandler:或beginBackEarthTaskWithExpirationHandleer:方法来请求一些额外的执行时间。

你没有无限的时间,但我读到操作系统给你大约10分钟的时间。根据您需要的文件大小(以及用户的网络速度),这可能是一个可行的解决方案。

另一种选择是使用某种类型的网络库,允许暂停和恢复下载。同样,这可能需要一个外部插件。