2026-04-12 02:11:15 -04:00
|
|
|
|
using System;
|
|
|
|
|
|
using Sirenix.OdinInspector;
|
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
|
|
|
|
namespace SLSUtilities.Feedback
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 轨道上的一个时间片段,包含一个 FeedbackAction 及其时间参数。
|
|
|
|
|
|
/// 曲线控制完全下放到具体 Action 中,Clip 只负责时间调度。
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
[Serializable]
|
|
|
|
|
|
public class FeedbackClip
|
|
|
|
|
|
{
|
2026-04-18 13:57:19 -04:00
|
|
|
|
public string clipName;
|
|
|
|
|
|
|
2026-04-12 02:11:15 -04:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 片段开始时间(秒)。
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
[MinValue(0f)]
|
2026-04-18 13:57:19 -04:00
|
|
|
|
[HorizontalGroup("Time"), LabelWidth(60)]
|
2026-04-12 02:11:15 -04:00
|
|
|
|
public float startTime;
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 片段持续时间(秒)。
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
[MinValue(0.01f)]
|
2026-04-18 13:57:19 -04:00
|
|
|
|
[HorizontalGroup("Time"), LabelWidth(60)]
|
|
|
|
|
|
public float duration = 0.2f;
|
2026-04-12 02:11:15 -04:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 片段结束时间(秒)。
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public float EndTime => startTime + duration;
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 是否覆盖 FeedbackData 的时间设置。
|
|
|
|
|
|
/// </summary>
|
2026-04-18 13:57:19 -04:00
|
|
|
|
[LabelWidth(150)]
|
2026-04-12 02:11:15 -04:00
|
|
|
|
public bool overrideTimeSettings;
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 覆盖用的时间设置,仅在 overrideTimeSettings 为 true 时生效。
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
[ShowIf("overrideTimeSettings")]
|
|
|
|
|
|
public FeedbackTimeSettings timeSettings = new FeedbackTimeSettings();
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 具体反馈动作,Odin 自动显示多态类型选择器。
|
|
|
|
|
|
/// </summary>
|
2026-04-18 13:57:19 -04:00
|
|
|
|
[SerializeReference]
|
2026-04-12 02:11:15 -04:00
|
|
|
|
public FeedbackActionBase action;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|