From bc7c6c1f33656fe360b91382011935bb1f5ebd43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=95=E5=86=A0=E5=B3=B0?= Date: Fri, 3 Jan 2025 19:15:29 +0800 Subject: [PATCH] update package invoke builder MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增包裹构建器,运行时构建资源包裹 --- .../AssetBundleSimulateBuilder.cs | 4 +- .../Runtime/PakcageInvokeBuilder.meta | 8 ++++ .../PakcageInvokeBuildParam.cs | 38 +++++++++++++++ .../PakcageInvokeBuildParam.cs.meta} | 0 .../PakcageInvokeBuildResult.cs} | 2 +- .../PakcageInvokeBuildResult.cs.meta} | 0 .../PakcageInvokeBuilder.cs | 43 +++++++++++++++++ .../PakcageInvokeBuilder.cs.meta | 11 +++++ .../PlayMode/EditorSimulateBuildParam.cs | 38 --------------- .../PlayMode/EditorSimulateModeHelper.cs | 47 ++++--------------- .../PlayMode/EditorSimulateModeHelper.cs.meta | 2 +- 11 files changed, 114 insertions(+), 79 deletions(-) create mode 100644 Assets/YooAsset/Runtime/PakcageInvokeBuilder.meta create mode 100644 Assets/YooAsset/Runtime/PakcageInvokeBuilder/PakcageInvokeBuildParam.cs rename Assets/YooAsset/Runtime/{ResourcePackage/PlayMode/EditorSimulateBuildParam.cs.meta => PakcageInvokeBuilder/PakcageInvokeBuildParam.cs.meta} (100%) rename Assets/YooAsset/Runtime/{ResourcePackage/PlayMode/EditorSimulateBuildResult.cs => PakcageInvokeBuilder/PakcageInvokeBuildResult.cs} (64%) rename Assets/YooAsset/Runtime/{ResourcePackage/PlayMode/EditorSimulateBuildResult.cs.meta => PakcageInvokeBuilder/PakcageInvokeBuildResult.cs.meta} (100%) create mode 100644 Assets/YooAsset/Runtime/PakcageInvokeBuilder/PakcageInvokeBuilder.cs create mode 100644 Assets/YooAsset/Runtime/PakcageInvokeBuilder/PakcageInvokeBuilder.cs.meta delete mode 100644 Assets/YooAsset/Runtime/ResourcePackage/PlayMode/EditorSimulateBuildParam.cs diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleSimulateBuilder.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleSimulateBuilder.cs index bf18abf1..4508ed80 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleSimulateBuilder.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleSimulateBuilder.cs @@ -8,7 +8,7 @@ namespace YooAsset.Editor /// /// 模拟构建 /// - public static EditorSimulateBuildResult SimulateBuild(EditorSimulateBuildParam buildParam) + public static PackageInvokeBuildResult SimulateBuild(PackageInvokeBuildParam buildParam) { string packageName = buildParam.PackageName; string buildPipelineName = buildParam.BuildPipelineName; @@ -31,7 +31,7 @@ namespace YooAsset.Editor BuildResult buildResult = pipeline.Run(buildParameters, false); if (buildResult.Success) { - var reulst = new EditorSimulateBuildResult(); + var reulst = new PackageInvokeBuildResult(); reulst.PackageRootDirectory = buildResult.OutputPackageDirectory; return reulst; } diff --git a/Assets/YooAsset/Runtime/PakcageInvokeBuilder.meta b/Assets/YooAsset/Runtime/PakcageInvokeBuilder.meta new file mode 100644 index 00000000..75cf2eb1 --- /dev/null +++ b/Assets/YooAsset/Runtime/PakcageInvokeBuilder.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0c4881e782cbf0d4aa6f8309efd22865 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/YooAsset/Runtime/PakcageInvokeBuilder/PakcageInvokeBuildParam.cs b/Assets/YooAsset/Runtime/PakcageInvokeBuilder/PakcageInvokeBuildParam.cs new file mode 100644 index 00000000..7bed383e --- /dev/null +++ b/Assets/YooAsset/Runtime/PakcageInvokeBuilder/PakcageInvokeBuildParam.cs @@ -0,0 +1,38 @@ + +namespace YooAsset +{ + public class PackageInvokeBuildParam + { + /// + /// 包裹名称 + /// + public readonly string PackageName; + + /// + /// 构建管线名称 + /// + public string BuildPipelineName; + + /// + /// 构建类所属程序集名称 + /// + public string InvokeAssmeblyName; + + /// + /// 构建执行的类名全称 + /// 注意:类名必须包含命名空间! + /// + public string InvokeClassFullName; + + /// + /// 构建执行的方法名称 + /// 注意:执行方法必须满足 BindingFlags.Public | BindingFlags.Static + /// + public string InvokeMethodName; + + public PackageInvokeBuildParam(string packageName) + { + PackageName = packageName; + } + } +} \ No newline at end of file diff --git a/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/EditorSimulateBuildParam.cs.meta b/Assets/YooAsset/Runtime/PakcageInvokeBuilder/PakcageInvokeBuildParam.cs.meta similarity index 100% rename from Assets/YooAsset/Runtime/ResourcePackage/PlayMode/EditorSimulateBuildParam.cs.meta rename to Assets/YooAsset/Runtime/PakcageInvokeBuilder/PakcageInvokeBuildParam.cs.meta diff --git a/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/EditorSimulateBuildResult.cs b/Assets/YooAsset/Runtime/PakcageInvokeBuilder/PakcageInvokeBuildResult.cs similarity index 64% rename from Assets/YooAsset/Runtime/ResourcePackage/PlayMode/EditorSimulateBuildResult.cs rename to Assets/YooAsset/Runtime/PakcageInvokeBuilder/PakcageInvokeBuildResult.cs index fa2f0594..d3abf88a 100644 --- a/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/EditorSimulateBuildResult.cs +++ b/Assets/YooAsset/Runtime/PakcageInvokeBuilder/PakcageInvokeBuildResult.cs @@ -1,7 +1,7 @@  namespace YooAsset { - public class EditorSimulateBuildResult + public class PackageInvokeBuildResult { public string PackageRootDirectory; } diff --git a/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/EditorSimulateBuildResult.cs.meta b/Assets/YooAsset/Runtime/PakcageInvokeBuilder/PakcageInvokeBuildResult.cs.meta similarity index 100% rename from Assets/YooAsset/Runtime/ResourcePackage/PlayMode/EditorSimulateBuildResult.cs.meta rename to Assets/YooAsset/Runtime/PakcageInvokeBuilder/PakcageInvokeBuildResult.cs.meta diff --git a/Assets/YooAsset/Runtime/PakcageInvokeBuilder/PakcageInvokeBuilder.cs b/Assets/YooAsset/Runtime/PakcageInvokeBuilder/PakcageInvokeBuilder.cs new file mode 100644 index 00000000..9941fc61 --- /dev/null +++ b/Assets/YooAsset/Runtime/PakcageInvokeBuilder/PakcageInvokeBuilder.cs @@ -0,0 +1,43 @@ +#if UNITY_EDITOR +using System.Reflection; + +namespace YooAsset +{ + public static class PakcageInvokeBuilder + { + /// + /// 调用Editro类来执行构建资源包任务 + /// + public static PackageInvokeBuildResult InvokeBuilder(PackageInvokeBuildParam buildParam) + { + var assemblyName = buildParam.InvokeAssmeblyName; + var className = buildParam.InvokeClassFullName; + var methodName = buildParam.InvokeMethodName; + var classType = Assembly.Load(assemblyName).GetType(className); + return (PackageInvokeBuildResult)InvokePublicStaticMethod(classType, methodName, buildParam); + } + + private static object InvokePublicStaticMethod(System.Type type, string method, params object[] parameters) + { + var methodInfo = type.GetMethod(method, BindingFlags.Public | BindingFlags.Static); + if (methodInfo == null) + { + UnityEngine.Debug.LogError($"{type.FullName} not found method : {method}"); + return null; + } + return methodInfo.Invoke(null, parameters); + } + } +} +#else +namespace YooAsset +{ + public static class PakcageInvokeBuilder + { + public static PackageInvokeBuildResult InvokeBuilder(PackageInvokeBuildParam buildParam) + { + throw new System.Exception("Only support in unity editor platform !"); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/YooAsset/Runtime/PakcageInvokeBuilder/PakcageInvokeBuilder.cs.meta b/Assets/YooAsset/Runtime/PakcageInvokeBuilder/PakcageInvokeBuilder.cs.meta new file mode 100644 index 00000000..dd84db16 --- /dev/null +++ b/Assets/YooAsset/Runtime/PakcageInvokeBuilder/PakcageInvokeBuilder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5b09fe4b7aa2d2143bc538976541b039 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/EditorSimulateBuildParam.cs b/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/EditorSimulateBuildParam.cs deleted file mode 100644 index 5124d75b..00000000 --- a/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/EditorSimulateBuildParam.cs +++ /dev/null @@ -1,38 +0,0 @@ - -namespace YooAsset -{ - public class EditorSimulateBuildParam - { - /// - /// 包裹名称 - /// - public readonly string PackageName; - - /// - /// 模拟构建管线名称 - /// - public string BuildPipelineName = "EditorSimulateBuildPipeline"; - - /// - /// 模拟构建类所属程序集名称 - /// - public string InvokeAssmeblyName = "YooAsset.Editor"; - - /// - /// 模拟构建执行的类名全称 - /// 注意:类名必须包含命名空间! - /// - public string InvokeClassFullName = "YooAsset.Editor.AssetBundleSimulateBuilder"; - - /// - /// 模拟构建执行的方法名称 - /// 注意:执行方法必须满足 BindingFlags.Public | BindingFlags.Static - /// - public string InvokeMethodName = "SimulateBuild"; - - public EditorSimulateBuildParam(string packageName) - { - PackageName = packageName; - } - } -} \ No newline at end of file diff --git a/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/EditorSimulateModeHelper.cs b/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/EditorSimulateModeHelper.cs index 24234e56..90bef32d 100644 --- a/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/EditorSimulateModeHelper.cs +++ b/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/EditorSimulateModeHelper.cs @@ -1,43 +1,16 @@ -#if UNITY_EDITOR -using System.Reflection; - + namespace YooAsset { - public static class EditorSimulateModeHelper + public class EditorSimulateModeHelper { - /// - /// 编辑器下模拟构建清单 - /// - public static EditorSimulateBuildResult SimulateBuild(EditorSimulateBuildParam buildParam) + public static PackageInvokeBuildResult SimulateBuild(string packageName) { - var assemblyName = buildParam.InvokeAssmeblyName; - var className = buildParam.InvokeClassFullName; - var methodName = buildParam.InvokeMethodName; - var classType = Assembly.Load(assemblyName).GetType(className); - return (EditorSimulateBuildResult)InvokePublicStaticMethod(classType, methodName, buildParam); - } - - private static object InvokePublicStaticMethod(System.Type type, string method, params object[] parameters) - { - var methodInfo = type.GetMethod(method, BindingFlags.Public | BindingFlags.Static); - if (methodInfo == null) - { - UnityEngine.Debug.LogError($"{type.FullName} not found method : {method}"); - return null; - } - return methodInfo.Invoke(null, parameters); + var buildParam = new PackageInvokeBuildParam(packageName); + buildParam.BuildPipelineName = "EditorSimulateBuildPipeline"; + buildParam.InvokeAssmeblyName = "YooAsset.Editor"; + buildParam.InvokeClassFullName = "YooAsset.Editor.AssetBundleSimulateBuilder"; + buildParam.InvokeMethodName = "SimulateBuild"; + return PakcageInvokeBuilder.InvokeBuilder(buildParam); } } -} -#else -namespace YooAsset -{ - public static class EditorSimulateModeHelper - { - public static EditorSimulateBuildResult SimulateBuild(EditorSimulateBuildParam buildParam) - { - throw new System.Exception("Only support in unity editor !"); - } - } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/EditorSimulateModeHelper.cs.meta b/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/EditorSimulateModeHelper.cs.meta index dd84db16..4eaf3a63 100644 --- a/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/EditorSimulateModeHelper.cs.meta +++ b/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/EditorSimulateModeHelper.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 5b09fe4b7aa2d2143bc538976541b039 +guid: b0a23f529c8bf4943a371ee6b360e698 MonoImporter: externalObjects: {} serializedVersion: 2