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)