using GFramework.Game.Abstractions.enums; namespace GFramework.Game.Abstractions.ui; /// /// UI动画策略配置 /// 用于配置UI过渡动画的行为 /// public class UiAnimationPolicy { /// /// 动画类型 /// public UiTransitionAnimation Animation { get; set; } = UiTransitionAnimation.None; /// /// 动画持续时间(秒) /// public float Duration { get; set; } = 0.3f; /// /// 是否阻塞UI切换(等待动画完成) /// public bool BlockTransition { get; set; } = false; /// /// 自定义动画实现(仅当 Animation 为 Custom 时使用) /// public IUiTransition? CustomTransition { get; set; } /// /// 缓动函数(可选,用于调整动画曲线) /// public EasingFunction Easing { get; set; } = EasingFunction.EaseInOut; /// /// 创建默认策略(无动画) /// public static UiAnimationPolicy None => new UiAnimationPolicy { Animation = UiTransitionAnimation.None }; /// /// 创建淡入淡出策略 /// /// 持续时间 /// 是否阻塞 public static UiAnimationPolicy Fade(float duration = 0.3f, bool block = false) => new UiAnimationPolicy { Animation = UiTransitionAnimation.Fade, Duration = duration, BlockTransition = block }; /// /// 创建滑入策略 /// /// 滑动方向 /// 持续时间 /// 是否阻塞 public static UiAnimationPolicy Slide(UiTransitionAnimation direction, float duration = 0.3f, bool block = false) => new UiAnimationPolicy { Animation = direction, Duration = duration, BlockTransition = block }; /// /// 创建缩放策略 /// /// 持续时间 /// 是否阻塞 public static UiAnimationPolicy Scale(float duration = 0.3f, bool block = false) => new UiAnimationPolicy { Animation = UiTransitionAnimation.Scale, Duration = duration, BlockTransition = block }; } /// /// 缓动函数枚举 /// public enum EasingFunction { /// /// 线性 /// Linear, /// /// 缓入 /// EaseIn, /// /// 缓出 /// EaseOut, /// /// 缓入缓出 /// EaseInOut }