Unity 之 UGUI Toggle组件介绍和简例

Unity 之 UGUI Toggle组件介绍和简例


复合组件Toggle的组成:

111

Toggle:自身挂载Toggle组件,并且对有对子物体的引用。
Background:就是个Image组件,用来当背景图片
Checkmark: 也是个Image组件,用来作为选中和未选中的标识
Label :是一个Text,用来描述这个Toggle组件的用处
个人理解:一个单选框,通过修改子物体的各个属性来实现开发者要实现的效果。

Toggle的属性面板:

组件

Interactable:是否可操作,通过这个属性来控制组件是否可被点击触发
Transition:过渡,系统提供了四种方式。 1
Is On:通过这个属性控制选中和未选中的状态
Toggle Transition:切换过渡
Graphic:标识选中的UI图片
Group:通过这个属性来实现多个Toggle之间的单选2

using UnityEngine;
using UnityEngine.UI;

public class ToggleDemo : MonoBehaviour {

    Toggle toggle;
	void GetAttributes() {
        //是否可用
        toggle.interactable = true;
        //过渡模式
        toggle.transition = Selectable.Transition.ColorTint;
        //选中状态
        toggle.isOn = true; 
        //指定组
        toggle.group = GetComponent<ToggleGroup>();
        //当其值发生变化时,切换的反应方式
        toggle.toggleTransition = Toggle.ToggleTransition.Fade; //ToggleTransition.None
        //当状态被改变时触发
        toggle.onValueChanged.AddListener((bool v) => { OnChanged(v); });
    }
	
    void OnChanged(bool v)
    {
        //当前Toggle组件被触发了,todo sth...
    }
}



  1. “None”:无过渡
    “ColorTint”:颜色过渡 (系统默认,也最常用)
    “SpriteSwap”:图片过渡
    “Animation”:动画过渡 ↩︎

  2. ToggleGroup:也是组件,可被Toggle的Group属性添加,添加同一个ToggleGroup的Toggle之间只能单选。 ToggleGroup还有个属性“Allow Switch Off“”:允许关闭---- 这个属性勾选则添加ToggleGroup的所有Toggle可以都不选,不勾选则必须选一个 ↩︎

### Unity UGUI Toggle 组件使用教程 #### Toggle 基本概念 Toggle 是一种用户界面 (UI) 控件,允许用户通过点击来切换某个状态的开启或关闭。这种控件通常用于表示二元选项的选择情况,在图形界面上表现为一个带有标签的小方框,可以被选中或取消选中。 #### 创建 Toggle 控件 在 Unity 中可以通过拖拽预制体到场景视图快速创建 Toggle 或者直接右键单击 Hierarchy 面板中的空白处并选择 UI -> Toggle 来新建实[^1]。 #### 主要属性解释 - **Transitions**: 定义当交互发生时如何改变视觉效果;支持颜色渐变、动画剪辑以及精灵交换三种方式。 - **Graphic**: 设置此字段可指定哪个图像元素应该响应过渡变化,默认情况下指向内部的 Checkmark 对象。 - **OnValueChanged**: 当切换状态发生变化触发事件列表,开发者可以在脚本里订阅这些回调函数以便执行自定义逻辑处理。 - **Is On**: 表明当前是否处于激活态(true/false),可通过编程手段读取或修改这个布尔变量从而实现动态控制开关行为[^2]。 #### 编程操作示 下面给出一段单的 C# 脚本来展示怎样监听 Toggle 的值变更: ```csharp using UnityEngine; using UnityEngine.UI; public class Example : MonoBehaviour { public Toggle myToggle; // 将其连接至 Inspector 上对应的组件 void Start() { if(myToggle != null){ myToggle.onValueChanged.AddListener(OnChange); } } private void OnDestroy(){ if(myToggle != null){ myToggle.onValueChanged.RemoveListener(OnChange); } } void OnChange(bool isOn){ Debug.Log($"The toggle state has changed to {isOn}"); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈言必行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值