update AssetBundleBuilder

ScriptableBuildParameters类新增BuiltinShadersBundleName和MonoScriptsBundleName字段
This commit is contained in:
何冠峰
2025-02-08 10:09:52 +08:00
parent e031498d5b
commit 6571faae4e
12 changed files with 133 additions and 119 deletions

View File

@@ -21,7 +21,7 @@ namespace YooAsset.Editor
// 1. 获取所有收集器收集的资源
bool useAssetDependencyDB = buildParameters.UseAssetDependencyDB;
var collectResult = AssetBundleCollectorSettingData.Setting.GetPackageAssets(simulateBuild, useAssetDependencyDB, packageName);
var collectResult = AssetBundleCollectorSettingData.Setting.BeginCollect(packageName, simulateBuild, useAssetDependencyDB);
List<CollectAssetInfo> allCollectAssets = collectResult.CollectAssets;
// 2. 剔除未被引用的依赖项资源

View File

@@ -27,7 +27,9 @@ namespace YooAsset.Editor
// 开始构建
IBundleBuildResults buildResults;
var buildParameters = scriptableBuildParameters.GetBundleBuildParameters();
var taskList = SBPBuildTasks.Create(buildMapContext.Command.ShadersBundleName, null);
string builtinShadersBundleName = scriptableBuildParameters.BuiltinShadersBundleName;
string monoScriptsBundleName = scriptableBuildParameters.MonoScriptsBundleName;
var taskList = SBPBuildTasks.Create(builtinShadersBundleName, monoScriptsBundleName);
ReturnCode exitCode = ContentPipeline.BuildAssetBundles(buildParameters, buildContent, out buildResults, taskList);
if (exitCode < 0)
{
@@ -35,13 +37,17 @@ namespace YooAsset.Editor
throw new Exception(message);
}
// 创建着色器信息
// 说明:解决因为着色器资源包导致验证失败。
// 说明:解决因为特殊资源包导致验证失败。
// 例如:当项目里没有着色器,如果有依赖内置着色器就会验证失败。
string shadersBundleName = buildMapContext.Command.ShadersBundleName;
if (buildResults.BundleInfos.ContainsKey(shadersBundleName))
if (string.IsNullOrEmpty(builtinShadersBundleName) == false)
{
buildMapContext.CreateShadersBundleInfo(shadersBundleName);
if (buildResults.BundleInfos.ContainsKey(builtinShadersBundleName))
buildMapContext.CreateEmptyBundleInfo(builtinShadersBundleName);
}
if (string.IsNullOrEmpty(monoScriptsBundleName) == false)
{
if (buildResults.BundleInfos.ContainsKey(monoScriptsBundleName))
buildMapContext.CreateEmptyBundleInfo(monoScriptsBundleName);
}
BuildLogger.Log("UnityEngine build success!");

View File

@@ -9,7 +9,7 @@ namespace UnityEditor.Build.Pipeline.Tasks
{
public static class SBPBuildTasks
{
public static IList<IBuildTask> Create(string builtInShaderBundleName, string unityMonoScriptsBundleName)
public static IList<IBuildTask> Create(string builtInShaderBundleName, string monoScriptsBundleName)
{
var buildTasks = new List<IBuildTask>();
@@ -30,8 +30,8 @@ namespace UnityEditor.Build.Pipeline.Tasks
buildTasks.Add(new StripUnusedSpriteSources());
if (string.IsNullOrEmpty(builtInShaderBundleName) == false)
buildTasks.Add(new CreateBuiltInShadersBundle(builtInShaderBundleName));
if (string.IsNullOrEmpty(unityMonoScriptsBundleName) == false)
buildTasks.Add(new CreateMonoScriptBundle(unityMonoScriptsBundleName));
if (string.IsNullOrEmpty(monoScriptsBundleName) == false)
buildTasks.Add(new CreateMonoScriptBundle(monoScriptsBundleName));
buildTasks.Add(new PostDependencyCallback());
// Packing

View File

@@ -41,6 +41,17 @@ namespace YooAsset.Editor
public int CacheServerPort;
/// <summary>
/// 内置着色器资源包名称
/// </summary>
public string BuiltinShadersBundleName;
/// <summary>
/// Mono脚本资源包名称
/// </summary>
public string MonoScriptsBundleName;
/// <summary>
/// 获取可编程构建管线的构建参数
/// </summary>