PakcageInvokeBuilder.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #if UNITY_EDITOR
  2. using System.Reflection;
  3. namespace YooAsset
  4. {
  5. public static class PakcageInvokeBuilder
  6. {
  7. /// <summary>
  8. /// 调用Editro类来执行构建资源包任务
  9. /// </summary>
  10. public static PackageInvokeBuildResult InvokeBuilder(PackageInvokeBuildParam buildParam)
  11. {
  12. var assemblyName = buildParam.InvokeAssmeblyName;
  13. var className = buildParam.InvokeClassFullName;
  14. var methodName = buildParam.InvokeMethodName;
  15. var classType = Assembly.Load(assemblyName).GetType(className);
  16. return (PackageInvokeBuildResult)InvokePublicStaticMethod(classType, methodName, buildParam);
  17. }
  18. private static object InvokePublicStaticMethod(System.Type type, string method, params object[] parameters)
  19. {
  20. var methodInfo = type.GetMethod(method, BindingFlags.Public | BindingFlags.Static);
  21. if (methodInfo == null)
  22. {
  23. UnityEngine.Debug.LogError($"{type.FullName} not found method : {method}");
  24. return null;
  25. }
  26. return methodInfo.Invoke(null, parameters);
  27. }
  28. }
  29. }
  30. #else
  31. namespace YooAsset
  32. {
  33. public static class PakcageInvokeBuilder
  34. {
  35. public static PackageInvokeBuildResult InvokeBuilder(PackageInvokeBuildParam buildParam)
  36. {
  37. throw new System.Exception("Only support in unity editor platform !");
  38. }
  39. }
  40. }
  41. #endif