GQ_Communicate/GQ_URP/GQ/Assets/script/UI/ToggleController.cs

65 lines
1.6 KiB
C#

using UnityEngine;
using UnityEngine.UI;
/// <summary>
/// Toggle检测
/// </summary>
[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<Toggle>();
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;
}
}