using System; using System.Collections; using System.Collections.Generic; namespace YooAsset { internal class DependAssetBundles { /// /// 依赖的资源包加载器列表 /// internal readonly List DependList; public DependAssetBundles(List dpendList) { DependList = dpendList; } /// /// 是否已经完成(无论成功或失败) /// public bool IsDone() { foreach (var loader in DependList) { if (loader.IsDone() == false) return false; } return true; } /// /// 依赖资源包是否全部加载成功 /// public bool IsSucceed() { foreach (var loader in DependList) { if (loader.Status != BundleLoaderBase.EStatus.Succeed) { return false; } } return true; } /// /// 获取某个加载失败的资源包错误信息 /// public string GetLastError() { foreach (var loader in DependList) { if (loader.Status != BundleLoaderBase.EStatus.Succeed) { return loader.LastError; } } return string.Empty; } /// /// 主线程等待异步操作完毕 /// public void WaitForAsyncComplete() { foreach (var loader in DependList) { if (loader.IsDone() == false) loader.WaitForAsyncComplete(); } } /// /// 增加引用计数 /// public void Reference() { foreach (var loader in DependList) { loader.Reference(); } } /// /// 减少引用计数 /// public void Release() { foreach (var loader in DependList) { loader.Release(); } } /// /// 获取资源包的调试信息列表 /// internal void GetBundleDebugInfos(List output) { foreach (var loader in DependList) { var bundleInfo = new DebugBundleInfo(); bundleInfo.BundleName = loader.MainBundleInfo.Bundle.BundleName; bundleInfo.RefCount = loader.RefCount; bundleInfo.Status = loader.Status.ToString(); output.Add(bundleInfo); } } } }