using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
using UnityEngine.EventSystems;
|
using UnityEngine.Events;
|
|
public class ToggleButton : MonoBehaviour
|
{
|
[SerializeField]
|
Button m_Button;
|
public Button button { get { return m_Button; } }
|
|
[SerializeField]
|
bool m_IsOn = false;
|
public bool isOn {
|
get { return m_IsOn; }
|
set {
|
if (m_IsOn != value)
|
{
|
m_IsOn = value;
|
|
selected.SetActive(m_IsOn);
|
if (group != null && m_IsOn)
|
{
|
group.NotifyToggleOn(this);
|
}
|
|
if (onValueChange != null)
|
{
|
onValueChange(m_IsOn);
|
}
|
}
|
}
|
}
|
|
[SerializeField]
|
Image m_Selected;
|
public Image selected { get { return m_Selected; } }
|
|
[SerializeField]
|
ToggleButtonGroup m_Group;
|
public ToggleButtonGroup group {
|
get { return m_Group; }
|
set {
|
if (m_Group != null)
|
{
|
m_Group.UnRegister(this);
|
}
|
m_Group = value;
|
if (m_Group != null)
|
{
|
m_Group.Register(this);
|
}
|
}
|
}
|
|
UnityAction<bool> onValueChange;
|
|
private void OnEnable()
|
{
|
selected.SetActive(m_IsOn);
|
if (group != null)
|
{
|
group.Register(this);
|
if (m_IsOn)
|
{
|
group.NotifyToggleOn(this);
|
}
|
}
|
}
|
|
private void OnDisable()
|
{
|
if (group != null)
|
{
|
group.UnRegister(this);
|
}
|
}
|
|
public void SetListener(UnityAction action )
|
{
|
if (button != null)
|
{
|
button.SetListener(action);
|
}
|
}
|
|
public void AddListener(UnityAction _action)
|
{
|
if (button != null)
|
{
|
button.AddListener(_action);
|
}
|
}
|
|
public void RemoveListener()
|
{
|
if (button != null)
|
{
|
button.RemoveAllListeners();
|
}
|
}
|
|
public void OnValueChange(UnityAction<bool> _action)
|
{
|
onValueChange = _action;
|
}
|
|
public void RemoveOnValueChange()
|
{
|
onValueChange = null;
|
}
|
|
private void OnValidate()
|
{
|
#if UNITY_EDITOR
|
if (selected != null)
|
{
|
selected.SetActive(isOn);
|
}
|
|
if (group != null)
|
{
|
group.NotifyToggleOn(this);
|
}
|
#endif
|
}
|
}
|