Files
Cielonos/Assets/Scripts/SLSUtilities/Feedback/Base/IFeedbackTimeProvider.cs

66 lines
2.1 KiB
C#
Raw Normal View History

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