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