diff --git a/Assets/TEngine/Editor/Resource/EditorResourceBuilder.cs b/Assets/TEngine/Editor/Resource/EditorResourceBuilder.cs
index 64272bf3..3e226fa9 100644
--- a/Assets/TEngine/Editor/Resource/EditorResourceBuilder.cs
+++ b/Assets/TEngine/Editor/Resource/EditorResourceBuilder.cs
@@ -41,7 +41,7 @@ public static class EditorResourceBuilder
}
else
{
- Debug.LogError($"构建失败 : {buildResult.FailedInfo}");
+ Debug.LogError($"构建失败 : {buildResult.ErrorInfo}");
}
}
diff --git a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/AssetBundleBuilder.cs b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/AssetBundleBuilder.cs
index 88b82e0b..9813d7f2 100644
--- a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/AssetBundleBuilder.cs
+++ b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/AssetBundleBuilder.cs
@@ -94,7 +94,7 @@ namespace YooAsset.Editor
{
BuildLogger.Warning($"{buildParameters.BuildMode} pipeline build failed !");
BuildLogger.Error($"Build task failed : {buildResult.FailedTask}");
- BuildLogger.Error($"Build task error : {buildResult.FailedInfo}");
+ BuildLogger.Error(buildResult.ErrorInfo);
}
return buildResult;
diff --git a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/AssetBundleBuilderSetting.cs b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/AssetBundleBuilderSetting.cs
index 19f23d49..3d93766f 100644
--- a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/AssetBundleBuilderSetting.cs
+++ b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/AssetBundleBuilderSetting.cs
@@ -3,6 +3,7 @@ using UnityEngine;
namespace YooAsset.Editor
{
+ [CreateAssetMenu(fileName = "AssetBundleBuilderSetting", menuName = "YooAsset/Create AssetBundle Builder Settings")]
public class AssetBundleBuilderSetting : ScriptableObject
{
///
diff --git a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/AssetBundleBuilderWindow.cs b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/AssetBundleBuilderWindow.cs
index 9e4b8eae..9fe30195 100644
--- a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/AssetBundleBuilderWindow.cs
+++ b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/AssetBundleBuilderWindow.cs
@@ -12,7 +12,7 @@ namespace YooAsset.Editor
public class AssetBundleBuilderWindow : EditorWindow
{
[MenuItem("YooAsset/AssetBundle Builder", false, 102)]
- public static void ShowExample()
+ public static void OpenWindow()
{
AssetBundleBuilderWindow window = GetWindow("资源包构建工具", true, WindowsDefine.DockedWindowTypes);
window.minSize = new Vector2(800, 600);
@@ -275,6 +275,7 @@ namespace YooAsset.Editor
buildParameters.PackageName = AssetBundleBuilderSettingData.Setting.BuildPackage;
buildParameters.PackageVersion = _buildVersionField.value;
buildParameters.VerifyBuildingResult = true;
+ buildParameters.ShareAssetPackRule = new DefaultShareAssetPackRule();
buildParameters.EncryptionServices = CreateEncryptionServicesInstance();
buildParameters.CompressOption = AssetBundleBuilderSettingData.Setting.CompressOption;
buildParameters.OutputNameStyle = AssetBundleBuilderSettingData.Setting.OutputNameStyle;
diff --git a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/BuildAssetInfo.cs b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/BuildAssetInfo.cs
index 7999f92d..6802035b 100644
--- a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/BuildAssetInfo.cs
+++ b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/BuildAssetInfo.cs
@@ -157,7 +157,7 @@ namespace YooAsset.Editor
///
/// 计算共享资源包的完整包名
///
- public void CalculateShareBundleName(bool uniqueBundleName, string packageName, string shadersBundleName)
+ public void CalculateShareBundleName(IShareAssetPackRule packRule, bool uniqueBundleName, string packageName, string shadersBundleName)
{
if (CollectorType != ECollectorType.None)
return;
@@ -173,8 +173,7 @@ namespace YooAsset.Editor
{
if (_referenceBundleNames.Count > 1)
{
- IPackRule packRule = PackDirectory.StaticPackRule;
- PackRuleResult packRuleResult = packRule.GetPackRuleResult(new PackRuleData(AssetPath));
+ PackRuleResult packRuleResult = packRule.GetPackRuleResult(AssetPath);
BundleName = packRuleResult.GetShareBundleName(packageName, uniqueBundleName);
}
else
diff --git a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/BuildParameters.cs b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/BuildParameters.cs
index 3c324c7f..a5935235 100644
--- a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/BuildParameters.cs
+++ b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/BuildParameters.cs
@@ -76,9 +76,14 @@ namespace YooAsset.Editor
/// 验证构建结果
///
public bool VerifyBuildingResult = false;
-
+
///
- /// 加密类
+ /// 共享资源的打包规则
+ ///
+ public IShareAssetPackRule ShareAssetPackRule = null;
+
+ ///
+ /// 资源的加密接口
///
public IEncryptionServices EncryptionServices = null;
diff --git a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/BuildSystem/BuildResult.cs b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/BuildSystem/BuildResult.cs
index c47623d1..fe4e251b 100644
--- a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/BuildSystem/BuildResult.cs
+++ b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/BuildSystem/BuildResult.cs
@@ -19,7 +19,7 @@ namespace YooAsset.Editor
///
/// 构建失败的信息
///
- public string FailedInfo;
+ public string ErrorInfo;
///
/// 输出的补丁包目录
diff --git a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/BuildSystem/BuildRunner.cs b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/BuildSystem/BuildRunner.cs
index 9cc3e676..bab28d92 100644
--- a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/BuildSystem/BuildRunner.cs
+++ b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/BuildSystem/BuildRunner.cs
@@ -52,7 +52,7 @@ namespace YooAsset.Editor
{
EditorTools.ClearProgressBar();
buildResult.FailedTask = task.GetType().Name;
- buildResult.FailedInfo = e.ToString();
+ buildResult.ErrorInfo = e.ToString();
buildResult.Success = false;
break;
}
diff --git a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/BuildTasks/TaskCreateManifest.cs b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/BuildTasks/TaskCreateManifest.cs
index 310e36f6..1299b293 100644
--- a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/BuildTasks/TaskCreateManifest.cs
+++ b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/BuildTasks/TaskCreateManifest.cs
@@ -205,6 +205,7 @@ namespace YooAsset.Editor
throw new Exception("没有发现着色器资源包!");
// 检测依赖交集并更新依赖ID
+ HashSet tagTemps = new HashSet();
foreach (var packageAsset in manifest.AssetList)
{
List dependBundles = GetPackageAssetAllDependBundles(manifest, packageAsset);
@@ -215,8 +216,23 @@ namespace YooAsset.Editor
if (newDependIDs.Contains(shaderBundleId) == false)
newDependIDs.Add(shaderBundleId);
packageAsset.DependIDs = newDependIDs.ToArray();
+ foreach (var tag in packageAsset.AssetTags)
+ {
+ if (tagTemps.Contains(tag) == false)
+ tagTemps.Add(tag);
+ }
}
}
+
+ // 更新资源包标签
+ var packageBundle = manifest.BundleList[shaderBundleId];
+ List newTags = new List(packageBundle.Tags);
+ foreach (var tag in tagTemps)
+ {
+ if (newTags.Contains(tag) == false)
+ newTags.Add(tag);
+ }
+ packageBundle.Tags = newTags.ToArray();
}
private List GetPackageAssetAllDependBundles(PackageManifest manifest, PackageAsset packageAsset)
{
@@ -302,7 +318,7 @@ namespace YooAsset.Editor
{
if (packageBundle.IsRawFile)
{
- _cachedBundleDepends.Add(packageBundle.BundleName, new string[] { } );
+ _cachedBundleDepends.Add(packageBundle.BundleName, new string[] { });
continue;
}
@@ -321,7 +337,7 @@ namespace YooAsset.Editor
}
EditorTools.ClearProgressBar();
}
-
+
private int[] GetBundleRefrenceIDs(PackageManifest manifest, PackageBundle targetBundle)
{
List referenceList = new List();
diff --git a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/BuildTasks/TaskGetBuildMap.cs b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/BuildTasks/TaskGetBuildMap.cs
index f3cd9a8b..709318fd 100644
--- a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/BuildTasks/TaskGetBuildMap.cs
+++ b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/BuildTasks/TaskGetBuildMap.cs
@@ -13,7 +13,8 @@ namespace YooAsset.Editor
void IBuildTask.Run(BuildContext context)
{
var buildParametersContext = context.GetContextObject();
- var buildMapContext = CreateBuildMap(buildParametersContext.Parameters.BuildMode, buildParametersContext.Parameters.PackageName);
+ var buildParameters = buildParametersContext.Parameters;
+ var buildMapContext = CreateBuildMap(buildParameters.BuildMode, buildParameters.ShareAssetPackRule, buildParameters.PackageName);
context.SetContextObject(buildMapContext);
BuildLogger.Log("构建内容准备完毕!");
@@ -24,7 +25,7 @@ namespace YooAsset.Editor
///
/// 资源构建上下文
///
- public BuildMapContext CreateBuildMap(EBuildMode buildMode, string packageName)
+ public BuildMapContext CreateBuildMap(EBuildMode buildMode, IShareAssetPackRule packRule, string packageName)
{
Dictionary allBuildAssetInfoDic = new Dictionary(1000);
@@ -101,7 +102,7 @@ namespace YooAsset.Editor
var command = collectResult.Command;
foreach (var buildAssetInfo in allBuildAssetInfoDic.Values)
{
- buildAssetInfo.CalculateShareBundleName(command.UniqueBundleName, command.PackageName, command.ShadersBundleName);
+ buildAssetInfo.CalculateShareBundleName(packRule, command.UniqueBundleName, command.PackageName, command.ShadersBundleName);
}
// 9. 移除不参与构建的资源
diff --git a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/BuildTasks/TaskPrepare.cs b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/BuildTasks/TaskPrepare.cs
index 5c324287..5a824d5d 100644
--- a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/BuildTasks/TaskPrepare.cs
+++ b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleBuilder/BuildTasks/TaskPrepare.cs
@@ -24,6 +24,13 @@ namespace YooAsset.Editor
if (buildParameters.BuildMode != EBuildMode.SimulateBuild)
{
+#if UNITY_2021_3_OR_NEWER
+ if (buildParameters.BuildPipeline == EBuildPipeline.BuiltinBuildPipeline)
+ {
+ BuildLogger.Warning("推荐使用可编程构建管线(SBP)!");
+ }
+#endif
+
// 检测当前是否正在构建资源包
if (BuildPipeline.isBuildingPlayer)
throw new Exception("当前正在构建资源包,请结束后再试");
@@ -40,6 +47,20 @@ namespace YooAsset.Editor
throw new Exception("首包资源标签不能为空!");
}
+ // 检测共享资源打包规则
+ if (buildParameters.ShareAssetPackRule == null)
+ throw new Exception("共享资源打包规则不能为空!");
+
+#if UNITY_WEBGL
+ if (buildParameters.EncryptionServices != null)
+ {
+ if (buildParameters.EncryptionServices.GetType() != typeof(EncryptionNone))
+ {
+ throw new Exception("WebGL平台不支持加密!");
+ }
+ }
+#endif
+
// 检测包裹输出目录是否存在
string packageOutputDirectory = buildParametersContext.GetPackageOutputDirectory();
if (Directory.Exists(packageOutputDirectory))
diff --git a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/AssetBundleCollector.cs b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/AssetBundleCollector.cs
index 9a65e85c..f0ad20bf 100644
--- a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/AssetBundleCollector.cs
+++ b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/AssetBundleCollector.cs
@@ -197,16 +197,17 @@ namespace YooAsset.Editor
// 检测可寻址地址是否重复
if (command.EnableAddressable)
{
- HashSet adressTemper = new HashSet();
+ var addressTemper = new Dictionary();
foreach (var collectInfoPair in result)
{
if (collectInfoPair.Value.CollectorType == ECollectorType.MainAssetCollector)
{
string address = collectInfoPair.Value.Address;
- if (adressTemper.Contains(address) == false)
- adressTemper.Add(address);
+ string assetPath = collectInfoPair.Value.AssetPath;
+ if (addressTemper.TryGetValue(address, out var existed) == false)
+ addressTemper.Add(address, assetPath);
else
- throw new Exception($"The address is existed : {address} in collector : {CollectPath}");
+ throw new Exception($"The address is existed : {address} in collector : {CollectPath} \nAssetPath:\n {existed}\n {assetPath}");
}
}
}
@@ -243,8 +244,8 @@ namespace YooAsset.Editor
return false;
// 忽略编辑器下的类型资源
- Type type = AssetDatabase.GetMainAssetTypeAtPath(assetPath);
- if (type == typeof(LightingDataAsset))
+ Type assetType = AssetDatabase.GetMainAssetTypeAtPath(assetPath);
+ if (assetType == typeof(LightingDataAsset))
return false;
// 检测原生文件是否合规
@@ -252,27 +253,29 @@ namespace YooAsset.Editor
{
string extension = StringUtility.RemoveFirstChar(System.IO.Path.GetExtension(assetPath));
if (extension == EAssetFileExtension.unity.ToString() || extension == EAssetFileExtension.prefab.ToString() ||
- extension == EAssetFileExtension.mat.ToString() || extension == EAssetFileExtension.controller.ToString() ||
- extension == EAssetFileExtension.fbx.ToString() || extension == EAssetFileExtension.anim.ToString() ||
- extension == EAssetFileExtension.shader.ToString())
+ extension == EAssetFileExtension.fbx.ToString() || extension == EAssetFileExtension.mat.ToString() ||
+ extension == EAssetFileExtension.controller.ToString() || extension == EAssetFileExtension.anim.ToString() ||
+ extension == EAssetFileExtension.ttf.ToString() || extension == EAssetFileExtension.shader.ToString())
{
UnityEngine.Debug.LogWarning($"Raw file pack rule can not support file estension : {extension}");
return false;
}
// 注意:原生文件只支持无依赖关系的资源
+ /*
string[] depends = AssetDatabase.GetDependencies(assetPath, true);
if (depends.Length != 1)
{
UnityEngine.Debug.LogWarning($"Raw file pack rule can not support estension : {extension}");
return false;
}
+ */
}
else
{
// 忽略Unity无法识别的无效文件
// 注意:只对非原生文件收集器处理
- if (type == typeof(UnityEditor.DefaultAsset))
+ if (assetType == typeof(UnityEditor.DefaultAsset))
{
UnityEngine.Debug.LogWarning($"Cannot pack default asset : {assetPath}");
return false;
@@ -287,10 +290,6 @@ namespace YooAsset.Editor
}
private bool IsCollectAsset(string assetPath)
{
- Type assetType = AssetDatabase.GetMainAssetTypeAtPath(assetPath);
- if (assetType == typeof(UnityEngine.Shader) || assetType == typeof(UnityEngine.ShaderVariantCollection))
- return true;
-
// 根据规则设置过滤资源文件
IFilterRule filterRuleInstance = AssetBundleCollectorSettingData.GetFilterRuleInstance(FilterRuleName);
return filterRuleInstance.IsCollectAsset(new FilterRuleData(assetPath));
diff --git a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/AssetBundleCollectorGroup.cs b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/AssetBundleCollectorGroup.cs
index 0575619f..2818c776 100644
--- a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/AssetBundleCollectorGroup.cs
+++ b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/AssetBundleCollectorGroup.cs
@@ -96,16 +96,17 @@ namespace YooAsset.Editor
// 检测可寻址地址是否重复
if (command.EnableAddressable)
{
- HashSet adressTemper = new HashSet();
+ var addressTemper = new Dictionary();
foreach (var collectInfoPair in result)
{
if (collectInfoPair.Value.CollectorType == ECollectorType.MainAssetCollector)
{
string address = collectInfoPair.Value.Address;
- if (adressTemper.Contains(address) == false)
- adressTemper.Add(address);
+ string assetPath = collectInfoPair.Value.AssetPath;
+ if (addressTemper.TryGetValue(address, out var existed) == false)
+ addressTemper.Add(address, assetPath);
else
- throw new Exception($"The address is existed : {address} in group : {GroupName}");
+ throw new Exception($"The address is existed : {address} in group : {GroupName} \nAssetPath:\n {existed}\n {assetPath}");
}
}
}
diff --git a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/AssetBundleCollectorPackage.cs b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/AssetBundleCollectorPackage.cs
index df6a8f2c..694dbc5f 100644
--- a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/AssetBundleCollectorPackage.cs
+++ b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/AssetBundleCollectorPackage.cs
@@ -76,16 +76,17 @@ namespace YooAsset.Editor
// 检测可寻址地址是否重复
if (command.EnableAddressable)
{
- HashSet adressTemper = new HashSet();
+ var addressTemper = new Dictionary();
foreach (var collectInfoPair in result)
{
if (collectInfoPair.Value.CollectorType == ECollectorType.MainAssetCollector)
{
string address = collectInfoPair.Value.Address;
- if (adressTemper.Contains(address) == false)
- adressTemper.Add(address);
+ string assetPath = collectInfoPair.Value.AssetPath;
+ if (addressTemper.TryGetValue(address, out var existed) == false)
+ addressTemper.Add(address, assetPath);
else
- throw new Exception($"The address is existed : {address}");
+ throw new Exception($"The address is existed : {address} \nAssetPath:\n {existed}\n {assetPath}");
}
}
}
diff --git a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/AssetBundleCollectorSetting.cs b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/AssetBundleCollectorSetting.cs
index 15631479..3aba54bd 100644
--- a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/AssetBundleCollectorSetting.cs
+++ b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/AssetBundleCollectorSetting.cs
@@ -6,6 +6,7 @@ using UnityEngine;
namespace YooAsset.Editor
{
+ [CreateAssetMenu(fileName = "AssetBundleCollectorSetting", menuName = "YooAsset/Create AssetBundle Collector Settings")]
public class AssetBundleCollectorSetting : ScriptableObject
{
///
diff --git a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/AssetBundleCollectorSettingData.cs b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/AssetBundleCollectorSettingData.cs
index 51525343..5fd5aee4 100644
--- a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/AssetBundleCollectorSettingData.cs
+++ b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/AssetBundleCollectorSettingData.cs
@@ -27,24 +27,8 @@ namespace YooAsset.Editor
public static bool IsDirty { private set; get; } = false;
- private static AssetBundleCollectorSetting _setting = null;
- public static AssetBundleCollectorSetting Setting
+ static AssetBundleCollectorSettingData()
{
- get
- {
- if (_setting == null)
- LoadSettingData();
- return _setting;
- }
- }
-
- ///
- /// 加载配置文件
- ///
- private static void LoadSettingData()
- {
- _setting = SettingLoader.LoadSettingData();
-
// IPackRule
{
// 清空缓存集合
@@ -147,6 +131,17 @@ namespace YooAsset.Editor
}
}
+ private static AssetBundleCollectorSetting _setting = null;
+ public static AssetBundleCollectorSetting Setting
+ {
+ get
+ {
+ if (_setting == null)
+ _setting = SettingLoader.LoadSettingData();
+ return _setting;
+ }
+ }
+
///
/// 存储配置文件
///
@@ -184,9 +179,6 @@ namespace YooAsset.Editor
public static List GetActiveRuleNames()
{
- if (_setting == null)
- LoadSettingData();
-
List names = new List();
foreach (var pair in _cacheActiveRuleTypes)
{
@@ -199,9 +191,6 @@ namespace YooAsset.Editor
}
public static List GetAddressRuleNames()
{
- if (_setting == null)
- LoadSettingData();
-
List names = new List();
foreach (var pair in _cacheAddressRuleTypes)
{
@@ -214,9 +203,6 @@ namespace YooAsset.Editor
}
public static List GetPackRuleNames()
{
- if (_setting == null)
- LoadSettingData();
-
List names = new List();
foreach (var pair in _cachePackRuleTypes)
{
@@ -229,9 +215,6 @@ namespace YooAsset.Editor
}
public static List GetFilterRuleNames()
{
- if (_setting == null)
- LoadSettingData();
-
List names = new List();
foreach (var pair in _cacheFilterRuleTypes)
{
diff --git a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/AssetBundleCollectorWindow.cs b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/AssetBundleCollectorWindow.cs
index 094e9a84..839860cb 100644
--- a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/AssetBundleCollectorWindow.cs
+++ b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/AssetBundleCollectorWindow.cs
@@ -12,7 +12,7 @@ namespace YooAsset.Editor
public class AssetBundleCollectorWindow : EditorWindow
{
[MenuItem("YooAsset/AssetBundle Collector", false, 101)]
- public static void ShowExample()
+ public static void OpenWindow()
{
AssetBundleCollectorWindow window = GetWindow("资源包收集工具", true, WindowsDefine.DockedWindowTypes);
window.minSize = new Vector2(800, 600);
@@ -148,6 +148,7 @@ namespace YooAsset.Editor
{
selectPackage.PackageName = evt.newValue;
AssetBundleCollectorSettingData.ModifyPackage(selectPackage);
+ FillPackageViewData();
}
});
@@ -160,6 +161,7 @@ namespace YooAsset.Editor
{
selectPackage.PackageDesc = evt.newValue;
AssetBundleCollectorSettingData.ModifyPackage(selectPackage);
+ FillPackageViewData();
}
});
diff --git a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/DefaultPackRule.cs b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/DefaultPackRule.cs
index 563d1e9c..72eef45c 100644
--- a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/DefaultPackRule.cs
+++ b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/DefaultPackRule.cs
@@ -60,8 +60,6 @@ namespace YooAsset.Editor
[DisplayName("资源包名: 父类文件夹路径")]
public class PackDirectory : IPackRule
{
- public static PackDirectory StaticPackRule = new PackDirectory();
-
PackRuleResult IPackRule.GetPackRuleResult(PackRuleData data)
{
string bundleName = Path.GetDirectoryName(data.AssetPath);
diff --git a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/DefaultShareAssetPackRule.cs b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/DefaultShareAssetPackRule.cs
new file mode 100644
index 00000000..c861e6fb
--- /dev/null
+++ b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/DefaultShareAssetPackRule.cs
@@ -0,0 +1,16 @@
+using System;
+using System.IO;
+using UnityEditor;
+
+namespace YooAsset.Editor
+{
+ public class DefaultShareAssetPackRule : IShareAssetPackRule
+ {
+ public PackRuleResult GetPackRuleResult(string assetPath)
+ {
+ string bundleName = Path.GetDirectoryName(assetPath);
+ PackRuleResult result = new PackRuleResult(bundleName, DefaultPackRule.AssetBundleFileExtension);
+ return result;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/DefaultShareAssetPackRule.cs.meta b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/DefaultShareAssetPackRule.cs.meta
new file mode 100644
index 00000000..61e38b2a
--- /dev/null
+++ b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/DefaultShareAssetPackRule.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 3b8606481370397489cb3aa21e726d9a
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/IShareAssetPackRule.cs b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/IShareAssetPackRule.cs
new file mode 100644
index 00000000..548bc5e9
--- /dev/null
+++ b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/IShareAssetPackRule.cs
@@ -0,0 +1,14 @@
+
+namespace YooAsset.Editor
+{
+ ///
+ /// 共享资源的打包规则
+ ///
+ public interface IShareAssetPackRule
+ {
+ ///
+ /// 获取打包规则结果
+ ///
+ PackRuleResult GetPackRuleResult(string assetPath);
+ }
+}
\ No newline at end of file
diff --git a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/IShareAssetPackRule.cs.meta b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/IShareAssetPackRule.cs.meta
new file mode 100644
index 00000000..4fa19902
--- /dev/null
+++ b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleCollector/IShareAssetPackRule.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 1ed930b0cc1db1742b0a131ca476bd82
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleDebugger/AssetBundleDebuggerWindow.cs b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleDebugger/AssetBundleDebuggerWindow.cs
index 19a30127..820edebe 100644
--- a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleDebugger/AssetBundleDebuggerWindow.cs
+++ b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleDebugger/AssetBundleDebuggerWindow.cs
@@ -13,7 +13,7 @@ namespace YooAsset.Editor
public class AssetBundleDebuggerWindow : EditorWindow
{
[MenuItem("YooAsset/AssetBundle Debugger", false, 104)]
- public static void ShowExample()
+ public static void OpenWindow()
{
AssetBundleDebuggerWindow wnd = GetWindow("资源包调试工具", true, WindowsDefine.DockedWindowTypes);
wnd.minSize = new Vector2(800, 600);
diff --git a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleReporter/AssetBundleReporterWindow.cs b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleReporter/AssetBundleReporterWindow.cs
index 15009da1..92d945ab 100644
--- a/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleReporter/AssetBundleReporterWindow.cs
+++ b/Assets/TEngine/Editor/Resource/YooAsset/AssetBundleReporter/AssetBundleReporterWindow.cs
@@ -10,7 +10,7 @@ namespace YooAsset.Editor
public class AssetBundleReporterWindow : EditorWindow
{
[MenuItem("YooAsset/AssetBundle Reporter", false, 103)]
- public static void ShowExample()
+ public static void OpenWindow()
{
AssetBundleReporterWindow window = GetWindow("资源包报告工具", true, WindowsDefine.DockedWindowTypes);
window.minSize = new Vector2(800, 600);
diff --git a/Assets/TEngine/Editor/Resource/YooAsset/HomePage.cs b/Assets/TEngine/Editor/Resource/YooAsset/HomePage.cs
new file mode 100644
index 00000000..3f704dfd
--- /dev/null
+++ b/Assets/TEngine/Editor/Resource/YooAsset/HomePage.cs
@@ -0,0 +1,17 @@
+#if UNITY_2019_4_OR_NEWER
+using System;
+using UnityEditor;
+using UnityEngine;
+
+namespace YooAsset.Editor
+{
+ internal class HomePageWindow
+ {
+ [MenuItem("YooAsset/Home Page", false, 1)]
+ public static void OpenWindow()
+ {
+ Application.OpenURL("https://www.yooasset.com/");
+ }
+ }
+}
+#endif
\ No newline at end of file
diff --git a/Assets/TEngine/Editor/Resource/YooAsset/HomePage.cs.meta b/Assets/TEngine/Editor/Resource/YooAsset/HomePage.cs.meta
new file mode 100644
index 00000000..07c45c34
--- /dev/null
+++ b/Assets/TEngine/Editor/Resource/YooAsset/HomePage.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 901fc6964e7d483428830e2681899473
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/TEngine/Editor/Resource/YooAsset/ShaderVariantCollector/ShaderVariantCollectorSetting.cs b/Assets/TEngine/Editor/Resource/YooAsset/ShaderVariantCollector/ShaderVariantCollectorSetting.cs
index 658cb1a7..135031bf 100644
--- a/Assets/TEngine/Editor/Resource/YooAsset/ShaderVariantCollector/ShaderVariantCollectorSetting.cs
+++ b/Assets/TEngine/Editor/Resource/YooAsset/ShaderVariantCollector/ShaderVariantCollectorSetting.cs
@@ -2,6 +2,7 @@
namespace YooAsset.Editor
{
+ [CreateAssetMenu(fileName = "ShaderVariantCollectorSetting", menuName = "YooAsset/Create ShaderVariant Collector Settings")]
public class ShaderVariantCollectorSetting : ScriptableObject
{
///
diff --git a/Assets/TEngine/Editor/Resource/YooAsset/ShaderVariantCollector/ShaderVariantCollectorSettingData.cs b/Assets/TEngine/Editor/Resource/YooAsset/ShaderVariantCollector/ShaderVariantCollectorSettingData.cs
index 34a5374a..7b097cfd 100644
--- a/Assets/TEngine/Editor/Resource/YooAsset/ShaderVariantCollector/ShaderVariantCollectorSettingData.cs
+++ b/Assets/TEngine/Editor/Resource/YooAsset/ShaderVariantCollector/ShaderVariantCollectorSettingData.cs
@@ -1,7 +1,6 @@
using System;
using System.Collections;
using System.Collections.Generic;
-using System.Linq;
using UnityEngine;
using UnityEditor;
@@ -20,6 +19,11 @@ namespace YooAsset.Editor
}
}
+ ///
+ /// 配置数据是否被修改
+ ///
+ public static bool IsDirty { set; get; } = false;
+
///
/// 加载配置文件
///
@@ -35,6 +39,7 @@ namespace YooAsset.Editor
{
if (Setting != null)
{
+ IsDirty = false;
EditorUtility.SetDirty(Setting);
AssetDatabase.SaveAssets();
Debug.Log($"{nameof(ShaderVariantCollectorSetting)}.asset is saved!");
diff --git a/Assets/TEngine/Editor/Resource/YooAsset/ShaderVariantCollector/ShaderVariantCollectorWindow.cs b/Assets/TEngine/Editor/Resource/YooAsset/ShaderVariantCollector/ShaderVariantCollectorWindow.cs
index da6204b7..a1f39c2b 100644
--- a/Assets/TEngine/Editor/Resource/YooAsset/ShaderVariantCollector/ShaderVariantCollectorWindow.cs
+++ b/Assets/TEngine/Editor/Resource/YooAsset/ShaderVariantCollector/ShaderVariantCollectorWindow.cs
@@ -12,7 +12,7 @@ namespace YooAsset.Editor
public class ShaderVariantCollectorWindow : EditorWindow
{
[MenuItem("YooAsset/ShaderVariant Collector", false, 201)]
- public static void ShowExample()
+ public static void OpenWindow()
{
ShaderVariantCollectorWindow window = GetWindow("着色器变种收集工具", true, WindowsDefine.DockedWindowTypes);
window.minSize = new Vector2(800, 600);
@@ -20,6 +20,7 @@ namespace YooAsset.Editor
private List _packageNames;
+ private Button _saveButton;
private Button _collectButton;
private TextField _collectOutputField;
private Label _currentShaderCountField;
@@ -40,6 +41,10 @@ namespace YooAsset.Editor
visualAsset.CloneTree(root);
+ // 配置保存按钮
+ _saveButton = root.Q