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