PackageRequestAddAndRemove.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using System;
  2. using System.Collections.Generic;
  3. using UnityEditor;
  4. using UnityEditor.PackageManager;
  5. using UnityEditor.PackageManager.Requests;
  6. using UnityEngine;
  7. namespace ET.PackageManager.Editor
  8. {
  9. public class PackageRequestAddAndRemove
  10. {
  11. private string[] m_packagesToAdd;
  12. private AddAndRemoveRequest m_Request;
  13. private Action<List<UnityEditor.PackageManager.PackageInfo>> m_RequestCallback;
  14. public PackageRequestAddAndRemove(List<string> addList, Action<List<UnityEditor.PackageManager.PackageInfo>> callback)
  15. {
  16. if (addList == null || addList.Count <= 0)
  17. {
  18. Debug.LogError($"addList 数据错误 请检查");
  19. callback?.Invoke(null);
  20. return;
  21. }
  22. m_packagesToAdd = addList.ToArray();
  23. m_RequestCallback = callback;
  24. m_Request = Client.AddAndRemove(m_packagesToAdd);
  25. EditorApplication.update += UpdateRequest;
  26. }
  27. private void UpdateRequest()
  28. {
  29. if (!m_Request.IsCompleted) return;
  30. if (m_Request.Status == StatusCode.Success)
  31. {
  32. if (m_Request.Result != null)
  33. {
  34. var packageInfo = m_Request.Result;
  35. var infos = new List<UnityEditor.PackageManager.PackageInfo>();
  36. foreach (var info in packageInfo)
  37. {
  38. infos.Add(info);
  39. }
  40. m_RequestCallback?.Invoke(infos);
  41. }
  42. else
  43. {
  44. m_RequestCallback?.Invoke(null);
  45. }
  46. }
  47. else
  48. {
  49. Debug.LogError($"添加 请求失败:{m_packagesToAdd} 请刷新后重试!\n{m_Request.Error.message}");
  50. m_RequestCallback?.Invoke(null);
  51. }
  52. EditorApplication.update -= UpdateRequest;
  53. m_RequestCallback = null;
  54. }
  55. }
  56. }