Unity 框架

ImprotPackageManager.cs 2.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEditor;
  5. using UnityEditor.PackageManager;
  6. using UnityEditor.PackageManager.Requests;
  7. using UnityEngine;
  8. namespace TFramework
  9. {
  10. public static class ImprotPackageManager
  11. {
  12. static ListRequest _listRequest;
  13. static List<string> _allPackageName = new List<string>();
  14. public static PackageConfig packageConfig;
  15. private static TAction onChekOver;
  16. public static void CheckImportPackage(TAction chekOverEvent = null)
  17. {
  18. packageConfig = AssetDatabase.LoadAssetAtPath<PackageConfig>(EditorConfigFile.PACKAGECONFIG);
  19. if (packageConfig == null|| packageConfig.packageNams.Count <= 0) return;
  20. _listRequest = Client.List();
  21. onChekOver = chekOverEvent;
  22. EditorApplication.update += Update;
  23. }
  24. private static void Update()
  25. {
  26. if(_listRequest.IsCompleted)
  27. {
  28. if(_listRequest.Status==StatusCode.Success)
  29. {
  30. _allPackageName.Clear();
  31. foreach (var package in _listRequest.Result)
  32. {
  33. _allPackageName.Add(package.name);
  34. }
  35. foreach (var item in packageConfig.packageNams)
  36. {
  37. if(_allPackageName.Find(p=>p==item)==null)
  38. {
  39. AddRequest addRequest = Client.Add(item);
  40. while(!addRequest.IsCompleted)
  41. {
  42. if (addRequest.Status == StatusCode.InProgress)
  43. Debug.Log(addRequest.Status);
  44. else
  45. {
  46. Debug.Log($"°²×°ÒÀÀµ²å¼þ°ü{item}³ö´í");
  47. break;
  48. }
  49. }
  50. if(addRequest.IsCompleted)
  51. {
  52. if (addRequest.Status >= StatusCode.Failure)
  53. Debug.Log(addRequest.Error.message);
  54. }
  55. }
  56. }
  57. }
  58. else if(_listRequest.Status >= StatusCode.Failure)
  59. Debug.Log(_listRequest.Error.message);
  60. onChekOver?.Invoke();
  61. EditorApplication.update -= Update;
  62. }
  63. }
  64. }
  65. }