using System; using UnityEngine; namespace AlicizaX.UI { /// /// CanvasGroup 透明度状态控制 /// 控制 CanvasGroup 的 Alpha 值 /// [Serializable] [ControlerStateName("CanvasGroup/Alpha")] [ControlerStateAttachType(true)] public class CanvasGroupAlphaState : ControllerStateBase { [SerializeField] [Range(0f, 1f)] private float _alpha = 1f; [HideInInspector] [SerializeField] private float _defaultAlpha; public override void Init(UXControllerStateRecorder recorder) { if (recorder != null && recorder.TryGetComponent(out var canvasGroup)) { _defaultAlpha = canvasGroup.alpha; } } public override void Execute(UXControllerStateRecorder recorder, int entryIndex, int selectionIndex) { if (recorder != null && recorder.TryGetComponent(out var canvasGroup)) { canvasGroup.alpha = (entryIndex == selectionIndex) ? _alpha : _defaultAlpha; } } public override bool Valid(UXControllerStateRecorder recorder) { return recorder != null && recorder.GetComponent() != null; } public override string GetDescription() { return $"匹配时: 透明度={_alpha:F2}, 默认={_defaultAlpha:F2}"; } } }