66 lines
2.1 KiB
C#
66 lines
2.1 KiB
C#
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;
|
||
}
|
||
}
|
||
} |