DependAssetBundleGrouper.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. namespace YooAsset
  5. {
  6. internal class DependAssetBundleGroup
  7. {
  8. /// <summary>
  9. /// 依赖的资源包加载器列表
  10. /// </summary>
  11. private readonly List<AssetBundleLoaderBase> _dependBundles;
  12. public DependAssetBundleGroup(List<AssetBundleLoaderBase> dpendBundles)
  13. {
  14. _dependBundles = dpendBundles;
  15. }
  16. /// <summary>
  17. /// 是否已经完成(无论成功或失败)
  18. /// </summary>
  19. public bool IsDone()
  20. {
  21. foreach (var loader in _dependBundles)
  22. {
  23. if (loader.IsDone() == false)
  24. return false;
  25. }
  26. return true;
  27. }
  28. /// <summary>
  29. /// 依赖资源包是否全部加载成功
  30. /// </summary>
  31. public bool IsSucceed()
  32. {
  33. foreach (var loader in _dependBundles)
  34. {
  35. if (loader.Status != AssetBundleLoaderBase.EStatus.Succeed)
  36. {
  37. return false;
  38. }
  39. }
  40. return true;
  41. }
  42. /// <summary>
  43. /// 获取某个加载失败的资源包错误信息
  44. /// </summary>
  45. public string GetLastError()
  46. {
  47. foreach (var loader in _dependBundles)
  48. {
  49. if (loader.Status != AssetBundleLoaderBase.EStatus.Succeed)
  50. {
  51. return loader.LastError;
  52. }
  53. }
  54. return string.Empty;
  55. }
  56. /// <summary>
  57. /// 主线程等待异步操作完毕
  58. /// </summary>
  59. public void WaitForAsyncComplete()
  60. {
  61. foreach (var loader in _dependBundles)
  62. {
  63. if (loader.IsDone() == false)
  64. loader.WaitForAsyncComplete();
  65. }
  66. }
  67. /// <summary>
  68. /// 增加引用计数
  69. /// </summary>
  70. public void Reference()
  71. {
  72. foreach (var loader in _dependBundles)
  73. {
  74. loader.Reference();
  75. }
  76. }
  77. /// <summary>
  78. /// 减少引用计数
  79. /// </summary>
  80. public void Release()
  81. {
  82. foreach (var loader in _dependBundles)
  83. {
  84. loader.Release();
  85. }
  86. }
  87. /// <summary>
  88. /// 获取资源包的调试信息列表
  89. /// </summary>
  90. internal void GetBundleDebugInfos(List<DebugBundleInfo> output)
  91. {
  92. foreach (var loader in _dependBundles)
  93. {
  94. var bundleInfo = new DebugBundleInfo();
  95. bundleInfo.BundleName = loader.MainBundleInfo.Bundle.BundleName;
  96. bundleInfo.RefCount = loader.RefCount;
  97. bundleInfo.Status = (int)loader.Status;
  98. output.Add(bundleInfo);
  99. }
  100. }
  101. }
  102. }