48 lines
1.5 KiB
C#
48 lines
1.5 KiB
C#
|
|
using System;
|
||
|
|
using UnityEngine;
|
||
|
|
using UnityEngine.UI;
|
||
|
|
|
||
|
|
namespace AlicizaX.UI
|
||
|
|
{
|
||
|
|
/// <summary>
|
||
|
|
/// Image 精灵图状态控制
|
||
|
|
/// 控制 Image 组件的 Sprite
|
||
|
|
/// </summary>
|
||
|
|
[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<Image>(out var image))
|
||
|
|
{
|
||
|
|
_defaultSprite = image.sprite;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
public override void Execute(UXControllerStateRecorder recorder, int entryIndex, int selectionIndex)
|
||
|
|
{
|
||
|
|
if (recorder != null && recorder.TryGetComponent<Image>(out var image))
|
||
|
|
{
|
||
|
|
image.sprite = (entryIndex == selectionIndex) ? _sprite : _defaultSprite;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
public override bool Valid(UXControllerStateRecorder recorder)
|
||
|
|
{
|
||
|
|
return recorder != null && recorder.GetComponent<Image>() != null;
|
||
|
|
}
|
||
|
|
|
||
|
|
public override string GetDescription()
|
||
|
|
{
|
||
|
|
string matched = _sprite != null ? _sprite.name : "无";
|
||
|
|
string defaultVal = _defaultSprite != null ? _defaultSprite.name : "无";
|
||
|
|
return $"匹配时: {matched}, 默认: {defaultVal}";
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|