DownLoadHanderGroup.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. using System.Collections.Generic;
  2. using UnityEngine;
  3. namespace ThirdParty.DownloadSystem
  4. {
  5. public class DownLoadHanderGroup
  6. {
  7. public ulong size;
  8. public long finishCount;
  9. public System.Action OnCallBack;
  10. public List<DownloadHander> DownloadHanders = new List<DownloadHander>();
  11. private bool _isUpdate;
  12. public float speed;
  13. private float _lasetTime;
  14. private float _lasetSize;
  15. public void AddHander(DownloadHander downloadHander)
  16. {
  17. DownloadHanders.Add(downloadHander);
  18. }
  19. public void StartUpdate()
  20. {
  21. FileDownloadSystem.Instance.AddHanderGroup(this);
  22. _isUpdate = true;
  23. }
  24. public void Update()
  25. {
  26. if (!_isUpdate)
  27. {
  28. return;
  29. }
  30. finishCount = 0;
  31. bool isOk = true;
  32. size = 0;
  33. for (int i = 0; i < DownloadHanders.Count; i++)
  34. {
  35. if (!DownloadHanders[i].isFinish)
  36. {
  37. isOk = false;
  38. }
  39. else
  40. {
  41. finishCount++;
  42. }
  43. if (DownloadHanders[i].UnityWebRequestAsyncOperation != null)
  44. {
  45. size += DownloadHanders[i].UnityWebRequestAsyncOperation.webRequest.downloadedBytes;
  46. }
  47. }
  48. float t= Time.time - _lasetTime;
  49. if (t>1)
  50. {
  51. _lasetTime = Time.time;
  52. speed= (size - _lasetSize) / (t);
  53. _lasetSize = size;
  54. }
  55. if (isOk)
  56. {
  57. _isUpdate = false;
  58. OnCallBack?.Invoke();
  59. FileDownloadSystem.Instance.RemoveHanderGroup(this);
  60. }
  61. }
  62. }
  63. }