PackageRequestAdd.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using System;
  2. using UnityEditor;
  3. using UnityEditor.PackageManager;
  4. using UnityEditor.PackageManager.Requests;
  5. using UnityEngine;
  6. namespace ET.PackageManager.Editor
  7. {
  8. public class PackageRequestAdd
  9. {
  10. private string m_Name;
  11. private AddRequest m_Request;
  12. private Action<UnityEditor.PackageManager.PackageInfo> m_RequestCallback;
  13. public PackageRequestAdd(string name, Action<UnityEditor.PackageManager.PackageInfo> callback)
  14. {
  15. if (string.IsNullOrEmpty(name))
  16. {
  17. Debug.LogError($"null包 请传入名称");
  18. callback?.Invoke(null);
  19. return;
  20. }
  21. m_Name = name;
  22. m_RequestCallback = callback;
  23. m_Request = Client.Add(name);
  24. EditorApplication.update += UpdateRequest;
  25. }
  26. private void UpdateRequest()
  27. {
  28. if (!m_Request.IsCompleted) return;
  29. if (m_Request.Status == StatusCode.Success)
  30. {
  31. if (m_Request.Result != null)
  32. {
  33. var packageInfo = m_Request.Result;
  34. m_RequestCallback?.Invoke(packageInfo);
  35. }
  36. else
  37. {
  38. m_RequestCallback?.Invoke(null);
  39. }
  40. }
  41. else
  42. {
  43. Debug.LogError($"添加 请求失败:{m_Name} 请刷新后重试!\n{m_Request.Error.message}");
  44. m_RequestCallback?.Invoke(null);
  45. }
  46. EditorApplication.update -= UpdateRequest;
  47. m_RequestCallback = null;
  48. }
  49. }
  50. }