123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using ThirdParty.DownloadSystem;
- using UnityEngine;
- using UnityEngine.Networking;
- public class FileDownloadSystem
- {
- public static FileDownloadSystem Instance
- {
- get
- {
- if (_instance == null)
- {
- _instance = new FileDownloadSystem();
- }
- return _instance;
- }
- }
- private static FileDownloadSystem _instance;
- public List<HttpDownloadBasic> HttpDownloadBasics = new List<HttpDownloadBasic>();
- private int _maxDownloadCount = 18;
- private List<UnityWebHttpDownload> _awitDow = new List<UnityWebHttpDownload>();
- private List<DownLoadHanderGroup> _handerGroups = new List<DownLoadHanderGroup>();
- public List<ICheckUpdate> CheckUpdateList = new List<ICheckUpdate>();
- public DownloadHander DownloadFile(DownloadFileData downloadFileData)
- {
- UnityWebHttpDownload httpDownload = new UnityWebHttpDownload();
- DownloadHander downloadHander = new DownloadHander();
- httpDownload.Init(downloadFileData, downloadHander);
- downloadHander.HttpDownloadBasic = httpDownload;
- if (HttpDownloadBasics.Count < _maxDownloadCount)
- {
- StartDownload(httpDownload);
- }
- else
- {
- _awitDow.Add(httpDownload);
- }
- return downloadHander;
- }
- public void AddHanderGroup(DownLoadHanderGroup downLoadHanderGroup)
- {
- _handerGroups.Add(downLoadHanderGroup);
- }
- public void RemoveHanderGroup(DownLoadHanderGroup downLoadHanderGroup)
- {
- _handerGroups.Remove(downLoadHanderGroup);
- }
- private void StartDownload(UnityWebHttpDownload httpDownload)
- {
- httpDownload.StartDown();
- HttpDownloadBasics.Add(httpDownload);
- }
- public void Update()
- {
- try
- {
- for (int i = 0; i < HttpDownloadBasics.Count; i++)
- {
- HttpDownloadBasics[i].Update();
- if (HttpDownloadBasics[i].AllFinish())
- {
- // if (HttpDownloadBasics[i].Result() != UnityWebRequest.Result.Success)
- // {
- // Debug.Log("多次下载失败");
- // HttpDownloadBasics[i].maxCount = 2;
- // _awitDow.Add(HttpDownloadBasics[i] as UnityWebHttpDownload);
- // }
- HttpDownloadBasics.RemoveAt(i);
- i--;
- }
- }
- if (_awitDow.Count > 0 && HttpDownloadBasics.Count < _maxDownloadCount)
- {
- for (int i = 0; i < _awitDow.Count; i++)
- {
- if (HttpDownloadBasics.Count < _maxDownloadCount)
- {
- UnityWebHttpDownload download = _awitDow[i];
- StartDownload(download);
- _awitDow.RemoveAt(i);
- i--;
- }
- else
- {
- break;
- }
- }
- }
- for (int i = 0; i < _handerGroups.Count; i++)
- {
- _handerGroups[i].Update();
- }
- for (int i = 0; i < CheckUpdateList.Count; i++)
- {
- CheckUpdateList[i].CheckUpdate();
- }
- }
- catch (Exception e)
- {
- Debug.LogError(e);
- }
- }
- public void AddCheckUpdate(ICheckUpdate checkUpdate)
- {
- lock (CheckUpdateList)
- {
- CheckUpdateList.Add(checkUpdate);
- }
- }
- public void RemvoeCheckUpdate(ICheckUpdate checkUpdate)
- {
- lock (CheckUpdateList)
- {
- CheckUpdateList.Remove(checkUpdate);
- }
- }
- }
|