update resource package

pull/497/head
何冠峰 2025-02-21 15:29:42 +08:00
parent d9c911d89b
commit 7eacb46555
15 changed files with 98 additions and 188 deletions

View File

@ -51,12 +51,6 @@ namespace YooAsset.Editor
/// </summary> /// </summary>
public string PackageNote; public string PackageNote;
/// <summary>
/// 怀旧版依赖模式
/// 说明兼容YooAsset1.5.x版本
/// </summary>
public bool LegacyDependency = false;
/// <summary> /// <summary>
/// 清空构建缓存文件 /// 清空构建缓存文件
/// </summary> /// </summary>

View File

@ -31,7 +31,6 @@ namespace YooAsset.Editor
// 创建新补丁清单 // 创建新补丁清单
PackageManifest manifest = new PackageManifest(); PackageManifest manifest = new PackageManifest();
manifest.FileVersion = YooAssetSettings.ManifestFileVersion; manifest.FileVersion = YooAssetSettings.ManifestFileVersion;
manifest.LegacyDependency = buildParameters.LegacyDependency;
manifest.EnableAddressable = buildMapContext.Command.EnableAddressable; manifest.EnableAddressable = buildMapContext.Command.EnableAddressable;
manifest.LocationToLower = buildMapContext.Command.LocationToLower; manifest.LocationToLower = buildMapContext.Command.LocationToLower;
manifest.IncludeAssetGUID = buildMapContext.Command.IncludeAssetGUID; manifest.IncludeAssetGUID = buildMapContext.Command.IncludeAssetGUID;
@ -55,13 +54,9 @@ namespace YooAsset.Editor
if (processBundleTags) if (processBundleTags)
ProcessBundleTags(manifest); ProcessBundleTags(manifest);
#region YOOASSET_LEGACY_DEPENDENCY // 4. 处理内置资源包
if (buildParameters.LegacyDependency) if (processBundleDepends)
{ ProcessBuiltinBundleDependency(context, manifest);
if (processBundleDepends)
ProcessLegacyDependency(context, manifest);
}
#endregion
// 创建补丁清单文本文件 // 创建补丁清单文本文件
{ {
@ -73,17 +68,13 @@ namespace YooAsset.Editor
// 创建补丁清单二进制文件 // 创建补丁清单二进制文件
string packageHash; string packageHash;
string packagePath;
{ {
string fileName = YooAssetSettingsData.GetManifestBinaryFileName(buildParameters.PackageName, buildParameters.PackageVersion); string fileName = YooAssetSettingsData.GetManifestBinaryFileName(buildParameters.PackageName, buildParameters.PackageVersion);
string filePath = $"{packageOutputDirectory}/{fileName}"; packagePath = $"{packageOutputDirectory}/{fileName}";
ManifestTools.SerializeToBinary(filePath, manifest); ManifestTools.SerializeToBinary(packagePath, manifest);
packageHash = HashUtility.FileCRC32(filePath); packageHash = HashUtility.FileCRC32(packagePath);
BuildLogger.Log($"Create package manifest file: {filePath}"); BuildLogger.Log($"Create package manifest file: {packagePath}");
ManifestContext manifestContext = new ManifestContext();
byte[] bytesData = FileUtility.ReadAllBytes(filePath);
manifestContext.Manifest = ManifestTools.DeserializeFromBinary(bytesData);
context.SetContextObject(manifestContext);
} }
// 创建补丁清单哈希文件 // 创建补丁清单哈希文件
@ -101,6 +92,14 @@ namespace YooAsset.Editor
FileUtility.WriteAllText(filePath, buildParameters.PackageVersion); FileUtility.WriteAllText(filePath, buildParameters.PackageVersion);
BuildLogger.Log($"Create package manifest version file: {filePath}"); BuildLogger.Log($"Create package manifest version file: {filePath}");
} }
// 填充上下文
{
ManifestContext manifestContext = new ManifestContext();
byte[] bytesData = FileUtility.ReadAllBytes(packagePath);
manifestContext.Manifest = ManifestTools.DeserializeFromBinary(bytesData);
context.SetContextObject(manifestContext);
}
} }
/// <summary> /// <summary>
@ -192,18 +191,13 @@ namespace YooAsset.Editor
packageAsset.BundleID = GetCachedBundleIndexID(assetInfo.BundleName); packageAsset.BundleID = GetCachedBundleIndexID(assetInfo.BundleName);
} }
#region YOOASSET_LEGACY_DEPENDENCY // 记录资源对象依赖的资源包ID集合
if (manifest.LegacyDependency) // 注意:依赖关系非引擎构建结果里查询!
foreach (var packageAsset in manifest.AssetList)
{ {
// 记录资源对象依赖的资源包ID集合 var mainAssetInfo = packageAsset.TempDataInEditor as BuildAssetInfo;
// 注意:依赖关系非引擎构建结果里查询! packageAsset.DependBundleIDs = GetAssetDependBundleIDs(mainAssetInfo);
foreach (var packageAsset in manifest.AssetList)
{
var mainAssetInfo = packageAsset.TempDataInEditor as BuildAssetInfo;
packageAsset.DependBundleIDs = GetAssetDependBundleIDs(mainAssetInfo);
}
} }
#endregion
} }
/// <summary> /// <summary>
@ -215,33 +209,19 @@ namespace YooAsset.Editor
foreach (var packageBundle in manifest.BundleList) foreach (var packageBundle in manifest.BundleList)
{ {
int mainBundleID = GetCachedBundleIndexID(packageBundle.BundleName); int mainBundleID = GetCachedBundleIndexID(packageBundle.BundleName);
string[] depends = GetBundleDepends(context, packageBundle.BundleName); string[] dependNames = GetBundleDepends(context, packageBundle.BundleName);
List<int> dependIDs = new List<int>(depends.Length); List<int> dependIDs = new List<int>(dependNames.Length);
foreach (var dependBundleName in depends) foreach (var dependName in dependNames)
{ {
int bundleID = GetCachedBundleIndexID(dependBundleName); int dependBundleID = GetCachedBundleIndexID(dependName);
if (bundleID != mainBundleID) if (dependBundleID != mainBundleID)
dependIDs.Add(bundleID); dependIDs.Add(dependBundleID);
}
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) dependIDs.Sort();
{ packageBundle.DependBundleIDs = dependIDs.ToArray();
packageBundle.ReferenceBundleIDs = GetBundleReferenceBundleIDs(manifest, packageBundle);
}
} }
#endregion
} }
/// <summary> /// <summary>
@ -254,41 +234,17 @@ namespace YooAsset.Editor
packageBundle.Tags = Array.Empty<string>(); packageBundle.Tags = Array.Empty<string>();
} }
// YOOASSET_LEGACY_DEPENDENCY // 将主资源的标签信息传染给其依赖的资源包集合
if (manifest.LegacyDependency) foreach (var packageAsset in manifest.AssetList)
{ {
// 将主资源的标签信息传染给其依赖的资源包集合 var assetTags = packageAsset.AssetTags;
foreach (var packageAsset in manifest.AssetList) int bundleID = packageAsset.BundleID;
CacheBundleTags(bundleID, assetTags);
if (packageAsset.DependBundleIDs != null)
{ {
var assetTags = packageAsset.AssetTags; foreach (var dependBundleID in packageAsset.DependBundleIDs)
int bundleID = packageAsset.BundleID;
CacheBundleTags(bundleID, assetTags);
if (packageAsset.DependBundleIDs != null)
{ {
foreach (var dependBundleID in packageAsset.DependBundleIDs) CacheBundleTags(dependBundleID, assetTags);
{
CacheBundleTags(dependBundleID, assetTags);
}
}
}
}
else
{
// 将主资源的标签信息传染给其依赖的资源包集合
foreach (var packageAsset in manifest.AssetList)
{
var assetTags = packageAsset.AssetTags;
int bundleID = packageAsset.BundleID;
CacheBundleTags(bundleID, assetTags);
var packageBundle = manifest.BundleList[bundleID];
if (packageBundle.DependIDs != null)
{
foreach (var dependBundleID in packageBundle.DependIDs)
{
CacheBundleTags(dependBundleID, assetTags);
}
} }
} }
} }
@ -342,26 +298,15 @@ namespace YooAsset.Editor
} }
#region YOOASSET_LEGACY_DEPENDENCY #region YOOASSET_LEGACY_DEPENDENCY
private class DependencyQuery private void ProcessBuiltinBundleDependency(BuildContext context, PackageManifest manifest)
{
private readonly HashSet<int> _dependIDs;
public DependencyQuery(int[] dependIDs)
{
_dependIDs = new HashSet<int>(dependIDs);
}
public bool Contains(int bundleID)
{
return _dependIDs.Contains(bundleID);
}
}
private void ProcessLegacyDependency(BuildContext context, PackageManifest manifest)
{ {
// 注意:如果是可编程构建管线,需要补充内置资源包 // 注意:如果是可编程构建管线,需要补充内置资源包
// 注意:该步骤依赖前面的操作! // 注意:该步骤依赖前面的操作!
var buildResultContext = context.TryGetContextObject<TaskBuilding_SBP.BuildResultContext>(); var buildResultContext = context.TryGetContextObject<TaskBuilding_SBP.BuildResultContext>();
if (buildResultContext != null) if (buildResultContext != null)
{ {
// 注意:初始化资源清单建立引用关系
ManifestTools.InitManifest(manifest);
ProcessBuiltinBundleReference(context, manifest, buildResultContext.BuiltinShadersBundleName); ProcessBuiltinBundleReference(context, manifest, buildResultContext.BuiltinShadersBundleName);
ProcessBuiltinBundleReference(context, manifest, buildResultContext.MonoScriptsBundleName); ProcessBuiltinBundleReference(context, manifest, buildResultContext.MonoScriptsBundleName);
} }
@ -425,26 +370,11 @@ namespace YooAsset.Editor
} }
} }
} }
return result.ToArray();
}
private int[] GetBundleReferenceBundleIDs(PackageManifest manifest, PackageBundle queryBundle)
{
int queryBundleID = GetCachedBundleIndexID(queryBundle.BundleName);
List<int> result = new List<int>();
foreach (var packageBundle in manifest.BundleList)
{
if (packageBundle == queryBundle)
continue;
var dependencyQuery = packageBundle.TempDataInEditor as DependencyQuery; // 排序并返回数据
if (dependencyQuery.Contains(queryBundleID)) List<int> listResult = new List<int>(result);
{ listResult.Sort();
int referenceBundleID = GetCachedBundleIndexID(packageBundle.BundleName); return listResult.ToArray();
if (result.Contains(referenceBundleID) == false)
result.Add(referenceBundleID);
}
}
return result.ToArray();
} }
#endregion #endregion
} }

View File

@ -38,7 +38,6 @@ namespace YooAsset.Editor
buildReport.Summary.IgnoreRuleName = buildMapContext.Command.IgnoreRule.GetType().FullName; buildReport.Summary.IgnoreRuleName = buildMapContext.Command.IgnoreRule.GetType().FullName;
// 构建参数 // 构建参数
buildReport.Summary.LegacyDependency = buildParameters.LegacyDependency;
buildReport.Summary.ClearBuildCacheFiles = buildParameters.ClearBuildCacheFiles; buildReport.Summary.ClearBuildCacheFiles = buildParameters.ClearBuildCacheFiles;
buildReport.Summary.UseAssetDependencyDB = buildParameters.UseAssetDependencyDB; buildReport.Summary.UseAssetDependencyDB = buildParameters.UseAssetDependencyDB;
buildReport.Summary.EnableSharePackRule = buildParameters.EnableSharePackRule; buildReport.Summary.EnableSharePackRule = buildParameters.EnableSharePackRule;
@ -155,8 +154,8 @@ namespace YooAsset.Editor
/// </summary> /// </summary>
private List<string> GetBundleDependBundles(PackageManifest manifest, PackageBundle packageBundle) private List<string> GetBundleDependBundles(PackageManifest manifest, PackageBundle packageBundle)
{ {
List<string> dependBundles = new List<string>(packageBundle.DependIDs.Length); List<string> dependBundles = new List<string>(packageBundle.DependBundleIDs.Length);
foreach (int index in packageBundle.DependIDs) foreach (int index in packageBundle.DependBundleIDs)
{ {
string dependBundleName = manifest.BundleList[index].BundleName; string dependBundleName = manifest.BundleList[index].BundleName;
dependBundles.Add(dependBundleName); dependBundles.Add(dependBundleName);
@ -170,7 +169,7 @@ namespace YooAsset.Editor
/// </summary> /// </summary>
private List<string> GetBundleReferenceBundles(PackageManifest manifest, PackageBundle packageBundle) private List<string> GetBundleReferenceBundles(PackageManifest manifest, PackageBundle packageBundle)
{ {
List<string> referenceBundles = new List<string>(packageBundle.ReferenceBundleIDs.Length); List<string> referenceBundles = new List<string>(packageBundle.ReferenceBundleIDs.Count);
foreach (int index in packageBundle.ReferenceBundleIDs) foreach (int index in packageBundle.ReferenceBundleIDs)
{ {
string dependBundleName = manifest.BundleList[index].BundleName; string dependBundleName = manifest.BundleList[index].BundleName;

View File

@ -37,7 +37,6 @@ namespace YooAsset.Editor
buildParameters.BuildTarget = BuildTarget; buildParameters.BuildTarget = BuildTarget;
buildParameters.PackageName = PackageName; buildParameters.PackageName = PackageName;
buildParameters.PackageVersion = GetPackageVersion(); buildParameters.PackageVersion = GetPackageVersion();
buildParameters.LegacyDependency = false;
buildParameters.EnableSharePackRule = true; buildParameters.EnableSharePackRule = true;
buildParameters.VerifyBuildingResult = true; buildParameters.VerifyBuildingResult = true;
buildParameters.FileNameStyle = fileNameStyle; buildParameters.FileNameStyle = fileNameStyle;

View File

@ -38,7 +38,6 @@ namespace YooAsset.Editor
buildParameters.BuildTarget = BuildTarget; buildParameters.BuildTarget = BuildTarget;
buildParameters.PackageName = PackageName; buildParameters.PackageName = PackageName;
buildParameters.PackageVersion = GetPackageVersion(); buildParameters.PackageVersion = GetPackageVersion();
buildParameters.LegacyDependency = false;
buildParameters.EnableSharePackRule = true; buildParameters.EnableSharePackRule = true;
buildParameters.VerifyBuildingResult = true; buildParameters.VerifyBuildingResult = true;
buildParameters.FileNameStyle = fileNameStyle; buildParameters.FileNameStyle = fileNameStyle;

View File

@ -67,7 +67,6 @@ namespace YooAsset.Editor
public string IgnoreRuleName; public string IgnoreRuleName;
// 构建参数 // 构建参数
public bool LegacyDependency;
public bool ClearBuildCacheFiles; public bool ClearBuildCacheFiles;
public bool UseAssetDependencyDB; public bool UseAssetDependencyDB;
public bool EnableSharePackRule; public bool EnableSharePackRule;

View File

@ -62,7 +62,6 @@ namespace YooAsset.Editor
BindListViewItem(string.Empty, string.Empty); BindListViewItem(string.Empty, string.Empty);
BindListViewHeader("Build Params"); BindListViewHeader("Build Params");
BindListViewItem("Legacy Dependency Mode", $"{buildReport.Summary.LegacyDependency}");
BindListViewItem("Clear Build Cache Files", $"{buildReport.Summary.ClearBuildCacheFiles}"); BindListViewItem("Clear Build Cache Files", $"{buildReport.Summary.ClearBuildCacheFiles}");
BindListViewItem("Use Asset Dependency DB", $"{buildReport.Summary.UseAssetDependencyDB}"); BindListViewItem("Use Asset Dependency DB", $"{buildReport.Summary.UseAssetDependencyDB}");
BindListViewItem("Enable Share Pack Rule", $"{buildReport.Summary.EnableSharePackRule}"); BindListViewItem("Enable Share Pack Rule", $"{buildReport.Summary.EnableSharePackRule}");

View File

@ -16,7 +16,7 @@ namespace YooAsset
/// <summary> /// <summary>
/// 快速启动模式 /// 快速启动模式
/// </summary> /// </summary>
public static bool QuickStartMode = false; public static bool QuickStartMode = true;
/// <summary> /// <summary>
/// 异步操作的最小时间片段 /// 异步操作的最小时间片段

View File

@ -156,10 +156,10 @@ namespace YooAsset
if (RefCount > 0) if (RefCount > 0)
return false; return false;
#region YOOASSET_LEGACY_DEPENDENCY // YOOASSET_LEGACY_DEPENDENCY
// 检查引用链上的资源包是否已经全部销毁 // 检查引用链上的资源包是否已经全部销毁
// 注意:互相引用的资源包无法卸载! // 注意:互相引用的资源包无法卸载!
if (LoadBundleInfo.Bundle.ReferenceBundleIDs.Length > 0) if (LoadBundleInfo.Bundle.ReferenceBundleIDs.Count > 0)
{ {
foreach (var bundleID in LoadBundleInfo.Bundle.ReferenceBundleIDs) foreach (var bundleID in LoadBundleInfo.Bundle.ReferenceBundleIDs)
{ {
@ -167,7 +167,6 @@ namespace YooAsset
return false; return false;
} }
} }
#endregion
return true; return true;
} }

View File

@ -35,7 +35,6 @@ namespace YooAsset
buffer.WriteUTF8(manifest.FileVersion); buffer.WriteUTF8(manifest.FileVersion);
// 写入文件头信息 // 写入文件头信息
buffer.WriteBool(manifest.LegacyDependency);
buffer.WriteBool(manifest.EnableAddressable); buffer.WriteBool(manifest.EnableAddressable);
buffer.WriteBool(manifest.LocationToLower); buffer.WriteBool(manifest.LocationToLower);
buffer.WriteBool(manifest.IncludeAssetGUID); buffer.WriteBool(manifest.IncludeAssetGUID);
@ -71,8 +70,7 @@ namespace YooAsset
buffer.WriteInt64(packageBundle.FileSize); buffer.WriteInt64(packageBundle.FileSize);
buffer.WriteBool(packageBundle.Encrypted); buffer.WriteBool(packageBundle.Encrypted);
buffer.WriteUTF8Array(packageBundle.Tags); buffer.WriteUTF8Array(packageBundle.Tags);
buffer.WriteInt32Array(packageBundle.DependIDs); buffer.WriteInt32Array(packageBundle.DependBundleIDs);
buffer.WriteInt32Array(packageBundle.ReferenceBundleIDs);
} }
// 写入文件流 // 写入文件流
@ -111,7 +109,6 @@ namespace YooAsset
{ {
// 读取文件头信息 // 读取文件头信息
manifest.FileVersion = fileVersion; manifest.FileVersion = fileVersion;
manifest.LegacyDependency = buffer.ReadBool();
manifest.EnableAddressable = buffer.ReadBool(); manifest.EnableAddressable = buffer.ReadBool();
manifest.LocationToLower = buffer.ReadBool(); manifest.LocationToLower = buffer.ReadBool();
manifest.IncludeAssetGUID = buffer.ReadBool(); manifest.IncludeAssetGUID = buffer.ReadBool();
@ -154,8 +151,7 @@ namespace YooAsset
packageBundle.FileSize = buffer.ReadInt64(); packageBundle.FileSize = buffer.ReadInt64();
packageBundle.Encrypted = buffer.ReadBool(); packageBundle.Encrypted = buffer.ReadBool();
packageBundle.Tags = buffer.ReadUTF8Array(); packageBundle.Tags = buffer.ReadUTF8Array();
packageBundle.DependIDs = buffer.ReadInt32Array(); packageBundle.DependBundleIDs = buffer.ReadInt32Array();
packageBundle.ReferenceBundleIDs = buffer.ReadInt32Array();
FillBundleCollection(manifest, packageBundle); FillBundleCollection(manifest, packageBundle);
} }
} }
@ -183,6 +179,17 @@ namespace YooAsset
throw new Exception($"Invalid bundle id : {bundleID} Asset path : {packageAsset.AssetPath}"); throw new Exception($"Invalid bundle id : {bundleID} Asset path : {packageAsset.AssetPath}");
} }
} }
// 填充资源包引用关系
for (int index = 0; index < manifest.BundleList.Count; index++)
{
var sourceBundle = manifest.BundleList[index];
foreach (int dependIndex in sourceBundle.DependBundleIDs)
{
var dependBundle = manifest.BundleList[dependIndex];
dependBundle.AddReferenceBundleID(index);
}
}
} }
public static void CreateAssetCollection(PackageManifest manifest, int assetCount) public static void CreateAssetCollection(PackageManifest manifest, int assetCount)

View File

@ -78,7 +78,6 @@ namespace YooAsset
// 读取文件头信息 // 读取文件头信息
Manifest = new PackageManifest(); Manifest = new PackageManifest();
Manifest.FileVersion = fileVersion; Manifest.FileVersion = fileVersion;
Manifest.LegacyDependency = _buffer.ReadBool();
Manifest.EnableAddressable = _buffer.ReadBool(); Manifest.EnableAddressable = _buffer.ReadBool();
Manifest.LocationToLower = _buffer.ReadBool(); Manifest.LocationToLower = _buffer.ReadBool();
Manifest.IncludeAssetGUID = _buffer.ReadBool(); Manifest.IncludeAssetGUID = _buffer.ReadBool();
@ -147,8 +146,7 @@ namespace YooAsset
packageBundle.FileSize = _buffer.ReadInt64(); packageBundle.FileSize = _buffer.ReadInt64();
packageBundle.Encrypted = _buffer.ReadBool(); packageBundle.Encrypted = _buffer.ReadBool();
packageBundle.Tags = _buffer.ReadUTF8Array(); packageBundle.Tags = _buffer.ReadUTF8Array();
packageBundle.DependIDs = _buffer.ReadInt32Array(); packageBundle.DependBundleIDs = _buffer.ReadInt32Array();
packageBundle.ReferenceBundleIDs = _buffer.ReadInt32Array();
ManifestTools.FillBundleCollection(Manifest, packageBundle); ManifestTools.FillBundleCollection(Manifest, packageBundle);
_packageBundleCount--; _packageBundleCount--;

View File

@ -31,12 +31,11 @@ namespace YooAsset
/// </summary> /// </summary>
public int BundleID; public int BundleID;
#region YOOASSET_LEGACY_DEPENDENCY
/// <summary> /// <summary>
/// 依赖的资源包列表 /// 依赖的资源包ID集合
/// 说明:框架层收集查询结果
/// </summary> /// </summary>
public int[] DependBundleIDs; public int[] DependBundleIDs;
#endregion
/// <summary> /// <summary>
/// 临时数据对象(仅编辑器有效) /// 临时数据对象(仅编辑器有效)

View File

@ -44,16 +44,9 @@ namespace YooAsset
/// <summary> /// <summary>
/// 依赖的资源包ID集合 /// 依赖的资源包ID集合
/// 注意:引擎层构建查询结果
/// </summary> /// </summary>
public int[] DependIDs; public int[] DependBundleIDs;
#region YOOASSET_LEGACY_DEPENDENCY
/// <summary>
/// 引用该资源包的资源包列表
/// 说明:谁引用了该资源包
/// </summary>
public int[] ReferenceBundleIDs;
#endregion
/// <summary> /// <summary>
/// 资源包GUID /// 资源包GUID
@ -66,7 +59,6 @@ namespace YooAsset
/// <summary> /// <summary>
/// 资源包类型 /// 资源包类型
/// </summary> /// </summary>
private int _bundleType;
public int BundleType public int BundleType
{ {
get get
@ -74,11 +66,11 @@ namespace YooAsset
return _bundleType; return _bundleType;
} }
} }
private int _bundleType;
/// <summary> /// <summary>
/// 文件名称 /// 文件名称
/// </summary> /// </summary>
private string _fileName;
public string FileName public string FileName
{ {
get get
@ -88,11 +80,11 @@ namespace YooAsset
return _fileName; return _fileName;
} }
} }
private string _fileName;
/// <summary> /// <summary>
/// 文件后缀名 /// 文件后缀名
/// </summary> /// </summary>
private string _fileExtension;
public string FileExtension public string FileExtension
{ {
get get
@ -102,6 +94,7 @@ namespace YooAsset
return _fileExtension; return _fileExtension;
} }
} }
private string _fileExtension;
/// <summary> /// <summary>
/// 包含的主资源集合 /// 包含的主资源集合
@ -110,10 +103,12 @@ namespace YooAsset
public readonly List<PackageAsset> IncludeMainAssets = new List<PackageAsset>(10); public readonly List<PackageAsset> IncludeMainAssets = new List<PackageAsset>(10);
/// <summary> /// <summary>
/// 临时数据对象(仅编辑器有效) /// 引用该资源包的资源包列表
/// 说明:谁引用了该资源包
/// </summary> /// </summary>
[NonSerialized] [NonSerialized]
public object TempDataInEditor; public readonly List<int> ReferenceBundleIDs = new List<int>(10);
private readonly HashSet<int> _referenceBundleIDs = new HashSet<int>();
public PackageBundle() public PackageBundle()
@ -130,6 +125,19 @@ namespace YooAsset
_fileName = ManifestTools.GetRemoteBundleFileName(manifest.OutputNameStyle, BundleName, _fileExtension, FileHash); _fileName = ManifestTools.GetRemoteBundleFileName(manifest.OutputNameStyle, BundleName, _fileExtension, FileHash);
} }
/// <summary>
/// 添加引用该资源包的资源包ID
/// 说明:谁引用了该资源包
/// </summary>
public void AddReferenceBundleID(int bundleID)
{
if (_referenceBundleIDs.Contains(bundleID) == false)
{
_referenceBundleIDs.Add(bundleID);
ReferenceBundleIDs.Add(bundleID);
}
}
/// <summary> /// <summary>
/// 是否包含Tag /// 是否包含Tag
/// </summary> /// </summary>

View File

@ -17,11 +17,6 @@ namespace YooAsset
/// </summary> /// </summary>
public string FileVersion; public string FileVersion;
/// <summary>
/// 怀旧版依赖模式
/// </summary>
public bool LegacyDependency;
/// <summary> /// <summary>
/// 启用可寻址资源定位 /// 启用可寻址资源定位
/// </summary> /// </summary>
@ -191,35 +186,20 @@ namespace YooAsset
/// </summary> /// </summary>
public PackageBundle[] GetAllDependencies(string assetPath) public PackageBundle[] GetAllDependencies(string assetPath)
{ {
// YOOASSET_LEGACY_DEPENDENCY if (TryGetPackageAsset(assetPath, out PackageAsset packageAsset))
if (LegacyDependency)
{ {
if (TryGetPackageAsset(assetPath, out PackageAsset packageAsset)) List<PackageBundle> result = new List<PackageBundle>(packageAsset.DependBundleIDs.Length);
{ foreach (var dependID in packageAsset.DependBundleIDs)
List<PackageBundle> result = new List<PackageBundle>(packageAsset.DependBundleIDs.Length);
foreach (var dependID in packageAsset.DependBundleIDs)
{
var dependBundle = GetMainPackageBundle(dependID);
result.Add(dependBundle);
}
return result.ToArray();
}
else
{
throw new Exception("Should never get here !");
}
}
else
{
var packageBundle = GetMainPackageBundle(assetPath);
List<PackageBundle> result = new List<PackageBundle>(packageBundle.DependIDs.Length);
foreach (var dependID in packageBundle.DependIDs)
{ {
var dependBundle = GetMainPackageBundle(dependID); var dependBundle = GetMainPackageBundle(dependID);
result.Add(dependBundle); result.Add(dependBundle);
} }
return result.ToArray(); return result.ToArray();
} }
else
{
throw new Exception("Should never get here !");
}
} }
/// <summary> /// <summary>

View File

@ -29,7 +29,7 @@ namespace YooAsset
/// <summary> /// <summary>
/// 清单文件格式版本 /// 清单文件格式版本
/// </summary> /// </summary>
public const string ManifestFileVersion = "2.3.0"; public const string ManifestFileVersion = "2.3.1";
/// <summary> /// <summary>