using GFramework.Core.Abstractions.Utility; namespace GFramework.Core.Abstractions.Resource; /// /// 资源管理器接口,提供资源加载、缓存和卸载功能 /// 线程安全:所有方法都是线程安全的 /// public interface IResourceManager : IUtility { /// /// 获取已加载资源的数量 /// int LoadedResourceCount { get; } /// /// 同步加载资源 /// /// 资源类型 /// 资源路径 /// 资源实例,如果加载失败返回 null T? Load(string path) where T : class; /// /// 异步加载资源 /// /// 资源类型 /// 资源路径 /// 资源实例,如果加载失败返回 null Task LoadAsync(string path) where T : class; /// /// 获取资源句柄(增加引用计数) /// /// 资源类型 /// 资源路径 /// 资源句柄 IResourceHandle? GetHandle(string path) where T : class; /// /// 卸载指定路径的资源 /// /// 资源路径 /// 如果成功卸载返回 true,否则返回 false bool Unload(string path); /// /// 卸载所有资源 /// void UnloadAll(); /// /// 检查资源是否已加载 /// /// 资源路径 /// 如果已加载返回 true,否则返回 false bool IsLoaded(string path); /// /// 注册资源加载器 /// /// 资源类型 /// 资源加载器 void RegisterLoader(IResourceLoader loader) where T : class; /// /// 取消注册资源加载器 /// /// 资源类型 void UnregisterLoader() where T : class; /// /// 预加载资源(加载但不返回) /// /// 资源类型 /// 资源路径 Task PreloadAsync(string path) where T : class; /// /// 获取所有已加载资源的路径 /// IEnumerable GetLoadedResourcePaths(); /// /// 设置资源释放策略 /// /// 资源释放策略 void SetReleaseStrategy(IResourceReleaseStrategy strategy); }