事件系统简介+Button组件+Toggle简介

embedded/2025/3/18 8:59:44/
UI的事件交互

        Canvas添加

        

        Ignore Reversed Graphics:是否忽略Canvas反向的事件操作

        Blocking Objects:遮挡事件的物体(2D物体【精灵片】,3D物体)

        Blocking Mask:遮挡事件的物体所在的渲染层

        交互元素

        

        Raycast Target:是否接收Canvas的射线

        场景中存在事件系统

        

UI的射线检测会依次检测对象树下的所有元素,有任何射线检测成功,则会反馈到带有事件响应的组件(Button)中

如果想实现射线穿透,可以将前面显示的UI元素的射线检测关闭

Button组件

按钮是否可交互

按钮状切换效果

        动画效果影响的UI元素(Image和Text派生自Graphic)

        效果使用的图片

        普通状态下的颜色

        高亮状态下的颜色(鼠标移入)

        按下状态的颜色(按钮按下)

        失活状态下的颜色(不可交互)

        颜色倍数(RGBA分量乘以倍数)

        切换动画持续时间

是否开启键盘导航

回调代码的结构

委托

相关代码如下:

public delegate void MeDelegate();public class TestDelegate : MonoBehaviour
{//存储委托类型的成员变量public UnityAction Func;void Start(){//委托赋值Func=Success;//调用委托类型的函数Func();}//委托所代表的函数public void Success(){Debug.Log("Success");}
}

回调结构:

相关代码如下:

public class TestCallback:MonoBehaviour{public UnityAction Callback;void Start(){//定义回调函数Callback=Success;//做一些事情for(int i=1;i<=1000;i++){}//完成事情,执行回调函数Callback();}public void Success(){Debug.Log("Success");}
}

按钮添加事件(Unity拖拽)

        添加脚本,内部编写回调函数(挂在场景对象下)        

        找到Button,OnClick事件,添加(脚本所在对象,并选择回调函数)

        运行项目,点击按钮(做一些事情) 

按钮添加事件(代码方式)

public class TestCodeClick : MonoBehaviour
{void Start(){//查找子物体ButtonTransform trf=transform.Find("Button");//获取Button组件Button btn=trf.GetComponent<Button>();//添加按钮点击回调函数btn.onClick.AddListener(Success);//删除按钮点击回调函数btn.onClick.RemoveListener(Success);//删除所有按钮点击回调函数btn.onClick.RemoveAllListeners();//触发调用所有回调函数btn.onClick.Invoke();}public void Success(){Debug.Log("Success");}
}
Toggle组件 

Is On:用于判断当前Toggle是否为开启状态

Toggle Transition:Toggle中对勾切换的动画效果

Graphic:Toggle中对勾的贴图

Group:如果Toggle构成组,则需要将ToggleGroup拖给Toggle,例:

编辑各自Toggle文本后,即可实现组内选项只选其中一种的效果

若想要实现组内Toggle全不选的情况,勾选Group组件的Allow Switch Off即可

Toggle事件处理

        判定当前的开关是否打开

       

        动态传参和静态传参

        

该系列专栏为网课课程笔记,仅用于学习参考。 


http://www.ppmy.cn/embedded/173544.html

相关文章

HTTP+DNS综合实验

一、实验拓扑 二、实验要求 1、学校内部的HTTP客户端可以正常通过域名www.baidu.com访问到百度网络中的HTTP服务器。 2、学校内部网络基于192.168.1.0/24划分&#xff0c;PC1可以正常访问3.3.3.0/24网段&#xff0c;但是PC2不允许。 3、学校内部网络使用静态路由&#xff0c…

Redis系列:深入理解缓存穿透、缓存击穿、缓存雪崩及其解决方案

在使用Redis作为缓存系统时&#xff0c;我们经常会遇到“缓存穿透”、“缓存击穿”和“缓存雪崩”等问题&#xff0c;这些问题一旦出现&#xff0c;会严重影响应用性能甚至造成服务不可用。因此&#xff0c;理解这些问题的产生原因和解决方案非常重要。 本文将全面讲解缓存穿透…

Kubernetes Network Policy使用场景

0. 运维干货分享 软考高级系统架构设计师备考学习资料软考高级网络规划设计师备考学习资料Kubernetes CKA认证学习资料分享信息安全管理体系&#xff08;ISMS&#xff09;制度模板分享免费文档翻译工具(支持word、pdf、ppt、excel)PuTTY中文版安装包MobaXterm中文版安装包ping…

基本不等式

基本不等式&#xff1a; 三种形式&#xff1a; 和积式 x -2xy y 0 (x>0, y>0) x y 2xy x y √2xy 非齐此式 其次式 如下图所示&#xff1a; 不等式的三种解法&#xff1a; 换元法&#xff1a;&#xff08;乘积复杂就换乘积&#xff0c;分母复杂就换分母&#xff…

推理大模型的后训练增强技术-Reasoning模型也进化到2.0了,这次居然学会用工具了

论文题目&#xff1a;START: Self-taught Reasoner with Tools 论文链接&#xff1a;https://arxiv.org/pdf/2503.04625 论文简介 Reasoning模型也进化到2.0了&#xff0c;这次居然学会用工具了&#xff01;✨ 最近有个叫START的方法&#xff0c;让大模型也能学着用工具&#…

消息队列导致数据库数据读取不一致解决方案

我使用的是在数据库添加一个版本字段&#xff0c;记录版本&#xff0c;保证版本一致性&#xff0c;就能保证每次读取的是需要的内容。 具体问题&#xff1a;使用消息队列时&#xff0c;发送方给接收方发送消息&#xff0c;接收方修改了数据库的同时发送方查询数据库&#xff0…

MongoDB 和 Elasticsearch的区别、优缺点对比,以及选型建议

MongoDB 和 Elasticsearch 在存储和搜索方面各有特点&#xff0c;适用于不同的场景。以下是它们的区别、优缺点对比&#xff0c;以及选型建议。 1. 概述 MongoDB&#xff1a;分布式 NoSQL 文档数据库&#xff0c;基于 BSON&#xff08;类似 JSON&#xff09;的文档存储&#x…

app.config.globalProperties

目录 一:基础使用 1、简介 2、使用 3、打印结果: 二:封装 1、创建一个.ts文件(utils/msg.ts) 2、在main.ts中全局注册 3、在页面中使用 4、打印结果 一:基础使用 1、简介 app.config.globalProperties 是 Vue 3 应用实例&#xff08;app&#xff09;的一个配置属性&…