using UnityEngine.UI;
|
using System;
|
using UnityEngine;
|
using UnityEngine.EventSystems;
|
|
public class ToggleEx : Toggle
|
{
|
[SerializeField]
|
int m_Audio;
|
public int clickAudio {
|
get { return this.m_Audio; }
|
set { this.m_Audio = value; }
|
}
|
|
public GameObject activates;
|
|
public GameObject deactivates;
|
|
protected override void OnEnable()
|
{
|
base.OnEnable();
|
onValueChanged.AddListener(CustomChanged);
|
}
|
|
protected override void OnDisable()
|
{
|
base.OnDisable();
|
onValueChanged.RemoveListener(CustomChanged);
|
}
|
|
protected void CustomChanged(bool isOn)
|
{
|
// 使用 CanvasGroup 控制显隐,避免 SetActive 触发 Canvas 重建
|
if (activates != null)
|
{
|
var canvasGroup = activates.AddMissingComponent<CanvasGroup>();
|
canvasGroup.alpha = isOn ? 1f : 0f;
|
canvasGroup.interactable = isOn;
|
canvasGroup.blocksRaycasts = isOn;
|
}
|
if (deactivates != null)
|
{
|
var canvasGroup = deactivates.AddMissingComponent<CanvasGroup>();
|
canvasGroup.alpha = isOn ? 0f : 1f;
|
canvasGroup.interactable = !isOn;
|
canvasGroup.blocksRaycasts = !isOn;
|
}
|
}
|
|
public override void OnPointerClick(PointerEventData eventData)
|
{
|
base.OnPointerClick(eventData);
|
|
SoundPlayer.Instance.PlayUIAudio(clickAudio);
|
}
|
|
}
|