mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-03-22 19:03:29 +08:00
- 添加抽象架构类AbstractArchitecture,提供模型、系统、工具注册框架 - 实现资源目录系统AbstractAssetCatalogSystem,支持场景和资源的注册与查询 - 创建资源工厂系统AbstractResourceFactorySystem,统一管理资源创建与预加载逻辑 - 定义资源标识符结构体SceneId和ResourceId,用于类型安全的资源引用 - 建立资源加载系统ResourceLoadSystem,提供资源加载、缓存和实例化功能 - 设计工厂注册表Registry,支持资源工厂的注册、解析和批量预加载 - 实现系统间依赖注入机制,确保各组件协同工作 - 添加完整的接口定义IAssetCatalogSystem、IResourceFactorySystem和IResourceLoadSystem
69 lines
2.4 KiB
C#
69 lines
2.4 KiB
C#
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();
|
||
}
|