PackageInfoAsset.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using System;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. namespace ET.PackageManager.Editor
  5. {
  6. [Serializable]
  7. public class PackageLastVersionData
  8. {
  9. [SerializeField]
  10. public string Name;
  11. [SerializeField]
  12. public string Version;
  13. }
  14. public class PackageInfoAsset : ScriptableObject
  15. {
  16. [SerializeField]
  17. public PackageLastVersionData[] AllLastPackageInfo; //所有包信息的最新版本号
  18. [SerializeField]
  19. public string[] BanPackageInfo; //黑名单 可不请求数据
  20. [SerializeField]
  21. public long LastUpdateTime; //上一次更新时间 防止重复更新 如果想强制更新可以手动设置改为0即可
  22. [SerializeField]
  23. public long UpdateInterval = 3600; //更新间隔 真不需要很高的频率 哪里有插件一直更新的
  24. [NonSerialized]
  25. public Dictionary<string, string> AllLastPackageInfoDic = new();
  26. [NonSerialized]
  27. public HashSet<string> BanPackageInfoHash = new();
  28. public void ReUpdateInfo()
  29. {
  30. AllLastPackageInfoDic.Clear();
  31. if (AllLastPackageInfo != null)
  32. {
  33. foreach (var info in AllLastPackageInfo)
  34. {
  35. if (info == null) continue;
  36. var key = info.Name;
  37. var value = info.Version;
  38. AllLastPackageInfoDic[key] = value;
  39. }
  40. }
  41. BanPackageInfoHash.Clear();
  42. if (BanPackageInfo != null)
  43. {
  44. foreach (var info in BanPackageInfo)
  45. {
  46. BanPackageInfoHash.Add(info);
  47. }
  48. }
  49. }
  50. public void ReSetAllLastPackageInfo()
  51. {
  52. AllLastPackageInfo = null;
  53. AllLastPackageInfoDic.Clear();
  54. }
  55. }
  56. }