GFramework/GFramework.Core.Godot/system/IResourceLoadSystem.cs
GwWuYou e2036975ee feat(godot): 新增Godot核心系统架构与资源管理模块
- 添加抽象架构类AbstractArchitecture,提供模型、系统、工具注册框架
- 实现资源目录系统AbstractAssetCatalogSystem,支持场景和资源的注册与查询
- 创建资源工厂系统AbstractResourceFactorySystem,统一管理资源创建与预加载逻辑
- 定义资源标识符结构体SceneId和ResourceId,用于类型安全的资源引用
- 建立资源加载系统ResourceLoadSystem,提供资源加载、缓存和实例化功能
- 设计工厂注册表Registry,支持资源工厂的注册、解析和批量预加载
- 实现系统间依赖注入机制,确保各组件协同工作
- 添加完整的接口定义IAssetCatalogSystem、IResourceFactorySystem和IResourceLoadSystem
2025-12-16 21:38:30 +08:00

69 lines
2.4 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using GFramework.Core.system;
using Godot;
namespace GFramework.Core.Godot.system;
/// <summary>
/// 资源加载系统接口,提供资源和场景的加载、实例化、预加载等功能
/// </summary>
public interface IResourceLoadSystem : ISystem
{
/// <summary>
/// 加载指定路径的资源
/// </summary>
/// <typeparam name="T">资源类型必须继承自Resource</typeparam>
/// <param name="path">资源路径</param>
/// <returns>加载的资源实例</returns>
public T? LoadResource<T>(string path) where T : Resource;
/// <summary>
/// 获取场景加载器,用于延迟加载场景
/// </summary>
/// <param name="path">场景路径</param>
/// <returns>场景的延迟加载包装器</returns>
public Lazy<PackedScene> GetSceneLoader(string path);
/// <summary>
/// 创建指定路径场景的实例
/// </summary>
/// <typeparam name="T">节点类型必须继承自Node</typeparam>
/// <param name="path">场景路径</param>
/// <returns>场景实例化的节点对象</returns>
public T? CreateInstance<T>(string path) where T : Node;
/// <summary>
/// 获取或注册场景工厂函数
/// </summary>
/// <typeparam name="T">节点类型必须继承自Node</typeparam>
/// <param name="id">场景资源标识符</param>
/// <returns>创建场景实例的工厂函数</returns>
public Func<T> GetOrRegisterSceneFactory<T>(AssetCatalog.SceneId id) where T : Node;
/// <summary>
/// 获取或注册资源工厂函数
/// </summary>
/// <typeparam name="T">资源类型必须继承自Node</typeparam>
/// <param name="id">资源标识符</param>
/// <param name="duplicate">是否创建副本默认为false</param>
/// <returns>创建资源实例的工厂函数</returns>
public Func<T> GetOrRegisterResourceFactory<T>(AssetCatalog.ResourceId id, bool duplicate = false)
where T : Resource;
/// <summary>
/// 预加载指定路径的多个资源
/// </summary>
/// <param name="paths">需要预加载的资源路径集合</param>
public void Preload(IEnumerable<string> paths);
/// <summary>
/// 卸载指定路径的资源
/// </summary>
/// <param name="path">需要卸载的资源路径</param>
public void Unload(string path);
/// <summary>
/// 清除所有已加载的资源
/// </summary>
public void ClearAll();
}