Toggle开关控件

Toggle控件具有打开和关闭两种状态,多个Toggle控件可以结合Toggle Group形成单选组。

Toggle控件结构和属性

Toggle控件是一个复合结构的游戏对象,默认创建的Toggle控件对象结构如下:

显示效果如图:

其中,Toggle为整个控件的父对象,上面包含控制脚本;Background为开关背景,即图中的白色框;Checkmark即上图中的勾,它会随着开关的开启和关闭状态显示或隐藏;Label为后面的文本。

实际开发中,我们基本不会直接使用上面这个丑丑的对勾开关,我们重点关注Toggle脚本和其上的参数,以此创建我们自己定制化的开关。

  • Target Graphic:开关的背景
  • Graphic:开启关闭时,被显示和隐藏的图片
  • Is On:是否选中,代码中我们也可以读取或设置该字段访问开关状态

开关事件回调

C#代码中,我们可以编写开关状态变化时的回调函数来监听开关的状态,下面是一个例子。

这里我们将Toggle自身作为参数传入回调函数中,方便获取开关的状态。

ToggleDemo.cs

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class ToggleDemo : MonoBehaviour
{
    public void HandleValueChanged(Toggle toggle)
    {
        Debug.Log(toggle.isOn);
    }
}

单选按钮组

单选按钮组能够实现一组开关中,同时只能有一个开关被开启,选择某开关时其余开关的开启状态会被清空。UGUI中创建单选按钮组十分简单,我们可以创建一个父对象,为其赋予Toggle Group组件。

所有子对象的Toggle组件上赋予Group字段,此时所有子对象的状态就会被按钮组维护起来。

不过不幸的是Toggle Group组件似乎并没有提供获取当前开启的开关的方法,我们需要为所有的子开关添加回调函数并监听。

作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。
Copyright © 2017-2024 Gacfox All Rights Reserved.
Build with NextJS | Sitemap