support legacy dependency mode

YOOASSET_LEGACY_DEPENDENCY
This commit is contained in:
何冠峰
2025-02-19 18:27:23 +08:00
parent d23c0ba715
commit 576b842368
20 changed files with 317 additions and 34 deletions

View File

@@ -17,6 +17,11 @@ namespace YooAsset
/// </summary>
public string FileVersion;
/// <summary>
/// 旧版依赖模式
/// </summary>
public bool LegacyDependency;
/// <summary>
/// 启用可寻址资源定位
/// </summary>
@@ -155,16 +160,7 @@ namespace YooAsset
{
if (AssetDic.TryGetValue(assetPath, out PackageAsset packageAsset))
{
int bundleID = packageAsset.BundleID;
if (bundleID >= 0 && bundleID < BundleList.Count)
{
var packageBundle = BundleList[bundleID];
return packageBundle;
}
else
{
throw new Exception($"Invalid bundle id : {bundleID} Asset path : {assetPath}");
}
return GetMainPackageBundle(packageAsset.BundleID);
}
else
{
@@ -172,27 +168,58 @@ namespace YooAsset
}
}
/// <summary>
/// 获取主资源包
/// 注意传入的资源包ID一定合法有效
/// </summary>
public PackageBundle GetMainPackageBundle(int bundleID)
{
if (bundleID >= 0 && bundleID < BundleList.Count)
{
var packageBundle = BundleList[bundleID];
return packageBundle;
}
else
{
throw new Exception($"Invalid bundle id : {bundleID}");
}
}
/// <summary>
/// 获取资源依赖列表
/// 注意:传入的资源路径一定合法有效!
/// </summary>
public PackageBundle[] GetAllDependencies(string assetPath)
{
var packageBundle = GetMainPackageBundle(assetPath);
List<PackageBundle> result = new List<PackageBundle>(packageBundle.DependIDs.Length);
foreach (var dependID in packageBundle.DependIDs)
// YOOASSET_LEGACY_DEPENDENCY
if (LegacyDependency)
{
if (dependID >= 0 && dependID < BundleList.Count)
if (TryGetPackageAsset(assetPath, out PackageAsset packageAsset))
{
var dependBundle = BundleList[dependID];
result.Add(dependBundle);
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($"Invalid bundle id : {dependID} Asset path : {assetPath}");
throw new Exception("Should never get here !");
}
}
return result.ToArray();
else
{
var packageBundle = GetMainPackageBundle(assetPath);
List<PackageBundle> result = new List<PackageBundle>(packageBundle.DependIDs.Length);
foreach (var dependID in packageBundle.DependIDs)
{
var dependBundle = GetMainPackageBundle(dependID);
result.Add(dependBundle);
}
return result.ToArray();
}
}
/// <summary>