1、功能描述
通过Toggle实现类似按钮的操作,举例实现三个的点击功能,3个按钮可以实现的是各自之间点击对应实现相应的功能,不能BT1点击之后再次点击BT2,此时我们不能控制BT2进行功能实现时关闭BT1正在实现的功能。这是一个弊端,可能会导致同时运行不同功能,很混乱,用Toggle组件就可以避免这个问题了,同一个Canvas下的toggle可以实现点击其中一个关闭其他Toggle。
2、基本使用步骤
①一个空物体GameObject名字叫做TController
②设置3个Toggle在同一个Canvas中(创建UI下的Toggle组件,这里创建Toggle时会自动创建一个父物体Canvas)
③将Canvas设置为TController的子物体
④在TController上面添加Toggle Group组件,挂上控制函数
⑤每一个Toggle中都设置Group为TController。
3、举例
三个Toggle组件实现Image变颜色
4、实现代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class NewBehaviourScript : MonoBehaviour
{
//声明三个toggle组件
[SerializeField] private Toggle m_toggle1;
[SerializeField] private Toggle m_toggle2;
[SerializeField] private Toggle m_toggle3;
//控制的图像组件
[SerializeField] private Image m_image;
void Start()
{
//给每个Toggle添加上对应的实现函数
m_toggle1.onValueChanged.AddListener(DoChangeImageColor1);
m_toggle2.onValueChanged.AddListener(DoChangeImageColor2);
m_toggle3.onValueChanged.AddListener(DoChangeImageColor3);
}
//具体实现函数的定义
public void DoChangeImageColor1(bool Value)
{
if (Value == true)
{
m_image.color = Color.black;
m_image.gameObject.SetActive(true);
}
}
public void DoChangeImageColor2(bool Value)
{
if (Value == true)
{
m_image.color = Color.white;
m_image.gameObject.SetActive(true);
}
}
public void DoChangeImageColor3(bool Value)
{
if (Value == true)
{
m_image.color = Color.red;
m_image.gameObject.SetActive(true);
}
}
}
5、操作界面:
此处的is on关闭,不然开始是多选的状态
6、运行界面
完美实现
7、致谢
感谢博主的参考学习链接。