Files

55 lines
1.3 KiB
C#

using System;
using AibisDream.Utility;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.Localization.Components;
using UnityEngine.UI;
namespace AibisDream
{
[RequireComponent(typeof(Button))]
public class BoolButton : MonoBehaviour
{
private Image _buttonImage;
private Button _button;
public BoolButtonData data;
public Func<bool> getBool;
public UnityEvent OnClick
{
get
{
if (_button == null) _button = GetComponent<Button>();
return _button.onClick;
}
}
public void Awake()
{
_buttonImage = GetComponentInChildren<Image>();
// 监听按钮点击
_button = GetComponent<Button>();
OnClick.AddListener(() => _ = CommonUtil.Delay(100, AfterClick));
}
private void AfterClick()
{
if (_buttonImage)
{
_buttonImage.sprite = getBool.Invoke() ? data.trueSprite : data.falseSprite;
}
}
public void FreshState()
{
AfterClick();
}
}
[Serializable]
public struct BoolButtonData
{
public Sprite trueSprite;
public Sprite falseSprite;
}
}