Files
Cielonos/Assets/Scripts/MainGame/Effects/Feedbacks/Actions/Postprocessing/StrobeFlashAction.cs
SoulliesOfficial 47125f95f4 地图初步
2026-04-30 07:06:38 -04:00

106 lines
3.5 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 System;
using Sirenix.OdinInspector;
using SLSUtilities.Feedback;
using UnityEngine;
namespace Cielonos.MainGame.Effects.Feedback
{
/// <summary>
/// 黑白闪反馈动作,通过 StrobeFlashShakeEvent 触发 StrobeFlashShaker。
/// </summary>
[Serializable]
[FeedbackActionColor(1.0f, 0.9f, 0.3f)]
public class StrobeFlashAction : PostprocessingActionBase
{
public override string DisplayName => "Strobe Flash";
// ─── Frequency ───
[TitleGroup("频率设置")]
[LabelText("频率模式")]
public StrobeFrequencyMode frequencyMode = StrobeFrequencyMode.Constant;
[TitleGroup("频率设置")]
[ShowIf("@frequencyMode == StrobeFrequencyMode.Constant")]
[LabelText("固定频率")]
[Range(0f, 100f)]
public float constantFrequency = 15f;
[TitleGroup("频率设置")]
[ShowIf("@frequencyMode == StrobeFrequencyMode.Curve")]
[LabelText("频率曲线")]
public FloatCurveChannel frequencyCurve = FloatCurveChannel.CreateDefault(remapMax: 30f);
[TitleGroup("频率设置")]
[ShowIf("@frequencyMode == StrobeFrequencyMode.Manual")]
[LabelText("手动曲线Y >= 1 时翻转)")]
public AnimationCurve manualCurve = AnimationCurve.Constant(0f, 1f, 0f);
// ─── Color High ───
[TitleGroup("颜色设置")]
[LabelText("修改高颜色")]
public bool modifyColorHigh;
[TitleGroup("颜色设置")]
[ShowIf("modifyColorHigh")]
[LabelText("使用渐变色")]
public bool useColorHighGradient;
[TitleGroup("颜色设置")]
[ShowIf("@modifyColorHigh && !useColorHighGradient")]
[LabelText("高颜色")]
public Color colorHighConstant = Color.white;
[TitleGroup("颜色设置")]
[ShowIf("@modifyColorHigh && useColorHighGradient")]
[LabelText("高颜色渐变")]
public ColorCurveChannel colorHighCurve = ColorCurveChannel.CreateDefault();
// ─── Color Low ───
[TitleGroup("颜色设置")]
[LabelText("修改低颜色")]
public bool modifyColorLow;
[TitleGroup("颜色设置")]
[ShowIf("modifyColorLow")]
[LabelText("使用渐变色")]
public bool useColorLowGradient;
[TitleGroup("颜色设置")]
[ShowIf("@modifyColorLow && !useColorLowGradient")]
[LabelText("低颜色")]
public Color colorLowConstant = Color.black;
[TitleGroup("颜色设置")]
[ShowIf("@modifyColorLow && useColorLowGradient")]
[LabelText("低颜色渐变")]
public ColorCurveChannel colorLowCurve = ColorCurveChannel.CreateDefault();
protected override void TriggerEvent(FeedbackContext context)
{
StrobeFlashShakeEvent.Trigger(
context,
frequencyMode,
constantFrequency,
frequencyCurve,
manualCurve,
modifyColorHigh, useColorHighGradient, colorHighConstant, colorHighCurve,
modifyColorLow, useColorLowGradient, colorLowConstant, colorLowCurve
);
}
protected override void StopEvent(FeedbackContext context)
{
StrobeFlashShakeEvent.Trigger(context, stop: true);
}
public override bool Validate(out string error)
{
error = null;
return true;
}
}
}