45 lines
932 B
C#
45 lines
932 B
C#
using System;
|
|
using UnityEngine;
|
|
using UnityEngine.Events;
|
|
using UnityEngine.UI;
|
|
|
|
[RequireComponent(typeof(Button))]
|
|
public class ToggleButton : MonoBehaviour
|
|
{
|
|
[SerializeField]
|
|
public ToggleSpriteData[] toggleSpriteData;
|
|
|
|
public bool isOn = false;
|
|
|
|
Button btn;
|
|
|
|
public UnityEvent<bool> onToggleValueChanged = new UnityEvent<bool>();
|
|
void Start()
|
|
{
|
|
btn = GetComponent<Button>();
|
|
btn.onClick.AddListener(OnClick);
|
|
}
|
|
|
|
void OnClick()
|
|
{
|
|
SetIsOn(!isOn);
|
|
}
|
|
|
|
public void SetIsOn(bool isOn)
|
|
{
|
|
this.isOn = isOn;
|
|
foreach (var spriteData in toggleSpriteData)
|
|
{
|
|
spriteData.target.sprite = isOn ? spriteData.onSprite : spriteData.offSprite;
|
|
}
|
|
onToggleValueChanged.Invoke(isOn);
|
|
}
|
|
}
|
|
|
|
[Serializable]
|
|
public class ToggleSpriteData{
|
|
public Image target;
|
|
public Sprite onSprite;
|
|
public Sprite offSprite;
|
|
}
|