diff --git a/Assets/YooAsset/Runtime/ResourcePackage/AssetInfo.cs b/Assets/YooAsset/Runtime/ResourcePackage/AssetInfo.cs
index 3114b314..d5cdb1af 100644
--- a/Assets/YooAsset/Runtime/ResourcePackage/AssetInfo.cs
+++ b/Assets/YooAsset/Runtime/ResourcePackage/AssetInfo.cs
@@ -21,6 +21,13 @@ namespace YooAsset
///
public string Error { private set; get; }
+ ///
+ /// 资源对象
+ ///
+ internal PackageAsset Asset
+ {
+ get { return _packageAsset; }
+ }
///
/// 唯一标识符
diff --git a/Assets/YooAsset/Runtime/ResourcePackage/PackageManifest.cs b/Assets/YooAsset/Runtime/ResourcePackage/PackageManifest.cs
index fbc1e0d5..66454833 100644
--- a/Assets/YooAsset/Runtime/ResourcePackage/PackageManifest.cs
+++ b/Assets/YooAsset/Runtime/ResourcePackage/PackageManifest.cs
@@ -147,22 +147,6 @@ namespace YooAsset
return string.Empty;
}
- ///
- /// 获取主资源包
- /// 注意:传入的资源路径一定合法有效!
- ///
- public PackageBundle GetMainPackageBundle(string assetPath)
- {
- if (AssetDic.TryGetValue(assetPath, out PackageAsset packageAsset))
- {
- return GetMainPackageBundle(packageAsset.BundleID);
- }
- else
- {
- throw new Exception("Should never get here !");
- }
- }
-
///
/// 获取主资源包
/// 注意:传入的资源包ID一定合法有效!
@@ -181,23 +165,17 @@ namespace YooAsset
}
///
- /// 获取资源依赖列表
- /// 注意:传入的资源路径一定合法有效!
+ /// 获取主资源包
+ /// 注意:传入的资源对象一定合法有效!
///
- public PackageBundle[] GetAllDependencies(string assetPath)
+ public PackageBundle GetMainPackageBundle(PackageAsset packageAsset)
{
- if (TryGetPackageAsset(assetPath, out PackageAsset packageAsset))
- {
- return GetAllDependencies(packageAsset);
- }
- else
- {
- throw new Exception("Should never get here !");
- }
+ return GetMainPackageBundle(packageAsset.BundleID);
}
///
/// 获取资源依赖列表
+ /// 注意:传入的资源对象一定合法有效!
///
public PackageBundle[] GetAllDependencies(PackageAsset packageAsset)
{
diff --git a/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/PlayModeImpl.cs b/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/PlayModeImpl.cs
index 388c26e0..9b461fed 100644
--- a/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/PlayModeImpl.cs
+++ b/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/PlayModeImpl.cs
@@ -167,20 +167,20 @@ namespace YooAsset
}
BundleInfo IBundleQuery.GetMainBundleInfo(AssetInfo assetInfo)
{
- if (assetInfo.IsInvalid)
+ if (assetInfo == null || assetInfo.IsInvalid)
throw new Exception("Should never get here !");
// 注意:如果清单里未找到资源包会抛出异常!
- var packageBundle = ActiveManifest.GetMainPackageBundle(assetInfo.AssetPath);
+ var packageBundle = ActiveManifest.GetMainPackageBundle(assetInfo.Asset);
return CreateBundleInfo(packageBundle);
}
BundleInfo[] IBundleQuery.GetDependBundleInfos(AssetInfo assetInfo)
{
- if (assetInfo.IsInvalid)
+ if (assetInfo == null || assetInfo.IsInvalid)
throw new Exception("Should never get here !");
// 注意:如果清单里未找到资源包会抛出异常!
- var depends = ActiveManifest.GetAllDependencies(assetInfo.AssetPath);
+ var depends = ActiveManifest.GetAllDependencies(assetInfo.Asset);
List result = new List(depends.Length);
foreach (var packageBundle in depends)
{
@@ -197,20 +197,20 @@ namespace YooAsset
}
string IBundleQuery.GetMainBundleName(AssetInfo assetInfo)
{
- if (assetInfo.IsInvalid)
+ if (assetInfo == null || assetInfo.IsInvalid)
throw new Exception("Should never get here !");
// 注意:如果清单里未找到资源包会抛出异常!
- var packageBundle = ActiveManifest.GetMainPackageBundle(assetInfo.AssetPath);
+ var packageBundle = ActiveManifest.GetMainPackageBundle(assetInfo.Asset);
return packageBundle.BundleName;
}
string[] IBundleQuery.GetDependBundleNames(AssetInfo assetInfo)
{
- if (assetInfo.IsInvalid)
+ if (assetInfo == null || assetInfo.IsInvalid)
throw new Exception("Should never get here !");
// 注意:如果清单里未找到资源包会抛出异常!
- var depends = ActiveManifest.GetAllDependencies(assetInfo.AssetPath);
+ var depends = ActiveManifest.GetAllDependencies(assetInfo.Asset);
List result = new List(depends.Length);
foreach (var packageBundle in depends)
{
@@ -319,12 +319,12 @@ namespace YooAsset
}
// 注意:如果清单里未找到资源包会抛出异常!
- PackageBundle mainBundle = manifest.GetMainPackageBundle(assetInfo.AssetPath);
+ PackageBundle mainBundle = manifest.GetMainPackageBundle(assetInfo.Asset);
if (checkList.Contains(mainBundle) == false)
checkList.Add(mainBundle);
// 注意:如果清单里未找到资源包会抛出异常!
- PackageBundle[] mainDependBundles = manifest.GetAllDependencies(assetInfo.AssetPath);
+ PackageBundle[] mainDependBundles = manifest.GetAllDependencies(assetInfo.Asset);
foreach (var dependBundle in mainDependBundles)
{
if (checkList.Contains(dependBundle) == false)