Beispiel #1
0
 /// <summary>
 /// 重置.
 /// </summary>
 public override void Reset()
 {
     ThreadMaxCount     = 3;
     NetRetries         = 3;
     NetTimeOut         = 30;
     DownloadWay        = TDownloadWay.Http;
     SkipDownload       = false;
     AssetBundlesBackUp = false;
     if (null != UploadServer)
     {
         UploadServer.Reset();
     }
     if (null != DownloadServer)
     {
         DownloadServer.Reset();
     }
     if (null != ProgressTips)
     {
         ProgressTips.Reset();
     }
     if (null != ServersDirs)
     {
         ServersDirs.Clear();
     }
 }
        /// <summary>
        /// 创建下载器(Url).
        /// </summary>
        /// <returns>The downloader by URL.</returns>
        /// <param name="iDownloadUrl">下载Url.</param>
        /// <param name="iOnStart">开始事件委托.</param>
        /// <param name="iOnSuccessed">成功事件委托.</param>
        /// <param name="iOnFailed">失败事件委托.</param>
        /// <param name="iType">下载对象类型.</param>
        public static DownloaderBase CreateDownloaderByUrl(string iUrl,
                                                           OnStart iOnStart, OnSuccessedByUrl iOnSuccessed, OnFailedByUrl iOnFailed,
                                                           TargetType iType)
        {
            DownloaderBase downloader  = null;
            TDownloadWay   downloadWay = ServersConf.GetInstance().DownloadWay;

            switch (downloadWay)
            {
            case TDownloadWay.WWW:
            {
                downloader = WWWDownloader.Create(
                    iUrl, iOnStart, iOnSuccessed, iOnFailed, iType);
            }
            break;

            case TDownloadWay.None:
            case TDownloadWay.Http:
            default:
            {
                downloader = HttpDownloader.Create(
                    iUrl, iOnStart, iOnSuccessed, iOnFailed, iType);
            }
            break;
            }
            return(downloader);
        }
        /// <summary>
        /// 创建下载器.
        /// </summary>
        /// <returns>下载器.</returns>
        /// <param name="iTarget">目标信息.</param>
        private DownloaderBase CreateDownloader(DownloadTargetInfo iTarget)
        {
            DownloaderBase downloader  = null;
            TDownloadWay   downloadWay = ServersConf.GetInstance().DownloadWay;

            switch (downloadWay)
            {
            case TDownloadWay.WWW:
            {
                downloader = WWWDownloader.Create(
                    iTarget, OnStartDownload, OnDownloadSuccessed, OnDownloadFail);
            }
            break;

            case TDownloadWay.None:
            case TDownloadWay.Http:
            default:
            {
                downloader = HttpDownloader.Create(
                    iTarget, OnStartDownload, OnDownloadSuccessed, OnDownloadFail);
            }
            break;
            }
            return(downloader);
        }
        /// <summary>
        /// 开始下载.
        /// </summary>
        private IEnumerator DownloadFiles()
        {
            TDownloadWay downloadWay = ServersConf.GetInstance().DownloadWay;

            while (this.DownloadQueue.Count > 0)
            {
                // 下载器个数控制
                if (this.DownloaderCount >= this.DownloaderMaxCount)
                {
                    yield return(new WaitForSeconds(1.0f));
                }

                // 下载出错则停止
                if (TRunState.OK != this._State)
                {
                    this.Error("DownloadFiles()::Download Failed!!! State:{0}", this._State.ToString());
                    // 取消现有下载线程
                    isCanceled = true;
                    yield break;
                }

                DownloaderBase downloader = this.DownloadQueue.Dequeue();
                if (downloader == null)
                {
                    continue;
                }
                // Bundle文件
                if (TDownloadWay.WWW == downloadWay)
                {
                    yield return(downloader.AsynDownLoadTarget());
                }
                else
                {
                    downloader.ThreadDownLoadTarget();
                }
                yield return(new WaitForEndOfFrame());

                // 下载出错则停止
                if (TRunState.OK != this._State)
                {
                    this.Error("DownloadFiles()::Download Failed!!! State:{0}", this._State.ToString());
                    // 取消现有下载线程
                    isCanceled = true;
                    yield break;
                }
            }
        }