BundledProvider.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. namespace YooAsset
  4. {
  5. internal abstract class BundledProvider : ProviderBase
  6. {
  7. protected AssetBundleLoaderBase OwnerBundle { private set; get; }
  8. protected DependAssetBundleGroup DependBundleGroup { private set; get; }
  9. public BundledProvider(string providerGUID, AssetInfo assetInfo) : base(providerGUID, assetInfo)
  10. {
  11. OwnerBundle = AssetSystem.CreateOwnerAssetBundleLoader(assetInfo);
  12. OwnerBundle.Reference();
  13. OwnerBundle.AddProvider(this);
  14. var dependBundles = AssetSystem.CreateDependAssetBundleLoaders(assetInfo);
  15. DependBundleGroup = new DependAssetBundleGroup(dependBundles);
  16. DependBundleGroup.Reference();
  17. }
  18. public override void Destroy()
  19. {
  20. base.Destroy();
  21. // 释放资源包
  22. if (OwnerBundle != null)
  23. {
  24. OwnerBundle.Release();
  25. OwnerBundle = null;
  26. }
  27. if (DependBundleGroup != null)
  28. {
  29. DependBundleGroup.Release();
  30. DependBundleGroup = null;
  31. }
  32. }
  33. /// <summary>
  34. /// 获取资源包的调试信息列表
  35. /// </summary>
  36. internal void GetBundleDebugInfos(List<DebugBundleInfo> output)
  37. {
  38. var bundleInfo = new DebugBundleInfo();
  39. bundleInfo.BundleName = OwnerBundle.MainBundleInfo.Bundle.BundleName;
  40. bundleInfo.RefCount = OwnerBundle.RefCount;
  41. bundleInfo.Status = (int)OwnerBundle.Status;
  42. output.Add(bundleInfo);
  43. DependBundleGroup.GetBundleDebugInfos(output);
  44. }
  45. }
  46. }