using System; using UnityEngine; using UnityEngine.UI; namespace AlicizaX.UI { /// /// Image 精灵图状态控制 /// 控制 Image 组件的 Sprite /// [Serializable] [ControlerStateName("Image/Sprite")] [ControlerStateAttachType(true)] public class ImageSpriteState : ControllerStateBase { [SerializeField] private Sprite _sprite; [HideInInspector] [SerializeField] private Sprite _defaultSprite; public override void Init(UXControllerStateRecorder recorder) { if (recorder != null && recorder.TryGetComponent(out var image)) { _defaultSprite = image.sprite; } } public override void Execute(UXControllerStateRecorder recorder, int entryIndex, int selectionIndex) { if (recorder != null && recorder.TryGetComponent(out var image)) { image.sprite = (entryIndex == selectionIndex) ? _sprite : _defaultSprite; } } public override bool Valid(UXControllerStateRecorder recorder) { return recorder != null && recorder.GetComponent() != null; } public override string GetDescription() { string matched = _sprite != null ? _sprite.name : "无"; string defaultVal = _defaultSprite != null ? _defaultSprite.name : "无"; return $"匹配时: {matched}, 默认: {defaultVal}"; } } }