using GFramework.Core.Abstractions.system; using GFramework.Game.Abstractions.assets; using Godot; namespace GFramework.Godot.assets; /// /// 资源加载系统接口,提供资源和场景的加载、实例化、预加载等功能 /// public interface IResourceLoadSystem : ISystem { /// /// 加载指定路径的资源 /// /// 资源类型,必须继承自Resource /// 资源路径 /// 加载的资源实例 public T? LoadResource(string path) where T : Resource; /// /// 获取场景加载器,用于延迟加载场景 /// /// 场景路径 /// 场景的延迟加载包装器 public Lazy GetSceneLoader(string path); /// /// 创建指定路径场景的实例 /// /// 节点类型,必须继承自Node /// 场景路径 /// 场景实例化的节点对象 public T? CreateInstance(string path) where T : Node; /// /// 获取或注册游戏单位工厂函数 /// /// 节点类型,必须继承自Node /// 场景资源标识符 /// 创建场景实例的工厂函数 Func GetOrRegisterGameUnitFactory( AssetCatalog.SceneUnitId id ) where T : Node; /// /// 获取或注册模板资源工厂函数 /// /// 节点类型,必须继承自Node /// 模板资源标识符 /// 创建模板实例的工厂函数 Func GetOrRegisterTemplateFactory( AssetCatalog.ScenePageId id ) where T : Node; /// /// 获取或注册通用资产工厂函数 /// /// 资源类型,必须继承自Resource /// 资产资源标识符 /// 是否对原始资源进行复制操作,默认为false /// 创建资产实例的工厂函数 Func GetOrRegisterAssetFactory( AssetCatalog.AssetId id, bool duplicate = false ) where T : Resource; /// /// 预加载指定路径的多个资源 /// /// 需要预加载的资源路径集合 public void Preload(IEnumerable paths); /// /// 卸载指定路径的资源 /// /// 需要卸载的资源路径 public void Unload(string path); /// /// 清除所有已加载的资源 /// public void ClearAll(); }