Files
back_cantanBuilding/Assets/Scripts/UI/Setting/BtnSwitch.cs
2026-05-26 16:15:54 +08:00

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();
}
}