GeWuYou 3362d9456d feat(ui): 实现UI缓存淘汰策略和移除动画相关功能
- 新增CacheEvictionPolicy枚举定义LRU和LFU缓存淘汰策略
- 在GodotUiFactory中实现缓存淘汰机制支持LRU/LFU策略
- 将IUiCacheStatistics接口从IUiFactory中分离到独立文件
- 移除UiAnimationPolicy类及相关动画策略参数配置
- 移除GodotUiTransition类中的UI过渡动画实现
- 移除UiTransitionAnimation枚举类型
- 更新UiRouterBase中路由方法移除动画策略参数
- 重构路由守卫注册方法位置优化代码结构
- 更新UiCacheConfig配置类适配新的缓存策略枚举值
-[skip ci]
2026-01-20 12:27:22 +08:00

62 lines
1.8 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 System;
using GFramework.Game.Abstractions.enums;
namespace GFramework.Game.Abstractions.ui;
/// <summary>
/// UI缓存配置
/// 用于配置UI实例的缓存行为
/// </summary>
public class UiCacheConfig
{
/// <summary>
/// 最大缓存数量
/// </summary>
public int MaxCacheSize { get; set; } = 10;
/// <summary>
/// 缓存淘汰策略
/// </summary>
public CacheEvictionPolicy EvictionPolicy { get; set; } = CacheEvictionPolicy.Lru;
/// <summary>
/// 访问后过期时间可选null 表示不启用)
/// </summary>
public TimeSpan? ExpireAfterAccess { get; set; }
/// <summary>
/// 创建默认配置LRU 策略,最大 10 个实例)
/// </summary>
public static UiCacheConfig Default => new()
{
MaxCacheSize = 10,
EvictionPolicy = CacheEvictionPolicy.Lru,
ExpireAfterAccess = null
};
/// <summary>
/// 创建 LRU 策略配置
/// </summary>
/// <param name="maxSize">最大缓存数量</param>
/// <param name="expireAfter">访问后过期时间</param>
public static UiCacheConfig Lru(int maxSize = 10, TimeSpan? expireAfter = null)
=> new()
{
MaxCacheSize = maxSize,
EvictionPolicy = CacheEvictionPolicy.Lru,
ExpireAfterAccess = expireAfter
};
/// <summary>
/// 创建 LFU 策略配置
/// </summary>
/// <param name="maxSize">最大缓存数量</param>
/// <param name="expireAfter">访问后过期时间</param>
public static UiCacheConfig Lfu(int maxSize = 10, TimeSpan? expireAfter = null)
=> new()
{
MaxCacheSize = maxSize,
EvictionPolicy = CacheEvictionPolicy.Lfu,
ExpireAfterAccess = expireAfter
};
}