mirror of https://github.com/tuyoogame/YooAsset
update resource package
parent
d9c911d89b
commit
7eacb46555
|
@ -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>
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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}");
|
||||||
|
|
|
@ -16,7 +16,7 @@ namespace YooAsset
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 快速启动模式
|
/// 快速启动模式
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static bool QuickStartMode = false;
|
public static bool QuickStartMode = true;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 异步操作的最小时间片段
|
/// 异步操作的最小时间片段
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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--;
|
||||||
|
|
|
@ -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>
|
||||||
/// 临时数据对象(仅编辑器有效)
|
/// 临时数据对象(仅编辑器有效)
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
Loading…
Reference in New Issue