mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-03-23 11:14:30 +08:00
- 添加UI实例管理策略枚举(AlwaysCreate、Reuse、Pooled) - 在GodotUiFactory中实现缓存池和实例回收机制 - 扩展IUiFactory接口支持预加载、回收和缓存管理功能 - 更新UiRouterBase支持实例策略参数传递 - 重构Pop策略将Hide重命名为Cache以明确语义 - 移除项目文件中的冗余文件夹引用 - 添加日志记录便于调试和监控实例状态 - 实现批量预加载和全量缓存清理功能 - 优化页面替换逻辑支持实例复用和池化管理
55 lines
1.5 KiB
C#
55 lines
1.5 KiB
C#
using GFramework.Core.Abstractions.utility;
|
||
|
||
namespace GFramework.Game.Abstractions.ui;
|
||
|
||
/// <summary>
|
||
/// UI工厂接口,用于创建UI页面实例
|
||
/// </summary>
|
||
public interface IUiFactory : IContextUtility
|
||
{
|
||
/// <summary>
|
||
/// 创建或获取UI页面实例
|
||
/// </summary>
|
||
/// <param name="uiKey">UI标识键</param>
|
||
/// <param name="policy">实例管理策略</param>
|
||
/// <returns>UI页面实例</returns>
|
||
IUiPageBehavior GetOrCreate(string uiKey, UiInstancePolicy policy = UiInstancePolicy.AlwaysCreate);
|
||
|
||
/// <summary>
|
||
/// 仅创建新实例(不使用缓存)
|
||
/// </summary>
|
||
IUiPageBehavior Create(string uiKey);
|
||
|
||
/// <summary>
|
||
/// 预加载UI资源到缓存池
|
||
/// </summary>
|
||
/// <param name="uiKey">UI标识键</param>
|
||
/// <param name="count">预加载数量,默认1个</param>
|
||
void Preload(string uiKey, int count = 1);
|
||
|
||
/// <summary>
|
||
/// 批量预加载
|
||
/// </summary>
|
||
void PreloadBatch(params string[] uiKeys);
|
||
|
||
/// <summary>
|
||
/// 回收实例到缓存池
|
||
/// </summary>
|
||
/// <param name="page">要回收的页面实例</param>
|
||
void Recycle(IUiPageBehavior page);
|
||
|
||
/// <summary>
|
||
/// 清理指定UI的缓存实例
|
||
/// </summary>
|
||
void ClearCache(string uiKey);
|
||
|
||
/// <summary>
|
||
/// 清理所有缓存
|
||
/// </summary>
|
||
void ClearAllCache();
|
||
|
||
/// <summary>
|
||
/// 检查是否有缓存的实例
|
||
/// </summary>
|
||
bool HasCached(string uiKey);
|
||
} |