Unity(2022.3.41LTS) - UI详细介绍- Toggle(切换)

news2024/12/24 20:54:15

目录

零.简介

一、基本功能

二、属性和设置

三、使用方法

四、优化和注意事项



零.简介

在 Unity 中,Toggle 是一种常用的 UI 组件,用于表示一个布尔值的状态,类似于复选框。

一、基本功能

  1. 状态切换:Toggle 有两种状态,即选中和未选中。用户可以通过点击 Toggle 来切换其状态。
  2. 关联变量:可以将 Toggle 的状态与一个布尔变量关联起来,以便在代码中读取和修改 Toggle 的状态。
  3. 图形显示:Toggle 通常由一个可点击的区域和一个可选的图标或文本组成,用于表示其状态。可以自定义 Toggle 的外观,以满足不同的设计需求。
  4. 创建几个,然后把开关组选到一个
  5. 就可以实现单选的效果

二、属性和设置

  1. Is On:这是 Toggle 的主要属性,表示 Toggle 的当前状态。设置为 true 表示选中状态,设置为 false 表示未选中状态。
  2. Graphic:用于指定 Toggle 的图形显示。可以是一个 Image(图像)组件、Text(文本)组件或自定义的 UI 元素。当 Toggle 状态改变时,图形显示也会相应地改变,以反映当前状态。
  3. Group:如果需要将多个 Toggle 组成一个组,以便在同一时间只能选中其中一个,可以将它们分配到同一个 ToggleGroup 组件中。这样,当一个 Toggle 被选中时,其他 Toggle 在同一组中的状态将自动变为未选中。
  4. On Value Changed:这是一个事件,当 Toggle 的状态发生改变时会触发该事件。可以在代码中为这个事件添加处理程序,以便在 Toggle 状态改变时执行特定的逻辑。
  5. 分别是选中显示内容图片,未选择显示内容图片,和文字显示
  6. 把这俩图片换一下可以很方便的实现游戏UI选择页面功能.

三、使用方法

  1. 创建 Toggle:在 Unity 中,可以通过 GameObject -> UI -> Toggle 菜单创建一个新的 Toggle。创建后,可以在 Inspector 窗口中调整 Toggle 的属性和设置。
  2. 关联变量:如果需要在代码中读取和修改 Toggle 的状态,可以将 Toggle 的 Is On 属性与一个布尔变量关联起来。例如:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class UIController : MonoBehaviour
{
    public Toggle toggle;
    // Start is called before the first frame update
    void Start()
    {
        toggle.onValueChanged.AddListener((on) =>
        {
            if (on)
            {
                Debug.LogError("开关开启");
            }
            else
            {
                Debug.LogError("开关关闭");
            }


        });
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

分组 Toggle:如果需要将多个 Toggle 组成一个组,可以创建一个 ToggleGroup 组件,并将需要分组的 Toggle 添加到该组中。例如:

using UnityEngine;
using UnityEngine.UI;

public class ToggleGroupController : MonoBehaviour
{
    public ToggleGroup myToggleGroup;

    void Start()
    {
        // 创建多个 Toggle
        Toggle toggle1 = CreateToggle("Toggle 1");
        Toggle toggle2 = CreateToggle("Toggle 2");
        Toggle toggle3 = CreateToggle("Toggle 3");

        // 将 Toggle 添加到 ToggleGroup 中
        toggle1.group = myToggleGroup;
        toggle2.group = myToggleGroup;
        toggle3.group = myToggleGroup;
    }

    Toggle CreateToggle(string name)
    {
        // 创建 Toggle
        GameObject toggleObj = new GameObject(name);
        Toggle toggle = toggleObj.AddComponent<Toggle>();

        // 设置 Toggle 的图形显示
        toggle.graphic = CreateGraphic();

        return toggle;
    }

    Graphic CreateGraphic()
    {
        // 创建一个 Image 作为 Toggle 的图形显示
        GameObject graphicObj = new GameObject("Graphic");
        Image graphic = graphicObj.AddComponent<Image>();
        graphic.color = Color.white;

        return graphic;
    }
}

四、优化和注意事项

  1. 性能考虑:如果在场景中有大量的 Toggle,要注意性能优化。避免在每一帧都更新 Toggle 的状态,可以使用事件驱动的方式来处理 Toggle 的状态改变,以减少不必要的计算。
  2. 布局和对齐:在设计 UI 时,要注意 Toggle 的布局和对齐,确保它们在不同的屏幕尺寸和分辨率下都能正确显示。可以使用 Unity 的 UI 布局系统(如 Horizontal Layout Group、Vertical Layout Group、Grid Layout Group 等)来自动排列 Toggle。
  3. 可访问性:如果你的游戏需要考虑可访问性,要确保 Toggle 的状态可以通过键盘、游戏手柄或其他输入设备进行切换。可以使用 Unity 的可访问性系统来测试和优化 UI 的可访问性。

总之,Toggle 是 Unity 中一种常用的 UI 组件,用于表示一个布尔值的状态。通过合理地设置 Toggle 的属性、关联变量和分组 Toggle,可以实现各种用户界面交互效果。在使用 Toggle 时,要注意性能优化、布局和对齐以及可访问性等问题,以确保 UI 的质量和用户体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2112233.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

sqli-lab靶场学习(一)——Less1-4

前言 最近一段时间想切入安全领域&#xff0c;因为本身有做数据库运维工作&#xff0c;就打算从sql注入方向切入。而sql注入除了学习日常书本上的概念外&#xff0c;需要有个实践的环境&#xff0c;刚好看到sqli-lab这个靶场&#xff0c;就打算先用这个来学习。 安装部署 网上…

软考-软件设计师(UML习题)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…

梯度弥散问题及解决方法

梯度弥散问题及解决方法 简要阐述梯度弥散发生的原因以及现象针对不同发生原因有什么解决方案1. 使用ReLU及其变体激活函数2. 权重初始化3. 批量归一化(Batch Normalization)4. 残差连接(Residual Connections)5. 梯度裁剪(Gradient Clipping)简要阐述梯度弥散发生的原因…

挂轨巡检机器人在发电厂与煤矿皮带机场景的应用

一、引言 在发电厂和煤矿等重工业领域&#xff0c;皮带机作为关键设备&#xff0c;其运行状态直接关系到生产效率和安全。然而&#xff0c;传统的人工巡检方式不仅效率低下&#xff0c;还存在安全隐患。随着智能巡检技术的不断发展&#xff0c;杭州旗晟智能科技有限公司推出的…

UE5.3_跟一个插件—Socket.IO Client

网上看到这个插件,挺好! 项目目前也没有忙到不可开交,索性跟着测一下吧: 商城可见,售价72.61人民币! 但是,git上有仓库哦,免费!! 跟着链接先准备起来: Documentation: GitHub - getnamo/SocketIOClient-Unreal: Socket.IO client plugin for the Unreal Engin…

(仓颉) 仓颉语言入门

文章目录 ⭐前言&#x1f520;1 基本概念&#x1f524;Hello World&#x1f524;标识符&#x1f524;内置类型&#x1f524;if表达式&#x1f524;for表达式&#x1f524;while表达式&#x1f524;demo 手动计算Π &#x1f520;2 函数&#x1f524;普通函数&#x1f524;lambd…

【LeetCode】05.最长回文子串

题目要求 解题思路 这一类型&#xff08;回文子串&#xff09;主要有两种解决方法&#xff0c;一种是动态规划&#xff0c;另一种是中心拓展算法。 动态规划&#xff1a; 本质问题就是在i-j区间是不是回文的。这样的话我们在 i 和 j 位置的值相等时&#xff0c;判断如下三种情…

最直接显示 ubuntu 版本号的命令

有时候去看ubuntu版本号&#xff0c;去网上查&#xff0c;很多文章都列出一堆命令&#xff0c;复制命令运行一下&#xff0c;都是打印一些不相关的信息&#xff0c;我只是想看ubuntu版本号而已&#xff0c;能否直接列出版本号就可以了。 有&#xff0c;下面这条命令就是直接的…

STM32+ESP8266+MQTT协议连接阿里云实现温湿度上传

前期步骤: ESP8266下载固件→连接阿里云-CSDN博客 keil文件&#xff1a;大家可以直接下载&#xff0c;也可以在后台私信我获取 《STM32ESP8266MQTT协议连接阿里云实现温湿度上传》 keil文件源码 一、代码修改部分 1、mqtt.h文件中的修改 2、wifi.h文件中的修改 3、main.…

Matplotlib 画布及Figure文字注释添加详解

text() 若要给画布对象或者Figure对象添加注释,常用的为text()方法,分别可以用Figure对象.text()或者画布对象.text()添加文字注释 x, y, s, fontdictNone 上述为text()函数的参数x,y为注释所在的坐标,s为要添加的注释,fontdict为字体样式字典,键包括常见的样式,如‘color’…

微积分直觉:隐含微分

目录 一、介绍 二、梯子问题 三、结论 四、一个额外的例子 一、介绍 让我们想象一个半径为 5 的圆&#xff0c;以 xy 平面为中心。现在假设我们想在点 &#xff08;3,4&#xff09; 处找到一条切线到圆的斜率。 好吧&#xff0c;为了做到这一点&#xff0c;我们必须非常接近圆和…

Qt-布局管理

布局管理 Qt布局系统提供了一种简单而强大的方式&#xff0c;可以自动在窗口组件中排列子窗口组件&#xff0c;以确保它们充分利用可用空间。 介绍 Qt包含了一组布局管理类&#xff0c;用于描述窗口组件在应用程序用户界面中的布局方式。当可用空间发生变化时&#xff0c;这…

Typora 写文章时修改图片保存位置

文章目录 为什么要修改图片位置修改图片位置1.打开偏好设置2.修改路径3.再写文章发现图片已经变成了相对路径 为什么要修改图片位置 默认位置不好找 如何修改呢&#xff1f; 修改图片位置 1.打开偏好设置 文件 > 偏好设置 2.修改路径 图像 > 插入图片时 按照下图…

C# 集合(Collection)

集合&#xff08;Collection&#xff09;类是专门用于数据存储和检索的类。这些类提供了对栈&#xff08;stack&#xff09;、队列&#xff08;queue&#xff09;、列表&#xff08;list&#xff09;和哈希表&#xff08;hash table&#xff09;的支持。大多数集合类实现了相同…

超市售货管理系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;会员管理&#xff0c;供应商信息管理&#xff0c;商品管理&#xff0c;出入库管理&#xff0c;公告管理&#xff0c;轮播图信息 微信端账号功能包括&#xff1a;系统首页&#xff0c;公告&#xff0c;…

Midjourney 随机风格 (Style Random),开启奇幻视觉之旅

作者:老余捞鱼 原创不易,转载请标明出处及原作者。 写在前面的话: Midjourney 最近推出了 "Style Random"(随机风格),这项功能可以让我们使用独特的随机 sref 代码创建图像,从而每次都能获得不同的美感。通过对这些功能的探索和尝试,我发现了一些很棒…

vscode安装使用plantuml插件

使用 VSCode 插件 如果你在 Visual Studio Code 中使用 PlantUML 插件&#xff0c;你可以按照以下步骤生成图片&#xff1a; 安装 PlantUML 插件&#xff1a; 在 VSCode 的扩展市场中搜索并安装 PlantUML 插件。 配置插件&#xff1a; 打开设置&#xff0c;确保插件配置正确。…

【Unity小工具】Image组件宽度、高度自适应

Unity开发中&#xff0c;用同一个Image进行动态加载不同尺寸的图片&#xff0c;在显示上会有形变此工具可以进行Image的宽度、高度自适应 实现原理 获取Image原始尺寸&#xff08;sizeDelta&#xff09;获取图片原始尺寸&#xff08;spriteSizeDelta&#xff09;公式&#xff…

PDF标准详解(四)——图形操作符

上一节&#xff0c;我们了解了PDF中cm操作符&#xff0c;它是定义变换矩阵的。同时也了解到re是创建一个矩阵的。上一节也说过&#xff0c;它用来构建一个路径&#xff0c;具体什么是路径&#xff0c;路径有什么作用呢&#xff1f;这些将在本节给出解释 图形操作符是用来在pdf…

移远通信高端5G智能模组SG560D-NA率先通过PTCRB认证

近日&#xff0c;移远通信宣布&#xff0c;其基于高通QCM6490平台打造的高端5G智能模组SG560D-NA顺利通过PTCRB认证。 在此之前&#xff0c;该模组还获得了美国FCC和加拿大IC认证&#xff0c;这意味着&#xff0c;其已完全满足北美地区的相关标准和规定&#xff0c;能够支持相关…