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;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|