Files
Cielonos/Assets/Scripts/SLSUtilities/Feedback/Base/IFeedbackTimeProvider.cs
SoulliesOfficial 8ad26129b2 Feel滚
2026-04-29 06:16:07 -04:00

66 lines
2.1 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 UnityEngine;
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>
/// 根据时间设置计算实际 deltaTime
/// </summary>
float GetDeltaTime(FeedbackTimeSettings settings);
/// <summary>
/// 根据时间设置计算综合时间缩放系数(无 deltaTime 乘入)。
/// 返回 1.0 表示正常速度。
/// </summary>
float GetTimeScale(FeedbackTimeSettings settings);
}
/// <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;
}
}
}