using System; using UnityEngine; namespace AlicizaX.UI { /// /// Transform 位置状态控制 /// 控制 RectTransform 的锚点位置 /// [Serializable] [ControlerStateName("Transform/Position")] [ControlerStateAttachType(true)] public class TransformPositionState : ControllerStateBase { [SerializeField] private Vector2 _position; [HideInInspector] [SerializeField] private Vector2 _defaultPosition; public override void Init(UXControllerStateRecorder recorder) { if (recorder != null && recorder.TryGetComponent(out var rect)) { _defaultPosition = rect.anchoredPosition; } } public override void Execute(UXControllerStateRecorder recorder, int entryIndex, int selectionIndex) { if (recorder != null && recorder.TryGetComponent(out var rect)) { rect.anchoredPosition = (entryIndex == selectionIndex) ? _position : _defaultPosition; } } public override bool Valid(UXControllerStateRecorder recorder) { return recorder != null && recorder.GetComponent() != null; } public override string GetDescription() { return $"匹配时: 位置={_position}, 默认={_defaultPosition}"; } } }