Toggle与Toggle Group结合使用,妙处多多。
因为在同一Toggle Group内只有一个Toggle可以被选中,那么对于我们要创建单选按钮组、游戏的一些开关、暗夜模式、筛选不同显示内容等功能都非常好用。
比如我要实现通过点击不同按钮,从而筛选显示不同内容,可以这样实现:
1、在场景中创建1个Toggle,修改名称为:sword。然后把其中的Checkmark(即Toggle选中后显示的图标)中Image的Color修改为其它颜色。复制两个同样的Toggle,分别修改它们名称为:knife、bow。然后再修改Toggle下文本(Label),名称为:剑、刀、弓箭,调整它们的大小和位置,最终效果如下图:
2、新建一个空物体,修改名称为selectWeapon,再空物体上添加Toggle Group组件,把步骤1中创建的所有Toggle拉到selectWeapon物体,作为它的子物体,如图所示:
3、把添加了Toggle Group组件的物体,拉到所有Toggle中的Group属性中,如图:
4、创建一个Image,作为按钮点击时切换显示不同的内容的视图,如图:
5、通过脚本动态监控Toggle状态的变化:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ToggleController : MonoBehaviour
{
public Toggle[] tog;
public Image img;
public Sprite[] sprs;
// Start is called before the first frame update
void Start()
{
tog[0].onValueChanged.AddListener(delegate {
if(tog[0].isOn)
{
img.sprite = sprs[0];
}
});
tog[1].onValueChanged.AddListener(delegate {
if (tog[1].isOn)
{
img.sprite = sprs[1];
}
});
tog[2].onValueChanged.AddListener(delegate {
if (tog[2].isOn)
{
img.sprite = sprs[2];
}
});
}
// Update is called once per frame
void Update()
{
}
}
其中tog为我们创建的Toggle组,img为按钮切换显示图标,sprs为切换的精灵组。把脚本拉到场景中,如图配置:
至此我们就可以通过不同的Toggle控制显示不同内容了。
Unity Toggle与Toggle Group的妙用