Compare commits

...

5 Commits

Author SHA1 Message Date
何冠峰 a5b68b28b2 update asset bundle builder 2025-02-20 11:27:44 +08:00
何冠峰 bd285faf37 update space shooter 2025-02-20 11:27:30 +08:00
何冠峰 8a4960b560 code style 2025-02-20 11:02:59 +08:00
何冠峰 83c6ae2057 update asset bundle builder
修复怀旧依赖模式下,TAG传染不正确的问题。
2025-02-20 11:01:25 +08:00
何冠峰 b71563e889 Update EBuildBundleType.cs 2025-02-20 10:02:12 +08:00
5 changed files with 76 additions and 38 deletions

View File

@ -52,7 +52,7 @@ namespace YooAsset.Editor
public string PackageNote; public string PackageNote;
/// <summary> /// <summary>
/// 旧版依赖模式 /// 怀旧版依赖模式
/// 说明兼容YooAssets1.5.x版本 /// 说明兼容YooAssets1.5.x版本
/// </summary> /// </summary>
public bool LegacyDependency = false; public bool LegacyDependency = false;

View File

@ -44,14 +44,14 @@ namespace YooAsset.Editor
manifest.AssetList = CreatePackageAssetList(buildMapContext); manifest.AssetList = CreatePackageAssetList(buildMapContext);
manifest.BundleList = CreatePackageBundleList(buildMapContext); manifest.BundleList = CreatePackageBundleList(buildMapContext);
// 处理资源清单的资源对象 // 1. 处理资源清单的资源对象
ProcessPacakgeAsset(manifest); ProcessPacakgeAsset(manifest);
// 处理资源包的依赖列表 // 2. 处理资源包的依赖列表
if (processBundleDepends) if (processBundleDepends)
ProcessBundleDepends(context, manifest); ProcessBundleDepends(context, manifest);
// 处理资源包的标签集合 // 3. 处理资源包的标签集合
if (processBundleTags) if (processBundleTags)
ProcessBundleTags(manifest); ProcessBundleTags(manifest);
@ -191,6 +191,19 @@ namespace YooAsset.Editor
var assetInfo = packageAsset.TempDataInEditor as BuildAssetInfo; var assetInfo = packageAsset.TempDataInEditor as BuildAssetInfo;
packageAsset.BundleID = GetCachedBundleIndexID(assetInfo.BundleName); packageAsset.BundleID = GetCachedBundleIndexID(assetInfo.BundleName);
} }
#region YOOASSET_LEGACY_DEPENDENCY
if (manifest.LegacyDependency)
{
// 记录资源对象依赖的资源包ID集合
// 注意:依赖关系非引擎构建结果里查询!
foreach (var packageAsset in manifest.AssetList)
{
var mainAssetInfo = packageAsset.TempDataInEditor as BuildAssetInfo;
packageAsset.DependBundleIDs = GetAssetDependBundleIDs(mainAssetInfo);
}
}
#endregion
} }
/// <summary> /// <summary>
@ -212,12 +225,55 @@ namespace YooAsset.Editor
} }
packageBundle.DependIDs = dependIDs.ToArray(); packageBundle.DependIDs = dependIDs.ToArray();
} }
#region YOOASSET_LEGACY_DEPENDENCY
if (manifest.LegacyDependency)
{
foreach (var packageBundle in manifest.BundleList)
{
var dependIDs = packageBundle.DependIDs;
packageBundle.TempDataInEditor = new DependencyQuery(dependIDs);
}
// 记录引用该资源包的资源包ID集合
foreach (var packageBundle in manifest.BundleList)
{
packageBundle.ReferenceBundleIDs = GetBundleReferenceBundleIDs(manifest, packageBundle);
}
}
#endregion
} }
/// <summary> /// <summary>
/// 处理资源包的标签集合 /// 处理资源包的标签集合
/// </summary> /// </summary>
private void ProcessBundleTags(PackageManifest manifest) private void ProcessBundleTags(PackageManifest manifest)
{
foreach (var packageBundle in manifest.BundleList)
{
packageBundle.Tags = Array.Empty<string>();
}
// YOOASSET_LEGACY_DEPENDENCY
if (manifest.LegacyDependency)
{
// 将主资源的标签信息传染给其依赖的资源包集合
foreach (var packageAsset in manifest.AssetList)
{
var assetTags = packageAsset.AssetTags;
int bundleID = packageAsset.BundleID;
CacheBundleTags(bundleID, assetTags);
if (packageAsset.DependBundleIDs != null)
{
foreach (var dependBundleID in packageAsset.DependBundleIDs)
{
CacheBundleTags(dependBundleID, assetTags);
}
}
}
}
else
{ {
// 将主资源的标签信息传染给其依赖的资源包集合 // 将主资源的标签信息传染给其依赖的资源包集合
foreach (var packageAsset in manifest.AssetList) foreach (var packageAsset in manifest.AssetList)
@ -235,7 +291,9 @@ namespace YooAsset.Editor
} }
} }
} }
}
// 将缓存的资源标签赋值给资源包
for (int index = 0; index < manifest.BundleList.Count; index++) for (int index = 0; index < manifest.BundleList.Count; index++)
{ {
var packageBundle = manifest.BundleList[index]; var packageBundle = manifest.BundleList[index];
@ -299,26 +357,6 @@ namespace YooAsset.Editor
} }
private void ProcessLegacyDependency(BuildContext context, PackageManifest manifest) private void ProcessLegacyDependency(BuildContext context, PackageManifest manifest)
{ {
foreach (var packageBundle in manifest.BundleList)
{
var dependIDs = packageBundle.DependIDs;
packageBundle.TempDataInEditor = new DependencyQuery(dependIDs);
}
// 记录资源对象依赖的资源包ID集合
// 注意:依赖关系非引擎构建结果里查询!
foreach (var packageAsset in manifest.AssetList)
{
var mainAssetInfo = packageAsset.TempDataInEditor as BuildAssetInfo;
packageAsset.DependBundleIDs = GetAssetDependBundleIDs(mainAssetInfo);
}
// 记录引用该资源包的资源包ID集合
foreach (var packageBundle in manifest.BundleList)
{
packageBundle.ReferenceBundleIDs = GetBundleReferenceBundleIDs(manifest, packageBundle);
}
// 注意:如果是可编程构建管线,需要补充内置资源包 // 注意:如果是可编程构建管线,需要补充内置资源包
// 注意:该步骤依赖前面的操作! // 注意:该步骤依赖前面的操作!
var buildResultContext = context.TryGetContextObject<TaskBuilding_SBP.BuildResultContext>(); var buildResultContext = context.TryGetContextObject<TaskBuilding_SBP.BuildResultContext>();

View File

@ -1,7 +1,7 @@
 
namespace YooAsset namespace YooAsset
{ {
internal enum EBuildBundleType public enum EBuildBundleType
{ {
/// <summary> /// <summary>
/// 未知类型 /// 未知类型

View File

@ -18,7 +18,7 @@ namespace YooAsset
public string FileVersion; public string FileVersion;
/// <summary> /// <summary>
/// 旧版依赖模式 /// 怀旧版依赖模式
/// </summary> /// </summary>
public bool LegacyDependency; public bool LegacyDependency;

View File

@ -26,7 +26,7 @@ MonoBehaviour:
Groups: Groups:
- GroupName: battle - GroupName: battle
GroupDesc: "\u6218\u6597" GroupDesc: "\u6218\u6597"
AssetTags: AssetTags: battle
ActiveRuleName: EnableGroup ActiveRuleName: EnableGroup
Collectors: Collectors:
- CollectPath: Assets/Samples/Space Shooter/GameRes/Effect - CollectPath: Assets/Samples/Space Shooter/GameRes/Effect
@ -92,7 +92,7 @@ MonoBehaviour:
UserData: UserData:
- GroupName: scene - GroupName: scene
GroupDesc: "\u573A\u666F" GroupDesc: "\u573A\u666F"
AssetTags: AssetTags: scene
ActiveRuleName: EnableGroup ActiveRuleName: EnableGroup
Collectors: Collectors:
- CollectPath: Assets/Samples/Space Shooter/GameRes/Scene - CollectPath: Assets/Samples/Space Shooter/GameRes/Scene
@ -113,7 +113,7 @@ MonoBehaviour:
UserData: UserData:
- GroupName: ugui - GroupName: ugui
GroupDesc: "\u9762\u677F" GroupDesc: "\u9762\u677F"
AssetTags: AssetTags: ui
ActiveRuleName: EnableGroup ActiveRuleName: EnableGroup
Collectors: Collectors:
- CollectPath: Assets/Samples/Space Shooter/GameRes/UIPanel - CollectPath: Assets/Samples/Space Shooter/GameRes/UIPanel