Optimize share bundle pack logic

优化了共享资源的打包逻辑。
pull/13/head^2
hevinci 2022-06-17 12:05:14 +08:00
parent 0b1990f040
commit b59fb0d811
3 changed files with 10 additions and 10 deletions

View File

@ -9,8 +9,8 @@ namespace YooAsset.Editor
{ {
private string _mainBundleName; private string _mainBundleName;
private string _shareBundleName; private string _shareBundleName;
private readonly HashSet<string> _referenceBundleNames = new HashSet<string>();
private bool _isAddAssetTags = false; private bool _isAddAssetTags = false;
private readonly HashSet<string> _referenceBundleNames = new HashSet<string>();
/// <summary> /// <summary>
/// 收集器类型 /// 收集器类型
@ -68,9 +68,9 @@ namespace YooAsset.Editor
else else
IsShaderAsset = false; IsShaderAsset = false;
} }
public BuildAssetInfo(ECollectorType collectorType, string assetPath) public BuildAssetInfo(string assetPath)
{ {
CollectorType = collectorType; CollectorType = ECollectorType.None;
Address = string.Empty; Address = string.Empty;
AssetPath = assetPath; AssetPath = assetPath;
IsRawAsset = false; IsRawAsset = false;
@ -185,11 +185,9 @@ namespace YooAsset.Editor
if (_referenceBundleNames.Count > 1) if (_referenceBundleNames.Count > 1)
{ {
var bundleNameList = _referenceBundleNames.ToList(); IPackRule packRule = PackDirectory.StaticPackRule;
bundleNameList.Sort(); var bundleName = packRule.GetBundleName(new PackRuleData(AssetPath));
string combineName = string.Join("|", bundleNameList); var shareBundleName = $"share_{bundleName}.{YooAssetSettingsData.Setting.AssetBundleFileVariant}";
var combineNameHash = HashUtility.StringSHA1(combineName);
var shareBundleName = $"share_{combineNameHash}.{YooAssetSettingsData.Setting.AssetBundleFileVariant}";
_shareBundleName = EditorTools.GetRegularPath(shareBundleName).ToLower(); _shareBundleName = EditorTools.GetRegularPath(shareBundleName).ToLower();
} }
} }

View File

@ -65,7 +65,7 @@ namespace YooAsset.Editor
} }
else else
{ {
var buildAssetInfo = new BuildAssetInfo(ECollectorType.None, dependAssetPath); var buildAssetInfo = new BuildAssetInfo(dependAssetPath);
buildAssetInfo.AddBundleTags(collectAssetInfo.AssetTags); buildAssetInfo.AddBundleTags(collectAssetInfo.AssetTags);
buildAssetInfo.AddReferenceBundleName(collectAssetInfo.BundleName); buildAssetInfo.AddReferenceBundleName(collectAssetInfo.BundleName);
buildAssetDic.Add(dependAssetPath, buildAssetInfo); buildAssetDic.Add(dependAssetPath, buildAssetInfo);

View File

@ -28,6 +28,8 @@ namespace YooAsset.Editor
/// </summary> /// </summary>
public class PackDirectory : IPackRule public class PackDirectory : IPackRule
{ {
public static PackDirectory StaticPackRule = new PackDirectory();
string IPackRule.GetBundleName(PackRuleData data) string IPackRule.GetBundleName(PackRuleData data)
{ {
return Path.GetDirectoryName(data.AssetPath); return Path.GetDirectoryName(data.AssetPath);