using UnityEngine; namespace SLSUtilities.Feedback { /// /// 时间提供者接口,框架层不依赖具体的 TimeManager 实现。 /// 游戏层通过 SelfTimeSubmodule 或适配器类实现此接口,注入到 FeedbackPlayer 中。 /// public interface IFeedbackTimeProvider { /// /// 全局时间缩放值。 /// float GlobalTimeScale { get; } /// /// 分组时间缩放值,由具体实现根据 Fraction 返回对应值。 /// float GroupTimeScale { get; } /// /// 角色本地时间缩放值。 /// float LocalTimeScale { get; } /// /// 根据时间设置计算实际 deltaTime(秒)。 /// float GetDeltaTime(FeedbackTimeSettings settings); /// /// 根据时间设置计算综合时间缩放系数(无 deltaTime 乘入)。 /// 返回 1.0 表示正常速度。 /// float GetTimeScale(FeedbackTimeSettings settings); } /// /// 默认时间提供者。当没有指定 IFeedbackTimeProvider 时使用, /// 返回 unscaledDeltaTime 并且不受任何自定义时间缩放影响。 /// public class DefaultFeedbackTimeProvider : IFeedbackTimeProvider { public float GlobalTimeScale => 1f; public float GroupTimeScale => 1f; public float LocalTimeScale => 1f; public static readonly DefaultFeedbackTimeProvider Instance = new DefaultFeedbackTimeProvider(); /// /// 返回固定时间缩放 1。 /// public float GetTimeScale(FeedbackTimeSettings settings) { return 1f; } /// /// 返回 unscaledDeltaTime,不受任何自定义时间缩放影响。 /// public float GetDeltaTime(FeedbackTimeSettings settings) { return Time.deltaTime; } } }