using UnityEngine; using UnityEngine.UI; /// /// Toggle检测 /// [AddComponentMenu("ToggleController/Toggle检测")] public class ToggleController : MonoBehaviour { private Toggle toggle; public bool canEnterToggleValueChanged = true; // 是否能进入 Toggle 值改变方法 public bool toggleWasOn; // 上一次 Toggle 的状态 public UIToCabinet uIToCabinet; private void Start() { //Debug.Log("版本号 1.1.1"); toggle = GetComponent(); toggleWasOn = toggle.isOn; // 初始化 toggleWasOn 变量 //Debug.Log("版本号 1.1.1"); } public void OnToggleClicked() { // 手动检查条件,决定是否可以进入 Toggle 值改变方法 if (CanEnterToggleValueChanged()) { canEnterToggleValueChanged = true; // 修改 Toggle 的值 toggle.isOn = !toggle.isOn; } else { canEnterToggleValueChanged = false; } } private void Update() { // 在 Update 方法中检测 Toggle 值改变 if (canEnterToggleValueChanged && toggle.isOn != toggleWasOn) { //Debug.Log(gameObject.name + " 值发生改变: " + toggle.isOn); toggleWasOn = toggle.isOn; } } private bool CanEnterToggleValueChanged() { // 在这里进行条件判断,返回 true 或 false // 返回 true 表示满足条件,可以进入 Toggle 值改变方法 // 返回 false 表示不满足条件,不执行 Toggle 值改变方法 return SomeConditionIsTrue(); } private bool SomeConditionIsTrue() { return uIToCabinet.isContinue_menu; } }