// ============================================================================
|
// IResourcePreloader.cs — 资源预加载服务接口
|
// Feature: 001-async-resource-loading
|
// ============================================================================
|
|
using System;
|
using Cysharp.Threading.Tasks;
|
|
namespace ProjSG.Resource
|
{
|
/// <summary>
|
/// 资源预加载服务接口。
|
/// 按场景/流程组织批量资源预加载。
|
/// </summary>
|
public interface IResourcePreloader
|
{
|
/// <summary>
|
/// 注册预加载配置。
|
/// </summary>
|
void RegisterConfig(PreloadConfig config);
|
|
/// <summary>
|
/// 执行指定预加载配置。
|
/// </summary>
|
UniTask PreloadAsync(string configName, IProgress<float> progress = null);
|
|
/// <summary>
|
/// 按资源标签批量预加载。
|
/// </summary>
|
UniTask PreloadByTagAsync(string tag, IProgress<float> progress = null);
|
|
/// <summary>
|
/// 卸载指定配置的资源(常驻配置不卸载)。
|
/// </summary>
|
void UnloadConfig(string configName);
|
|
/// <summary>
|
/// 检查配置是否已预加载完成。
|
/// </summary>
|
bool IsConfigLoaded(string configName);
|
}
|
|
/// <summary>
|
/// 预加载配置数据。
|
/// </summary>
|
public class PreloadConfig
|
{
|
/// <summary>配置名称</summary>
|
public string ConfigName { get; set; }
|
|
/// <summary>需要预加载的资源地址列表</summary>
|
public string[] Locations { get; set; }
|
|
/// <summary>需要预加载的资源标签列表</summary>
|
public string[] Tags { get; set; }
|
|
/// <summary>是否为常驻资源(不允许卸载)</summary>
|
public bool IsPermanent { get; set; }
|
}
|
}
|