Unity开发——CanvasGroup组件介绍和应用

CanvasGroup是Unity中用于控制UI的透明度、交互性和渲染顺序的组件。

一、常用属性的解释

1、alpha控制UI的透明度

类型:float,0.0 ~1.0,

其中 0.0 完全透明,1.0 完全不透明。

通过调整alpha值可以实现UI的淡入淡出效果,可以参考本人的另一篇文章:

Unity功能——设置提示面板的显示与掩藏

2、blocksRaycasts:控制UI是否阻挡射线(Raycasts)

(1)类型:bool,true/false,

(2)true时会阻挡射线,false时不会阻挡射线。

(3)用户不对该UI后面的UI进行射线检测,可将值设置为true;

3、interactable:控制UI是否可交互(如点击、拖动等)

(1)类型:bool,true/false,

(2)true时会响应用户输入,false时将忽略用户输入。

(3)用户不对该UI进行交互,可将值设置为false;

4、ignoreParentGroups:控制UI是否忽略父级CanvasGroup的设置

(1)类型:bool,true/false,

(2)true时将忽略其父级CanvasGroup的alpha和interactable设置,false时会受到父级CanvasGroup的设置影响。

(3)用户要独立控制UI的透明度和交互性,可将值设置为true;

二、组件的alpha属性和UI的alpha属性的异同

1、相同点:

在视觉上是一样的,都可控制UI能不能被用户看到,也仅是控制物体的不透明度;

在交互上,都不会影响UI的交互性,都可正常进行交互事件;

在射线检测上,也都不会改变UI对射线的阻挡特性;

2、不同点:
(1)作用范围不同

直接设置 UI 元素的alpha值,只会影响该单个UI元素的透明度,其父子元素不会受到影响。

而CanvasGroup组件可以控制其所在UI及其所有子对象的透明度。组件所在的UI对象以及它包含的所有子物体(如按钮、文本框等)都会统一改变透明度。

(2)性能影响不同

直接设置单个UI的alpha值,性能开销相对较小,因为只涉及到对单个对象的属性修改。

当使用CanvasGroup时,会影响多个子对象,Unity需要处理更多的渲染和交互状态更新,

性能开销相对较大,尤其是在子对象数量较多的情况下。不过,在大多数正常场景下,这种开销通常是可以接受的。

三、组件的alpha属性和UI的visible属性的异同

1、相同点:

在视觉上是一样的,都可控制UI能不能被用户看到;

2、不同点:
(1)直接设置UI的visible值为false后,UI将完全不响应任何事件;

因为visible为false,背包及其内部子物体都不会被渲染出来,更不会被交互;

(2)而通过设置CanvasGroup组件的alpha值,只是影响视觉效果,不影响事件交互。

即使aplha值为0,对UI及其子物体的拖拽移动,修改等任何事件都会正常执行​

四、(重点)blocksRaycasts和interactable之间的区别和使用场景

下面提到的自身,包括挂载组件的UI以及UI内部的其他子对象。

1、异同

相同:都会影响UI自身的交互;

不同:

Interactable是影响(自身的)输入事件,影响交互状态;

BlocksRaycasts是影响(自身和自身以外后面的UI的)射线事件,影响射线检测状态。

2、使用环境

以背包面板为例,

(1)状态说明如下:

1)仅背包上挂载CanvasGroup组件;

2)可通过键盘输入事件,往背包内部物品格里增减物品

3)背包物品格里的物品背包后面的物品X都能进行鼠标点击移动操作时,

4)点击重叠,通常会优先处理最上层的元素:物品>物品格>背包>物品X

4)由于背包的visible值为false,完全不响应任何事件,

而CanvasGroup组件的alpha值只影响视觉效果,不影响任何用户事件。

若visible为false,无论CanvasGroup设置什么样,物体X怎么也不会被背包遮挡,能被射线检测到,可被鼠标拖动。

故这里默认背包的visible值为true,通过CanvasGroup的alpha值控制背包显示掩藏

(2)情况分析:
1)Interactable为true,BlocksRaycasts为true:

Interactable为true,

表示背包及子物体的交互事件可正常执行,鼠标键盘事件背包及子物体都可被接收。

blocksRaycasts为true:

在检测鼠标点击时,射线会首先命中背包面板,鼠标点击事件会优先被背包面板接收并处理,而不会触发后面物体 X 的点击拖动事件。

无论alpha值是不是为0,背包面板是不是不可见,都会认为背包面板仍然存在并会阻挡射线,交互逻辑上优先响应背包面板

故鼠标点击背包/物品X:

背包面板可被鼠标拖动;背包里的物品也可以正常被鼠标移动;

也可正常通过键盘事件,往内部物品格里进行增减物品;

物体X被背包遮挡,不会被射线检测到,无法被鼠标拖动;

2)Interactable为true,BlocksRaycasts为false:

interactable为true,

表明背包及其子元素,理论上可以接受交互事件;

但blocksRaycasts为false,

背包面板不会阻挡射线检测,射线会直接穿透背包面板,命中其后面的物体X。

无论alpha值是不是为1,背包面板是不是可见,交互逻辑上只响应物体X的射线检测事件,

不过键盘的事件不是由射线检测判断触发,背包里的物品正常接收键盘事件;

故鼠标点击背包/物品X:

背包面板不能被鼠标拖动;背包里的物品无法被鼠标移动;

但可正常通过键盘事件,往内部物品格里进行增减物品;

物体X不会被背包遮挡,可以被射线检测到,被鼠标拖动;

3)Interactable为false,BlocksRaycasts为true:

blocksRaycasts为true

在检测鼠标点击时,射线会首先命中背包面板,鼠标点击事件会优先被背包面板接收并处理,而不会触发后面物体 X 的点击拖动事件。

但Interactable为false

背包及其子元素的交互层面被设置为不可用状态,背包上的任何交互事件都不会被接受触发。

因此背包子物体的键盘事件不会被触发;同时即使背包及其子物体接收了鼠标的射线检测,也不会触发鼠标事件。

故鼠标点击背包/物品X:

背包面板不能被鼠标拖动;背包里的物品无法被鼠标移动;

通过键盘事件,也不能往内部物品格里进行增减物品;

物体X会被背包遮挡,不会被射线检测到,无法被鼠标拖动;

4)Interactable为false,BlocksRaycasts为false:

blocksRaycasts为false

背包面板不会阻挡射线检测,射线会直接穿透背包面板,命中其后面的物体X。交互逻辑上只响应物体X的射线检测事件。

Interactable为false

背包及其子元素的交互层面被设置为不可用状态,背包上的任何交互事件都不会被接受触发。

因此背包和子物体的鼠标事件,以及子物体的键盘事件都不会被触发。

故鼠标点击背包/物品X:

背包面板不能被鼠标拖动;背包里的物品无法被鼠标移动;

通过键盘事件,也不能往内部物品格里进行增减物品;

物体X不会被背包遮挡,可以被射线检测到,被鼠标拖动;

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

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

相关文章

每天五分钟深度学习PyTorch:向更深的卷积神经网络挑战的ResNet

本文重点 ResNet大名鼎鼎,它是由何恺明团队设计的,它获取了2015年ImageNet冠军,它很好的解决了当神经网络层数过多出现的难以训练的问题,它创造性的设计了跳跃连接的方式,使得卷积神经网络的层数出现了大幅度提升,设置可以达到上千层,可以说resnet对于网络模型的设计具…

大模型巅峰对决:DeepSeek vs GPT-4/Claude/PaLM-2 全面对比与核心差异揭秘

文章目录 一、架构设计深度解剖1.1 核心架构对比图谱1.2 动态MoE架构实现架构差异分析表 二、训练策略全面对比2.1 训练数据工程对比2.2 分布式训练代码对比DeepSeek混合并行实现GPT-4 Megatron实现对比 2.3 关键训练参数对比 三、性能表现多维评测3.1 基准测试全景对比3.2 推理…

基于hive的电信离线用户的行为分析系统

标题:基于hive的电信离线用户的行为分析系统 内容:1.摘要 随着电信行业的快速发展,用户行为数据呈现出海量、复杂的特点。为了深入了解用户行为模式,提升电信服务质量和精准营销能力,本研究旨在构建基于 Hive 的电信离线用户行为分析系统。通…

Python使用alembic实现数据库管理

python使用alembic实现数据库管理 环境准备 安装依赖: pip install sqlalchemy alembic项目结构 my_project/ ├── models.py # 定义数据模型 └── alembic/ # 迁移脚本目录(自动生成) 使用步骤: 1. 初始化Alembic环境 …

对WebSocket做一点简单的理解

1.概念 WebSocket 是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接, 并进行双向数据传输。 HTTP协议和WebSocket协议对比: HTTP是短连接 WebSocke…

kali虚拟机登录页面发癫 大写锁定输入不了密码

不知道怎么了 总是发癫 重启切换太麻烦了 还有时候不成功 kali其实可以开启虚拟键盘 如下 就解决的 发癫kali 发癫 发癫

基于Python的商品销量的数据分析及推荐系统

一、研究背景及意义 1.1 研究背景 随着电子商务的快速发展,商品销售数据呈现爆炸式增长。这些数据中蕴含着消费者行为、市场趋势、商品关联等有价值的信息。然而,传统的数据分析方法难以处理海量、多源的销售数据,无法满足现代电商的需求。…

内存泄漏出现的时机和原因,如何避免?

由于时间比较紧张我就不排版了,但是对于每一种可能的情况都会出对应的代码示例以及解决方案代码示例。 内存泄漏可能的原因之一在于用户在动态分配一个内存空间之中,忘记将这部分内容手动释放。例如:(c之中使用new分配内存没有使…

PDF处理控件Aspose.PDF,如何实现企业级PDF处理

PDF处理为何成为开发者的“隐形雷区”? “手动调整200页PDF目录耗时3天,扫描件文字识别错误导致数据混乱,跨平台渲染格式崩坏引发客户投诉……” 作为开发者,你是否也在为PDF处理的复杂细节消耗大量精力?Aspose.PDF凭…

工程化与框架系列(27)--前端音视频处理

前端音视频处理 🎥 引言 前端音视频处理是现代Web应用中的重要组成部分,涉及音频播放、视频处理、流媒体传输等多个方面。本文将深入探讨前端音视频处理的关键技术和最佳实践,帮助开发者构建高质量的多媒体应用。 音视频技术概述 前端音视…

2008-2024年中国手机基站数据/中国移动通信基站数据

2008-2024年中国手机基站数据/中国移动通信基站数据 1、时间:2008-2024年 2、来源:OpenCelliD 3、指标:网络类型、网络代数、移动国家/地区、移动网络代码、区域代码、小区标识、单元标识、坐标经度、坐标纬度、覆盖范围、测量样本数、坐标…

阿里云 ESA 游戏行业解决方案|安全防护、加速、低延时的技术融合

如今,游戏行业正处于蓬勃发展与深刻变革的关键时期。根据中国国际数字娱乐产业大会(CDEC)发布的《2024年 1-6 月中国游戏产业报告》显示 2024 年上半年国内游戏市场实际销售收入达 1472.67 亿元,同比增长 2.08%,游戏用…

C# Unity 唐老狮 No.7 模拟面试题

本文章不作任何商业用途 仅作学习与交流 安利唐老狮与其他老师合作的网站,内有大量免费资源和优质付费资源,我入门就是看唐老师的课程 打好坚实的基础非常非常重要: 全部 - 游习堂 - 唐老狮创立的游戏开发在线学习平台 - Powered By EduSoho 如果你发现了文章内特殊的字体格式,…

electron + vue3 + vite 主进程到渲染进程的单向通信

用示例讲解下主进程到渲染进程的单向通信 初始版本项目结构可参考项目:https://github.com/ylpxzx/electron-forge-project/tree/init_project 主进程到渲染进程(单向) 以Electron官方文档给出的”主进程主动触发动作,发送内容给渲…

【杂谈】-因果性:开启机器学习新纪元?

文章目录 因果性:开启机器学习新纪元?一、机器学习的现状与局限二、因果性的定义与意义(一)日常生活中的因果性案例(二)相关性与因果性的区别 三、现有机器学习模型的困境与因果性的价值(一&…

【Python】omegaconf 用法详解

OmegaConf:从基础到进阶 1. OmegaConf 简介 OmegaConf 是 hydra 背后的核心配置库,提供比 argparse 和 json.load 更灵活的配置管理能力。其主要特性包括: 安装 OmegaConf: pip install omegaconf2. 基本操作 2.1 创建 OmegaC…

如何在 Windows 10 启用卓越性能模式及不同电源计划对比

在使用 powercfg -duplicatescheme 命令启用 “卓越性能模式”(即 Ultimate Performance 模式)之前,有几个前提条件需要注意: 前提条件: 系统版本要求:卓越性能模式 仅在 Windows 10 专业版 或更高版本&a…

请谈谈 HTTP 中的安全策略,如何防范常见的Web攻击(如XSS、CSRF)?

一、Web安全核心防御机制 (一)XSS攻击防御(跨站脚本攻击) 1. 原理与分类 ​存储型XSS:恶意脚本被持久化存储在服务端(如数据库)​反射型XSS:脚本通过URL参数或表单提交触发执行​…

三、0-1搭建springboot+vue3前后端分离-idea新建springboot项目

一、ideal新建项目1 ideal新建项目2 至此父项目就创建好了,下面创建多模块: 填好之后点击create 不删了,直接改包名,看自己喜欢 修改包名和启动类名: 打开ServiceApplication启动类,修改如下: …

从0到1入门RabbitMQ

一、同步调用 优势:时效性强,等待到结果后才返回 缺点: 拓展性差性能下降级联失败问题 二、异步调用 优势: 耦合度低,拓展性强异步调用,无需等待,性能好故障隔离,下游服务故障不影响…