Compare commits

...

5 Commits

Author SHA1 Message Date
何冠峰 f72814a51b fix #462 2025-02-08 11:45:06 +08:00
何冠峰 94ee2ba5c1 update test sample 2025-02-08 10:10:39 +08:00
何冠峰 fd9533d63f update extension sample 2025-02-08 10:10:18 +08:00
何冠峰 6571faae4e update AssetBundleBuilder
ScriptableBuildParameters类新增BuiltinShadersBundleName和MonoScriptsBundleName字段
2025-02-08 10:09:52 +08:00
何冠峰 e031498d5b update UIElements 2025-02-07 18:47:05 +08:00
17 changed files with 193 additions and 141 deletions

View File

@ -17,7 +17,7 @@ namespace YooAsset.Editor
/// 未被依赖的资源列表 /// 未被依赖的资源列表
/// </summary> /// </summary>
public readonly List<ReportIndependAsset> IndependAssets = new List<ReportIndependAsset>(1000); public readonly List<ReportIndependAsset> IndependAssets = new List<ReportIndependAsset>(1000);
/// <summary> /// <summary>
/// 参与构建的资源总数 /// 参与构建的资源总数
/// 说明:包括主动收集的资源以及其依赖的所有资源 /// 说明:包括主动收集的资源以及其依赖的所有资源
@ -96,14 +96,14 @@ namespace YooAsset.Editor
} }
/// <summary> /// <summary>
/// 创建着色器信息类 /// 创建空的资源包
/// </summary> /// </summary>
public void CreateShadersBundleInfo(string shadersBundleName) public void CreateEmptyBundleInfo(string bundleName)
{ {
if (IsContainsBundle(shadersBundleName) == false) if (IsContainsBundle(bundleName) == false)
{ {
var shaderBundleInfo = new BuildBundleInfo(shadersBundleName); var bundleInfo = new BuildBundleInfo(bundleName);
_bundleInfoDic.Add(shadersBundleName, shaderBundleInfo); _bundleInfoDic.Add(bundleName, bundleInfo);
} }
} }
} }

View File

@ -58,7 +58,7 @@ namespace YooAsset.Editor
/// <summary> /// <summary>
/// 使用资源依赖缓存数据库 /// 使用资源依赖缓存数据库
/// 说明:开启此项可以极大提高资源收集速度 /// 说明:开启此项可以极大提高资源收集速度
/// </summary> /// </summary>
public bool UseAssetDependencyDB = false; public bool UseAssetDependencyDB = false;
@ -67,6 +67,12 @@ namespace YooAsset.Editor
/// </summary> /// </summary>
public bool EnableSharePackRule = false; public bool EnableSharePackRule = false;
/// <summary>
/// 对单独引用的共享资源进行独立打包
/// 说明:关闭该选项单独引用的共享资源将会构建到引用它的资源包内!
/// </summary>
public bool SingleReferencedPackAlone = false;
/// <summary> /// <summary>
/// 验证构建结果 /// 验证构建结果
/// </summary> /// </summary>

View File

@ -21,7 +21,7 @@ namespace YooAsset.Editor
// 1. 获取所有收集器收集的资源 // 1. 获取所有收集器收集的资源
bool useAssetDependencyDB = buildParameters.UseAssetDependencyDB; 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; List<CollectAssetInfo> allCollectAssets = collectResult.CollectAssets;
// 2. 剔除未被引用的依赖项资源 // 2. 剔除未被引用的依赖项资源
@ -109,15 +109,10 @@ namespace YooAsset.Editor
{ {
if (buildAssetInfo.HasBundleName() == false) if (buildAssetInfo.HasBundleName() == false)
{ {
PackRuleResult packRuleResult = GetShareBundleName(buildAssetInfo); ProcessingPackShareBundle(buildParameters, collectResult.Command, buildAssetInfo);
if (packRuleResult.IsValid())
{
string shareBundleName = packRuleResult.GetShareBundleName(collectResult.Command.PackageName, collectResult.Command.UniqueBundleName);
buildAssetInfo.SetBundleName(shareBundleName);
}
} }
} }
PostProcessPackShareBundle(); PostProcessPackShareBundle(buildParameters, collectResult.Command, allBuildAssetInfos);
} }
// 8. 记录关键信息 // 8. 记录关键信息
@ -209,21 +204,38 @@ namespace YooAsset.Editor
} }
/// <summary> /// <summary>
/// 共享资源打包后置处理 /// 共享资源打包机制
/// </summary> /// </summary>
protected virtual void PostProcessPackShareBundle() protected virtual void ProcessingPackShareBundle(BuildParameters buildParameters, CollectCommand command, BuildAssetInfo buildAssetInfo)
{ {
} PackRuleResult packRuleResult = GetShareBundleName(buildAssetInfo);
if (packRuleResult.IsValid() == false)
return;
/// <summary> // 处理单个引用的共享资源
/// 获取共享资源包名称 if (buildAssetInfo.GetReferenceBundleCount() <= 1)
/// </summary> {
protected virtual PackRuleResult GetShareBundleName(BuildAssetInfo buildAssetInfo) if (buildParameters.SingleReferencedPackAlone == false)
return;
}
// 设置共享资源包名
string shareBundleName = packRuleResult.GetShareBundleName(command.PackageName, command.UniqueBundleName);
buildAssetInfo.SetBundleName(shareBundleName);
}
private PackRuleResult GetShareBundleName(BuildAssetInfo buildAssetInfo)
{ {
string bundleName = Path.GetDirectoryName(buildAssetInfo.AssetInfo.AssetPath); string bundleName = Path.GetDirectoryName(buildAssetInfo.AssetInfo.AssetPath);
PackRuleResult result = new PackRuleResult(bundleName, DefaultPackRule.AssetBundleFileExtension); PackRuleResult result = new PackRuleResult(bundleName, DefaultPackRule.AssetBundleFileExtension);
return result; return result;
} }
/// <summary>
/// 共享资源打包后置处理
/// </summary>
protected virtual void PostProcessPackShareBundle(BuildParameters buildParameters, CollectCommand command, Dictionary<string, BuildAssetInfo> allBuildAssetInfos)
{
}
#endregion #endregion
} }
} }

View File

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

View File

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

View File

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

View File

@ -28,6 +28,7 @@ namespace YooAsset.Editor
var compressOption = AssetBundleBuilderSetting.GetPackageCompressOption(PackageName, BuildPipeline); var compressOption = AssetBundleBuilderSetting.GetPackageCompressOption(PackageName, BuildPipeline);
var clearBuildCache = AssetBundleBuilderSetting.GetPackageClearBuildCache(PackageName, BuildPipeline); var clearBuildCache = AssetBundleBuilderSetting.GetPackageClearBuildCache(PackageName, BuildPipeline);
var useAssetDependencyDB = AssetBundleBuilderSetting.GetPackageUseAssetDependencyDB(PackageName, BuildPipeline); var useAssetDependencyDB = AssetBundleBuilderSetting.GetPackageUseAssetDependencyDB(PackageName, BuildPipeline);
var builtinShaderBundleName = GetBuiltinShaderBundleName();
ScriptableBuildParameters buildParameters = new ScriptableBuildParameters(); ScriptableBuildParameters buildParameters = new ScriptableBuildParameters();
buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot(); buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot();
@ -45,6 +46,7 @@ namespace YooAsset.Editor
buildParameters.CompressOption = compressOption; buildParameters.CompressOption = compressOption;
buildParameters.ClearBuildCacheFiles = clearBuildCache; buildParameters.ClearBuildCacheFiles = clearBuildCache;
buildParameters.UseAssetDependencyDB = useAssetDependencyDB; buildParameters.UseAssetDependencyDB = useAssetDependencyDB;
buildParameters.BuiltinShadersBundleName = builtinShaderBundleName;
buildParameters.EncryptionServices = CreateEncryptionInstance(); buildParameters.EncryptionServices = CreateEncryptionInstance();
ScriptableBuildPipeline pipeline = new ScriptableBuildPipeline(); ScriptableBuildPipeline pipeline = new ScriptableBuildPipeline();
@ -52,6 +54,17 @@ namespace YooAsset.Editor
if (buildResult.Success) if (buildResult.Success)
EditorUtility.RevealInFinder(buildResult.OutputPackageDirectory); EditorUtility.RevealInFinder(buildResult.OutputPackageDirectory);
} }
/// <summary>
/// 内置着色器资源包名称
/// 注意:和自动收集的着色器资源包名保持一致!
/// </summary>
private string GetBuiltinShaderBundleName()
{
var uniqueBundleName = AssetBundleCollectorSettingData.Setting.UniqueBundleName;
var packRuleResult = DefaultPackRule.CreateShadersPackRuleResult();
return packRuleResult.GetBundleName(PackageName, uniqueBundleName);
}
} }
} }
#endif #endif

View File

@ -98,9 +98,9 @@ namespace YooAsset.Editor
} }
/// <summary> /// <summary>
/// 获取打包收集的资源文件 /// 开始收集工作
/// </summary> /// </summary>
public List<CollectAssetInfo> GetAllCollectAssets(CollectCommand command) public CollectResult BeginCollect(CollectCommand command)
{ {
Dictionary<string, CollectAssetInfo> result = new Dictionary<string, CollectAssetInfo>(10000); Dictionary<string, CollectAssetInfo> result = new Dictionary<string, CollectAssetInfo>(10000);
@ -138,8 +138,10 @@ namespace YooAsset.Editor
} }
} }
// 返回列表 // 返回结果
return result.Values.ToList(); var collectAssets = result.Values.ToList();
var collectResult = new CollectResult(command, collectAssets);
return collectResult;
} }
/// <summary> /// <summary>

View File

@ -87,9 +87,9 @@ namespace YooAsset.Editor
} }
/// <summary> /// <summary>
/// 获取包裹收集的资源文件 /// 收集指定包裹的资源文件
/// </summary> /// </summary>
public CollectResult GetPackageAssets(bool simulateBuild, bool useAssetDependencyDB, string packageName) public CollectResult BeginCollect(string packageName, bool simulateBuild, bool useAssetDependencyDB)
{ {
if (string.IsNullOrEmpty(packageName)) if (string.IsNullOrEmpty(packageName))
throw new Exception("Build package name is null or empty !"); throw new Exception("Build package name is null or empty !");
@ -100,16 +100,17 @@ namespace YooAsset.Editor
// 创建资源收集命令 // 创建资源收集命令
IIgnoreRule ignoreRule = AssetBundleCollectorSettingData.GetIgnoreRuleInstance(package.IgnoreRuleName); IIgnoreRule ignoreRule = AssetBundleCollectorSettingData.GetIgnoreRuleInstance(package.IgnoreRuleName);
CollectCommand command = new CollectCommand(simulateBuild, useAssetDependencyDB, packageName, var command = new CollectCommand(packageName, ignoreRule);
package.EnableAddressable, command.SimulateBuild = simulateBuild;
package.LocationToLower, command.UniqueBundleName = UniqueBundleName;
package.IncludeAssetGUID, command.UseAssetDependencyDB = useAssetDependencyDB;
package.AutoCollectShaders, command.EnableAddressable = package.EnableAddressable;
UniqueBundleName, ignoreRule); command.LocationToLower = package.LocationToLower;
command.IncludeAssetGUID = package.IncludeAssetGUID;
command.AutoCollectShaders = package.AutoCollectShaders;
// 获取收集的资源集合 // 开始收集工作
CollectResult collectResult = new CollectResult(command); CollectResult collectResult = package.BeginCollect(command);
collectResult.SetCollectAssets(package.GetAllCollectAssets(command));
return collectResult; return collectResult;
} }

View File

@ -164,25 +164,25 @@ namespace YooAsset.Editor
RefreshWindow(); RefreshWindow();
} }
}); });
// 忽略规则
_ignoreRulePopupField = new PopupField<RuleDisplayName>(_ignoreRuleList, 0);
_ignoreRulePopupField.label = "File Ignore Rule";
_ignoreRulePopupField.name = "IgnoreRulePopupField";
_ignoreRulePopupField.style.unityTextAlign = TextAnchor.MiddleLeft;
_ignoreRulePopupField.style.width = 300;
_ignoreRulePopupField.formatListItemCallback = FormatListItemCallback;
_ignoreRulePopupField.formatSelectedValueCallback = FormatSelectedValueCallback;
_ignoreRulePopupField.RegisterValueChangedCallback(evt =>
{ {
_ignoreRulePopupField = new PopupField<RuleDisplayName>(_ignoreRuleList, 0); var selectPackage = _packageListView.selectedItem as AssetBundleCollectorPackage;
_ignoreRulePopupField.label = "File Ignore Rule"; if (selectPackage != null)
_ignoreRulePopupField.name = "IgnoreRulePopupField";
_ignoreRulePopupField.style.unityTextAlign = TextAnchor.MiddleLeft;
_ignoreRulePopupField.style.width = 300;
_ignoreRulePopupField.formatListItemCallback = FormatListItemCallback;
_ignoreRulePopupField.formatSelectedValueCallback = FormatSelectedValueCallback;
_ignoreRulePopupField.RegisterValueChangedCallback(evt =>
{ {
var selectPackage = _packageListView.selectedItem as AssetBundleCollectorPackage; selectPackage.IgnoreRuleName = evt.newValue.ClassName;
if (selectPackage != null) AssetBundleCollectorSettingData.ModifyPackage(selectPackage);
{ }
selectPackage.IgnoreRuleName = evt.newValue.ClassName; });
AssetBundleCollectorSettingData.ModifyPackage(selectPackage); _setting2Container.Add(_ignoreRulePopupField);
}
});
_setting2Container.Add(_ignoreRulePopupField);
}
// 配置修复按钮 // 配置修复按钮
var fixBtn = root.Q<Button>("FixButton"); var fixBtn = root.Q<Button>("FixButton");
@ -995,14 +995,16 @@ namespace YooAsset.Editor
try try
{ {
IIgnoreRule ignoreRule = AssetBundleCollectorSettingData.GetIgnoreRuleInstance(_ignoreRulePopupField.value.ClassName); IIgnoreRule ignoreRule = AssetBundleCollectorSettingData.GetIgnoreRuleInstance(_ignoreRulePopupField.value.ClassName);
CollectCommand command = new CollectCommand(true, false, string packageName = _packageNameTxt.value;
_packageNameTxt.value, var command = new CollectCommand(packageName, ignoreRule);
_enableAddressableToogle.value, command.SimulateBuild = true;
_locationToLowerToogle.value, command.UniqueBundleName = _uniqueBundleNameToogle.value;
_includeAssetGUIDToogle.value, command.UseAssetDependencyDB = true;
_autoCollectShadersToogle.value, command.EnableAddressable = _enableAddressableToogle.value;
_uniqueBundleNameToogle.value, command.LocationToLower = _locationToLowerToogle.value;
ignoreRule); command.IncludeAssetGUID = _includeAssetGUIDToogle.value;
command.AutoCollectShaders = _autoCollectShadersToogle.value;
collector.CheckConfigError(); collector.CheckConfigError();
collectAssetInfos = collector.GetAllCollectAssets(command, group); collectAssetInfos = collector.GetAllCollectAssets(command, group);
} }

View File

@ -36,8 +36,8 @@
</ui:VisualElement> </ui:VisualElement>
<ui:VisualElement name="GroupContainer" style="width: 200px; flex-grow: 0; background-color: rgb(67, 67, 67); border-left-width: 5px; border-right-width: 5px; border-top-width: 5px; border-bottom-width: 5px;"> <ui:VisualElement name="GroupContainer" style="width: 200px; flex-grow: 0; background-color: rgb(67, 67, 67); border-left-width: 5px; border-right-width: 5px; border-top-width: 5px; border-bottom-width: 5px;">
<ui:Label text="Groups" display-tooltip-when-elided="true" name="GroupTitle" style="background-color: rgb(89, 89, 89); -unity-text-align: upper-center; -unity-font-style: bold; border-left-width: 5px; border-right-width: 5px; border-top-width: 5px; border-bottom-width: 5px; font-size: 12px;" /> <ui:Label text="Groups" display-tooltip-when-elided="true" name="GroupTitle" style="background-color: rgb(89, 89, 89); -unity-text-align: upper-center; -unity-font-style: bold; border-left-width: 5px; border-right-width: 5px; border-top-width: 5px; border-bottom-width: 5px; font-size: 12px;" />
<ui:TextField picking-mode="Ignore" label="Package Name" value="filler text" name="PackageName" style="flex-direction: column;" /> <ui:TextField picking-mode="Ignore" label="Package Name" name="PackageName" style="flex-direction: column;" />
<ui:TextField picking-mode="Ignore" label="Package Desc" value="filler text" name="PackageDesc" style="flex-direction: column;" /> <ui:TextField picking-mode="Ignore" label="Package Desc" name="PackageDesc" style="flex-direction: column;" />
<ui:ListView focusable="true" name="GroupListView" item-height="20" virtualization-method="DynamicHeight" style="flex-grow: 1;" /> <ui:ListView focusable="true" name="GroupListView" item-height="20" virtualization-method="DynamicHeight" style="flex-grow: 1;" />
<ui:VisualElement name="GroupAddContainer" style="height: 20px; flex-direction: row; justify-content: center;"> <ui:VisualElement name="GroupAddContainer" style="height: 20px; flex-direction: row; justify-content: center;">
<ui:Button text=" - " display-tooltip-when-elided="true" name="RemoveBtn" /> <ui:Button text=" - " display-tooltip-when-elided="true" name="RemoveBtn" />

View File

@ -3,75 +3,51 @@ namespace YooAsset.Editor
{ {
public class CollectCommand public class CollectCommand
{ {
/// <summary>
/// 模拟构建模式
/// </summary>
public bool SimulateBuild { private set; get; }
/// <summary>
/// 使用资源依赖数据库
/// </summary>
public bool UseAssetDependencyDB { private set; get; }
/// <summary> /// <summary>
/// 包裹名称 /// 包裹名称
/// </summary> /// </summary>
public string PackageName { private set; get; } public string PackageName { private set; get; }
/// <summary>
/// 启用可寻址资源定位
/// </summary>
public bool EnableAddressable { private set; get; }
/// <summary>
/// 资源定位地址大小写不敏感
/// </summary>
public bool LocationToLower { private set; get; }
/// <summary>
/// 包含资源GUID数据
/// </summary>
public bool IncludeAssetGUID { private set; get; }
/// <summary>
/// 自动收集所有着色器
/// </summary>
public bool AutoCollectShaders { private set; get; }
/// <summary>
/// 资源包名唯一化
/// </summary>
public bool UniqueBundleName { private set; get; }
/// <summary>
/// 着色器统一全名称
/// </summary>
public string ShadersBundleName { private set; get; }
/// <summary> /// <summary>
/// 忽略规则实例 /// 忽略规则实例
/// </summary> /// </summary>
public IIgnoreRule IgnoreRule { private set; get; } public IIgnoreRule IgnoreRule { private set; get; }
public CollectCommand(bool simulateBuild, bool useAssetDependencyDB, string packageName, /// <summary>
bool enableAddressable, bool locationToLower, bool includeAssetGUID, /// 模拟构建模式
bool autoCollectShaders, bool uniqueBundleName, IIgnoreRule ignoreRule) /// </summary>
{ public bool SimulateBuild { set; get; }
SimulateBuild = simulateBuild;
UseAssetDependencyDB = useAssetDependencyDB;
PackageName = packageName;
EnableAddressable = enableAddressable;
LocationToLower = locationToLower;
IncludeAssetGUID = includeAssetGUID;
AutoCollectShaders = autoCollectShaders;
UniqueBundleName = uniqueBundleName;
IgnoreRule = ignoreRule;
// 着色器统一全名称 /// <summary>
var packRuleResult = DefaultPackRule.CreateShadersPackRuleResult(); /// 资源包名唯一化
ShadersBundleName = packRuleResult.GetBundleName(packageName, uniqueBundleName); /// </summary>
} public bool UniqueBundleName { set; get; }
/// <summary>
/// 使用资源依赖数据库
/// </summary>
public bool UseAssetDependencyDB { set; get; }
/// <summary>
/// 启用可寻址资源定位
/// </summary>
public bool EnableAddressable { set; get; }
/// <summary>
/// 资源定位地址大小写不敏感
/// </summary>
public bool LocationToLower { set; get; }
/// <summary>
/// 包含资源GUID数据
/// </summary>
public bool IncludeAssetGUID { set; get; }
/// <summary>
/// 自动收集所有着色器
/// </summary>
public bool AutoCollectShaders { set; get; }
private AssetDependencyCache _assetDependency; private AssetDependencyCache _assetDependency;
public AssetDependencyCache AssetDependency public AssetDependencyCache AssetDependency
@ -83,5 +59,11 @@ namespace YooAsset.Editor
return _assetDependency; return _assetDependency;
} }
} }
public CollectCommand(string packageName, IIgnoreRule ignoreRule)
{
PackageName = packageName;
IgnoreRule = ignoreRule;
}
} }
} }

View File

@ -15,12 +15,9 @@ namespace YooAsset.Editor
/// </summary> /// </summary>
public List<CollectAssetInfo> CollectAssets { private set; get; } public List<CollectAssetInfo> CollectAssets { private set; get; }
public CollectResult(CollectCommand command) public CollectResult(CollectCommand command, List<CollectAssetInfo> collectAssets)
{ {
Command = command; Command = command;
}
public void SetCollectAssets(List<CollectAssetInfo> collectAssets)
{
CollectAssets = collectAssets; CollectAssets = collectAssets;
} }
} }

View File

@ -9,12 +9,15 @@ namespace YooAsset.Editor
{ {
public class ResizeHandle : VisualElement public class ResizeHandle : VisualElement
{ {
/// <summary> #if UNITY_6000_0_OR_NEWER
/// Instantiates a TableView using data from a UXML file. public new class UxmlFactory : UxmlElementAttribute
/// </summary> {
}
#else
public new class UxmlFactory : UxmlFactory<ResizeHandle, UxmlTraits> public new class UxmlFactory : UxmlFactory<ResizeHandle, UxmlTraits>
{ {
} }
#endif
private bool _isResizing = false; private bool _isResizing = false;
private float _initialWidth; private float _initialWidth;

View File

@ -15,12 +15,15 @@ namespace YooAsset.Editor
/// </summary> /// </summary>
public class TableView : VisualElement public class TableView : VisualElement
{ {
/// <summary> #if UNITY_6000_0_OR_NEWER
/// Instantiates a TableView using data from a UXML file. public new class UxmlFactory : UxmlElementAttribute
/// </summary> {
}
#else
public new class UxmlFactory : UxmlFactory<TableView, UxmlTraits> public new class UxmlFactory : UxmlFactory<TableView, UxmlTraits>
{ {
} }
#endif
private readonly Toolbar _toolbar; private readonly Toolbar _toolbar;
private readonly ListView _listView; private readonly ListView _listView;

View File

@ -139,7 +139,7 @@ public static class ShaderVariantCollector
private static List<string> GetAllMaterials() private static List<string> GetAllMaterials()
{ {
// 获取所有打包的资源 // 获取所有打包的资源
CollectResult collectResult = AssetBundleCollectorSettingData.Setting.GetPackageAssets(false, false, _packageName); CollectResult collectResult = AssetBundleCollectorSettingData.Setting.BeginCollect(_packageName, false, false);
// 搜集所有材质球 // 搜集所有材质球
int progressValue = 0; int progressValue = 0;

View File

@ -43,6 +43,8 @@ public static class TestPackageBuilder
} }
else if (buildPipelineName == EBuildPipeline.ScriptableBuildPipeline.ToString()) else if (buildPipelineName == EBuildPipeline.ScriptableBuildPipeline.ToString())
{ {
// 内置着色器资源包名称
var builtinShaderBundleName = GetBuiltinShaderBundleName(packageName);
var buildParameters = new ScriptableBuildParameters(); var buildParameters = new ScriptableBuildParameters();
buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot(); buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot();
buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot(); buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot();
@ -59,6 +61,7 @@ public static class TestPackageBuilder
buildParameters.CompressOption = ECompressOption.LZ4; buildParameters.CompressOption = ECompressOption.LZ4;
buildParameters.ClearBuildCacheFiles = true; buildParameters.ClearBuildCacheFiles = true;
buildParameters.UseAssetDependencyDB = true; buildParameters.UseAssetDependencyDB = true;
buildParameters.BuiltinShadersBundleName = builtinShaderBundleName;
var pipeline = new ScriptableBuildPipeline(); var pipeline = new ScriptableBuildPipeline();
BuildResult buildResult = pipeline.Run(buildParameters, false); BuildResult buildResult = pipeline.Run(buildParameters, false);
@ -143,4 +146,15 @@ public static class TestPackageBuilder
throw new System.NotImplementedException(buildPipelineName); throw new System.NotImplementedException(buildPipelineName);
} }
} }
/// <summary>
/// 内置着色器资源包名称
/// 注意:和自动收集的着色器资源包名保持一致!
/// </summary>
private static string GetBuiltinShaderBundleName(string packageName)
{
var uniqueBundleName = AssetBundleCollectorSettingData.Setting.UniqueBundleName;
var packRuleResult = DefaultPackRule.CreateShadersPackRuleResult();
return packRuleResult.GetBundleName(packageName, uniqueBundleName);
}
} }