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}";
}
}
}