mirror of https://github.com/tuyoogame/YooAsset
parent
2a8761c29e
commit
bc7c6c1f33
|
@ -8,7 +8,7 @@ namespace YooAsset.Editor
|
|||
/// <summary>
|
||||
/// 模拟构建
|
||||
/// </summary>
|
||||
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;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 0c4881e782cbf0d4aa6f8309efd22865
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,38 @@
|
|||
|
||||
namespace YooAsset
|
||||
{
|
||||
public class PackageInvokeBuildParam
|
||||
{
|
||||
/// <summary>
|
||||
/// 包裹名称
|
||||
/// </summary>
|
||||
public readonly string PackageName;
|
||||
|
||||
/// <summary>
|
||||
/// 构建管线名称
|
||||
/// </summary>
|
||||
public string BuildPipelineName;
|
||||
|
||||
/// <summary>
|
||||
/// 构建类所属程序集名称
|
||||
/// </summary>
|
||||
public string InvokeAssmeblyName;
|
||||
|
||||
/// <summary>
|
||||
/// 构建执行的类名全称
|
||||
/// 注意:类名必须包含命名空间!
|
||||
/// </summary>
|
||||
public string InvokeClassFullName;
|
||||
|
||||
/// <summary>
|
||||
/// 构建执行的方法名称
|
||||
/// 注意:执行方法必须满足 BindingFlags.Public | BindingFlags.Static
|
||||
/// </summary>
|
||||
public string InvokeMethodName;
|
||||
|
||||
public PackageInvokeBuildParam(string packageName)
|
||||
{
|
||||
PackageName = packageName;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
|
||||
namespace YooAsset
|
||||
{
|
||||
public class EditorSimulateBuildResult
|
||||
public class PackageInvokeBuildResult
|
||||
{
|
||||
public string PackageRootDirectory;
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
#if UNITY_EDITOR
|
||||
using System.Reflection;
|
||||
|
||||
namespace YooAsset
|
||||
{
|
||||
public static class PakcageInvokeBuilder
|
||||
{
|
||||
/// <summary>
|
||||
/// 调用Editro类来执行构建资源包任务
|
||||
/// </summary>
|
||||
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
|
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 5b09fe4b7aa2d2143bc538976541b039
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1,38 +0,0 @@
|
|||
|
||||
namespace YooAsset
|
||||
{
|
||||
public class EditorSimulateBuildParam
|
||||
{
|
||||
/// <summary>
|
||||
/// 包裹名称
|
||||
/// </summary>
|
||||
public readonly string PackageName;
|
||||
|
||||
/// <summary>
|
||||
/// 模拟构建管线名称
|
||||
/// </summary>
|
||||
public string BuildPipelineName = "EditorSimulateBuildPipeline";
|
||||
|
||||
/// <summary>
|
||||
/// 模拟构建类所属程序集名称
|
||||
/// </summary>
|
||||
public string InvokeAssmeblyName = "YooAsset.Editor";
|
||||
|
||||
/// <summary>
|
||||
/// 模拟构建执行的类名全称
|
||||
/// 注意:类名必须包含命名空间!
|
||||
/// </summary>
|
||||
public string InvokeClassFullName = "YooAsset.Editor.AssetBundleSimulateBuilder";
|
||||
|
||||
/// <summary>
|
||||
/// 模拟构建执行的方法名称
|
||||
/// 注意:执行方法必须满足 BindingFlags.Public | BindingFlags.Static
|
||||
/// </summary>
|
||||
public string InvokeMethodName = "SimulateBuild";
|
||||
|
||||
public EditorSimulateBuildParam(string packageName)
|
||||
{
|
||||
PackageName = packageName;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,43 +1,16 @@
|
|||
#if UNITY_EDITOR
|
||||
using System.Reflection;
|
||||
|
||||
|
||||
namespace YooAsset
|
||||
{
|
||||
public static class EditorSimulateModeHelper
|
||||
public class EditorSimulateModeHelper
|
||||
{
|
||||
/// <summary>
|
||||
/// 编辑器下模拟构建清单
|
||||
/// </summary>
|
||||
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
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 5b09fe4b7aa2d2143bc538976541b039
|
||||
guid: b0a23f529c8bf4943a371ee6b360e698
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
|
|
Loading…
Reference in New Issue