QueryBuildinPackageVersionOperation.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. 
  2. namespace YooAsset
  3. {
  4. internal class QueryBuildinPackageVersionOperation : AsyncOperationBase
  5. {
  6. private enum ESteps
  7. {
  8. None,
  9. LoadBuildinPackageVersionFile,
  10. Done,
  11. }
  12. private readonly string _packageName;
  13. private UnityWebDataRequester _downloader;
  14. private ESteps _steps = ESteps.None;
  15. /// <summary>
  16. /// 包裹版本
  17. /// </summary>
  18. public string PackageVersion { private set; get; }
  19. public QueryBuildinPackageVersionOperation(string packageName)
  20. {
  21. _packageName = packageName;
  22. }
  23. internal override void Start()
  24. {
  25. _steps = ESteps.LoadBuildinPackageVersionFile;
  26. }
  27. internal override void Update()
  28. {
  29. if (_steps == ESteps.None || _steps == ESteps.Done)
  30. return;
  31. if (_steps == ESteps.LoadBuildinPackageVersionFile)
  32. {
  33. if (_downloader == null)
  34. {
  35. string filePath = PersistentTools.GetPersistent(_packageName).GetBuildinPackageVersionFilePath();
  36. string url = PersistentTools.ConvertToWWWPath(filePath);
  37. _downloader = new UnityWebDataRequester();
  38. _downloader.SendRequest(url);
  39. }
  40. if (_downloader.IsDone() == false)
  41. return;
  42. if (_downloader.HasError())
  43. {
  44. _steps = ESteps.Done;
  45. Status = EOperationStatus.Failed;
  46. Error = _downloader.GetError();
  47. }
  48. else
  49. {
  50. PackageVersion = _downloader.GetText();
  51. if (string.IsNullOrEmpty(PackageVersion))
  52. {
  53. _steps = ESteps.Done;
  54. Status = EOperationStatus.Failed;
  55. Error = $"Buildin package version file content is empty !";
  56. }
  57. else
  58. {
  59. _steps = ESteps.Done;
  60. Status = EOperationStatus.Succeed;
  61. }
  62. }
  63. _downloader.Dispose();
  64. }
  65. }
  66. }
  67. }