Files
YooAsset/Assets/YooAsset/Runtime/AssetSystem/Loader/DependAssetBundleGrouper.cs

112 lines
2.2 KiB
C#
Raw Normal View History

2022-03-01 10:44:12 +08:00
using System;
using System.Collections;
using System.Collections.Generic;
namespace YooAsset
{
2022-03-22 21:18:33 +08:00
internal class DependAssetBundleGrouper
2022-03-01 10:44:12 +08:00
{
/// <summary>
/// 依赖的资源包加载器列表
/// </summary>
private readonly List<AssetBundleLoaderBase> _dependBundles;
2022-03-01 10:44:12 +08:00
2022-03-22 21:18:33 +08:00
public DependAssetBundleGrouper(string assetPath)
2022-03-01 10:44:12 +08:00
{
2022-03-22 21:18:33 +08:00
_dependBundles = AssetSystem.CreateDependAssetBundleLoaders(assetPath);
2022-03-01 10:44:12 +08:00
}
/// <summary>
/// 是否已经完成(无论成功或失败)
/// </summary>
public bool IsDone()
{
foreach (var loader in _dependBundles)
{
if (loader.IsDone() == false)
return false;
}
return true;
}
/// <summary>
/// 依赖资源包是否全部加载成功
/// </summary>
public bool IsSucceed()
{
foreach (var loader in _dependBundles)
{
if (loader.Status != AssetBundleLoaderBase.EStatus.Succeed)
{
return false;
}
}
return true;
}
/// <summary>
/// 获取某个加载失败的资源包错误信息
/// </summary>
public string GetLastError()
{
foreach (var loader in _dependBundles)
{
if (loader.Status != AssetBundleLoaderBase.EStatus.Succeed)
{
return loader.LastError;
}
}
return string.Empty;
}
2022-03-01 10:44:12 +08:00
/// <summary>
/// 主线程等待异步操作完毕
/// </summary>
public void WaitForAsyncComplete()
{
foreach (var loader in _dependBundles)
{
if (loader.IsDone() == false)
loader.WaitForAsyncComplete();
}
}
/// <summary>
/// 增加引用计数
/// </summary>
public void Reference()
{
foreach (var loader in _dependBundles)
{
loader.Reference();
}
}
/// <summary>
/// 减少引用计数
/// </summary>
public void Release()
{
foreach (var loader in _dependBundles)
{
loader.Release();
}
}
/// <summary>
/// 获取资源包的调试信息列表
/// </summary>
2022-03-15 22:29:20 +08:00
internal void GetBundleDebugInfos(List<DebugBundleInfo> output)
2022-03-01 10:44:12 +08:00
{
foreach (var loader in _dependBundles)
{
2022-03-15 22:29:20 +08:00
var bundleInfo = new DebugBundleInfo();
bundleInfo.BundleName = loader.BundleFileInfo.BundleName;
bundleInfo.RefCount = loader.RefCount;
2022-03-23 23:07:21 +08:00
bundleInfo.Status = loader.Status;
2022-03-15 22:29:20 +08:00
output.Add(bundleInfo);
2022-03-01 10:44:12 +08:00
}
}
}
}