diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleSimulateBuilder.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleSimulateBuilder.cs
index 2a0c2014..bf18abf1 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleSimulateBuilder.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleSimulateBuilder.cs
@@ -11,28 +11,39 @@ namespace YooAsset.Editor
public static EditorSimulateBuildResult SimulateBuild(EditorSimulateBuildParam buildParam)
{
string packageName = buildParam.PackageName;
- var buildParameters = new EditorSimulateBuildParameters();
- buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot();
- buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot();
- buildParameters.BuildPipeline = EBuildPipeline.EditorSimulateBuildPipeline.ToString();
- buildParameters.BuildTarget = EditorUserBuildSettings.activeBuildTarget;
- buildParameters.PackageName = packageName;
- buildParameters.PackageVersion = "Simulate";
- buildParameters.FileNameStyle = EFileNameStyle.HashName;
- buildParameters.BuildinFileCopyOption = EBuildinFileCopyOption.None;
- buildParameters.BuildinFileCopyParams = string.Empty;
+ string buildPipelineName = buildParam.BuildPipelineName;
- var pipeline = new EditorSimulateBuildPipeline();
- BuildResult buildResult = pipeline.Run(buildParameters, false);
- if (buildResult.Success)
+ if (buildPipelineName == "EditorSimulateBuildPipeline")
{
- var reulst = new EditorSimulateBuildResult();
- reulst.PackageRootDirectory = buildResult.OutputPackageDirectory;
- return reulst;
+ var buildParameters = new EditorSimulateBuildParameters();
+ buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot();
+ buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot();
+ buildParameters.BuildPipeline = EBuildPipeline.EditorSimulateBuildPipeline.ToString();
+ buildParameters.BuildBundleType = (int)EBuildBundleType.VirtualBundle;
+ buildParameters.BuildTarget = EditorUserBuildSettings.activeBuildTarget;
+ buildParameters.PackageName = packageName;
+ buildParameters.PackageVersion = "Simulate";
+ buildParameters.FileNameStyle = EFileNameStyle.HashName;
+ buildParameters.BuildinFileCopyOption = EBuildinFileCopyOption.None;
+ buildParameters.BuildinFileCopyParams = string.Empty;
+
+ var pipeline = new EditorSimulateBuildPipeline();
+ BuildResult buildResult = pipeline.Run(buildParameters, false);
+ if (buildResult.Success)
+ {
+ var reulst = new EditorSimulateBuildResult();
+ reulst.PackageRootDirectory = buildResult.OutputPackageDirectory;
+ return reulst;
+ }
+ else
+ {
+ Debug.LogError(buildResult.ErrorInfo);
+ throw new System.Exception($"{nameof(EditorSimulateBuildPipeline)} build failed !");
+ }
}
else
{
- return null;
+ throw new System.NotImplementedException(buildPipelineName);
}
}
}
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildParameters.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildParameters.cs
index 5674d327..d4d35f24 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildParameters.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildParameters.cs
@@ -22,10 +22,15 @@ namespace YooAsset.Editor
public string BuildinFileRoot;
///
- /// 构建管线
+ /// 构建管线名称
///
public string BuildPipeline;
+ ///
+ /// 构建资源包类型
+ ///
+ public int BuildBundleType;
+
///
/// 构建的平台
///
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateManifest.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateManifest.cs
index 974f8d8f..ba1e35c9 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateManifest.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateManifest.cs
@@ -12,7 +12,7 @@ namespace YooAsset.Editor
public abstract class TaskCreateManifest
{
- private readonly Dictionary _cachedBundleID = new Dictionary(10000);
+ private readonly Dictionary _cachedBundleIndexIDs = new Dictionary(10000);
private readonly Dictionary> _cacheBundleTags = new Dictionary>(10000);
///
@@ -35,12 +35,16 @@ namespace YooAsset.Editor
manifest.LocationToLower = buildMapContext.Command.LocationToLower;
manifest.IncludeAssetGUID = buildMapContext.Command.IncludeAssetGUID;
manifest.OutputNameStyle = (int)buildParameters.FileNameStyle;
+ manifest.BuildBundleType = buildParameters.BuildBundleType;
manifest.BuildPipeline = buildParameters.BuildPipeline;
manifest.PackageName = buildParameters.PackageName;
manifest.PackageVersion = buildParameters.PackageVersion;
manifest.PackageNote = buildParameters.PackageNote;
- manifest.BundleList = GetAllPackageBundle(buildMapContext);
- manifest.AssetList = GetAllPackageAsset(buildMapContext);
+ manifest.AssetList = CreatePackageAssetList(buildMapContext);
+ manifest.BundleList = CreatePackageBundleList(buildMapContext);
+
+ // 处理资源清单的ID数据
+ ProcessPacakgeIDs(manifest);
// 处理资源包的依赖列表
if (processBundleDepends)
@@ -118,9 +122,9 @@ namespace YooAsset.Editor
protected abstract string[] GetBundleDepends(BuildContext context, string bundleName);
///
- /// 获取主资源对象列表
+ /// 创建资源对象列表
///
- private List GetAllPackageAsset(BuildMapContext buildMapContext)
+ private List CreatePackageAssetList(BuildMapContext buildMapContext)
{
List result = new List(1000);
foreach (var bundleInfo in buildMapContext.Collection)
@@ -133,7 +137,7 @@ namespace YooAsset.Editor
packageAsset.AssetPath = assetInfo.AssetInfo.AssetPath;
packageAsset.AssetGUID = buildMapContext.Command.IncludeAssetGUID ? assetInfo.AssetInfo.AssetGUID : string.Empty;
packageAsset.AssetTags = assetInfo.AssetTags.ToArray();
- packageAsset.BundleID = GetCachedBundleID(assetInfo.BundleName);
+ packageAsset.BundleNameInEditor = assetInfo.BundleName;
result.Add(packageAsset);
}
}
@@ -144,9 +148,9 @@ namespace YooAsset.Editor
}
///
- /// 获取资源包列表
+ /// 创建资源包列表
///
- private List GetAllPackageBundle(BuildMapContext buildMapContext)
+ private List CreatePackageBundleList(BuildMapContext buildMapContext)
{
List result = new List(1000);
foreach (var bundleInfo in buildMapContext.Collection)
@@ -154,18 +158,29 @@ namespace YooAsset.Editor
var packageBundle = bundleInfo.CreatePackageBundle();
result.Add(packageBundle);
}
-
+
// 按照BundleName排序
result.Sort((a, b) => a.BundleName.CompareTo(b.BundleName));
+ return result;
+ }
- // 注意:缓存资源包索引
- for (int index = 0; index < result.Count; index++)
+ ///
+ /// 处理资源清单的ID数据
+ ///
+ private void ProcessPacakgeIDs(PackageManifest manifest)
+ {
+ // 注意:优先缓存资源包索引
+ for (int index = 0; index < manifest.BundleList.Count; index++)
{
- string bundleName = result[index].BundleName;
- _cachedBundleID.Add(bundleName, index);
+ string bundleName = manifest.BundleList[index].BundleName;
+ _cachedBundleIndexIDs.Add(bundleName, index);
}
- return result;
+ foreach (var packageAsset in manifest.AssetList)
+ {
+ string bundleName = packageAsset.BundleNameInEditor;
+ packageAsset.BundleID = GetCachedBundleIndexID(bundleName);
+ }
}
///
@@ -176,12 +191,12 @@ namespace YooAsset.Editor
// 查询引擎生成的资源包依赖关系,然后记录到清单
foreach (var packageBundle in manifest.BundleList)
{
- int mainBundleID = GetCachedBundleID(packageBundle.BundleName);
+ int mainBundleID = GetCachedBundleIndexID(packageBundle.BundleName);
var depends = GetBundleDepends(context, packageBundle.BundleName);
List dependIDs = new List(depends.Length);
foreach (var dependBundleName in depends)
{
- int bundleID = GetCachedBundleID(dependBundleName);
+ int bundleID = GetCachedBundleIndexID(dependBundleName);
if (bundleID != mainBundleID)
dependIDs.Add(bundleID);
}
@@ -239,13 +254,13 @@ namespace YooAsset.Editor
}
///
- /// 获取资源包的索引ID
+ /// 获取缓存的资源包的索引ID
///
- private int GetCachedBundleID(string bundleName)
+ private int GetCachedBundleIndexID(string bundleName)
{
- if (_cachedBundleID.TryGetValue(bundleName, out int value) == false)
+ if (_cachedBundleIndexIDs.TryGetValue(bundleName, out int value) == false)
{
- throw new Exception($"Should never get here ! Not found bundle ID : {bundleName}");
+ throw new Exception($"Should never get here ! Not found bundle index ID : {bundleName}");
}
return value;
}
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuiltinBuildPipeline.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuiltinBuildPipeline.cs
index 177803f0..3341a922 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuiltinBuildPipeline.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuiltinBuildPipeline.cs
@@ -9,7 +9,7 @@ namespace YooAsset.Editor
public BuildResult Run(BuildParameters buildParameters, bool enableLog)
{
if (buildParameters is BuiltinBuildParameters)
- {
+ {
AssetBundleBuilder builder = new AssetBundleBuilder();
return builder.Run(buildParameters, GetDefaultBuildPipeline(), enableLog);
}
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuiltinBuildPipelineViewer.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuiltinBuildPipelineViewer.cs
index 5a62c754..c3912426 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuiltinBuildPipelineViewer.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuiltinBuildPipelineViewer.cs
@@ -33,6 +33,7 @@ namespace YooAsset.Editor
buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot();
buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot();
buildParameters.BuildPipeline = BuildPipeline.ToString();
+ buildParameters.BuildBundleType = (int)EBuildBundleType.AssetBundle;
buildParameters.BuildTarget = BuildTarget;
buildParameters.PackageName = PackageName;
buildParameters.PackageVersion = GetPackageVersion();
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/EditorSimulateBuildpipelineViewer.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/EditorSimulateBuildpipelineViewer.cs
index ab09812b..771da046 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/EditorSimulateBuildpipelineViewer.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/EditorSimulateBuildpipelineViewer.cs
@@ -50,6 +50,7 @@ namespace YooAsset.Editor
buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot();
buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot();
buildParameters.BuildPipeline = BuildPipeline.ToString();
+ buildParameters.BuildBundleType = (int)EBuildBundleType.VirtualBundle;
buildParameters.BuildTarget = BuildTarget;
buildParameters.PackageName = PackageName;
buildParameters.PackageVersion = GetPackageVersion();
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/RawfileBuildpipelineViewer.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/RawfileBuildpipelineViewer.cs
index 2d666cb7..1f493fd9 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/RawfileBuildpipelineViewer.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/RawfileBuildpipelineViewer.cs
@@ -34,6 +34,7 @@ namespace YooAsset.Editor
buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot();
buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot();
buildParameters.BuildPipeline = BuildPipeline.ToString();
+ buildParameters.BuildBundleType = (int)EBuildBundleType.RawBundle;
buildParameters.BuildTarget = BuildTarget;
buildParameters.PackageName = PackageName;
buildParameters.PackageVersion = GetPackageVersion();
diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/ScriptableBuildPipelineViewer.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/ScriptableBuildPipelineViewer.cs
index 9822ead7..7b11b3ca 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/ScriptableBuildPipelineViewer.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/ScriptableBuildPipelineViewer.cs
@@ -33,6 +33,7 @@ namespace YooAsset.Editor
buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot();
buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot();
buildParameters.BuildPipeline = BuildPipeline.ToString();
+ buildParameters.BuildBundleType = (int)EBuildBundleType.AssetBundle;
buildParameters.BuildTarget = BuildTarget;
buildParameters.PackageName = PackageName;
buildParameters.PackageVersion = GetPackageVersion();