55 lines
1.2 KiB
C#
55 lines
1.2 KiB
C#
using System;
|
|
using DG.Tweening;
|
|
using UnityEngine;
|
|
using UnityEngine.Events;
|
|
using UnityEngine.UI;
|
|
|
|
public class BtnSwitch : MonoBehaviour
|
|
{
|
|
public Button btn_on;
|
|
public UnityEvent<bool> onToggle;
|
|
bool isOn;
|
|
public float movePosX = 60;
|
|
private void Awake()
|
|
{
|
|
btn_on = transform.Find("Scrollbar").GetComponent<Button>();
|
|
}
|
|
|
|
private void OnEnable()
|
|
{
|
|
btn_on.onClick.AddListener(() => { OnToggle(!isOn); });
|
|
}
|
|
|
|
void OnToggle(bool _isOn)
|
|
{
|
|
isOn = _isOn;
|
|
btn_on.transform.DOKill();
|
|
btn_on.transform.DOLocalMoveX(isOn ? movePosX : -movePosX, 0.2f);
|
|
onToggle?.Invoke(isOn);
|
|
}
|
|
|
|
public void SetState(bool _isOn)
|
|
{
|
|
isOn = _isOn;
|
|
btn_on.transform.localPosition = new Vector3(isOn ? movePosX : -movePosX, 0, 0);
|
|
}
|
|
|
|
public void SetStateSmooth(bool _isOn)
|
|
{
|
|
isOn = _isOn;
|
|
btn_on.transform.DOKill();
|
|
btn_on.transform.DOLocalMoveX(isOn ? movePosX : -movePosX, 0.3f);
|
|
}
|
|
|
|
public void OverrideListener(Action<bool> action)
|
|
{
|
|
btn_on.onClick.RemoveAllListeners();
|
|
btn_on.onClick.AddListener(() => { action(isOn); });
|
|
}
|
|
|
|
void OnDestroy()
|
|
{
|
|
btn_on.onClick.RemoveAllListeners();
|
|
}
|
|
}
|