unity——Preject3——面板基类

目录

1.Canvas Group

Canvas Group 的功能

Canvas Group 的常见用途

如何使用 Canvas Group

2.代码

 3.代码分析

类分析:BasePanel

功能

作用

实际应用

代码解析:hideCallBack?.Invoke();

语法知识点

作用

虚函数(virtual)和抽象类(abstract)的作用与区别

虚函数(virtual)

抽象类(abstract)

在 BasePanel 中的应用

总结

4.抽象类

抽象类的实际应用场景

总结


1.Canvas Group

Canvas Group 是 Unity 中用于控制 UI 元素组的一种组件。它可以同时影响一组 UI 元素的某些属性,而不需要逐个修改每个元素。Canvas Group 通常用于管理 UI 元素的可见性、交互性和透明度等。

Canvas Group 的功能

Canvas Group 提供了以下主要功能:

  1. Alpha(透明度)

    • 控制组内所有 UI 元素的整体透明度。

    • 值为 1 时完全不透明,值为 0 时完全透明。

    • 适用于淡入淡出效果。

  2. Interactable(可交互性)

    • 控制组内所有 UI 元素是否可以交互(如按钮是否可点击)。

    • 如果设置为 false,组内的所有交互元素(如按钮、输入框等)将不可用。

  3. Blocks Raycasts(阻挡射线检测)

    • 控制组内所有 UI 元素是否阻挡射线检测(用于检测鼠标点击或触摸)。

    • 如果设置为 false,UI 元素将不会响应点击事件,即使它们可见。

  4. Ignore Parent Groups(忽略父级 Canvas Group)

    • 如果启用,当前 Canvas Group 将忽略父级 Canvas Group 的设置。

    • 默认情况下,子对象的 Canvas Group 会继承父对象的设置。


Canvas Group 的常见用途

  1. UI 元素的淡入淡出

    • 通过调整 Alpha 值,可以实现 UI 元素的淡入淡出效果。

  2. 禁用一组 UI 元素

    • 通过设置 Interactable 为 false,可以快速禁用一组 UI 元素的交互功能。

  3. 隐藏 UI 元素但保留布局

    • 通过设置 Alpha 为 0 并禁用 Blocks Raycasts,可以隐藏 UI 元素但仍保留它们在布局中的位置。

  4. 嵌套 UI 组的管理

    • 在复杂的 UI 结构中,可以使用多个 Canvas Group 分层管理 UI 元素的交互性和可见性。

如何使用 Canvas Group

  1. 添加 Canvas Group 组件

    • 在 Unity 编辑器中,选择一个 UI 元素(如 Panel 或 Button)。

    • 点击 Add Component,搜索并添加 Canvas Group

  2. 通过代码控制 Canvas Group

    • 可以通过脚本动态修改 Canvas Group 的属性。例如:

      CanvasGroup canvasGroup = GetComponent<CanvasGroup>();
      canvasGroup.alpha = 0.5f; // 设置透明度
      canvasGroup.interactable = false; // 禁用交互
      canvasGroup.blocksRaycasts = false; // 禁用射线检测

2.代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;// 面板基类
public abstract class BasePanel : MonoBehaviour
{//控制面板透明度组件private CanvasGroup canvasGroup;//淡入淡出的速度private float alphaSpeed = 10;//当前是隐藏还是显示public bool isShow = false;//当界面隐藏完毕后想要做的事情private UnityAction hideCallBack = 

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

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

相关文章

Windows service运行Django项目

系统&#xff1a;Windows Service 软件&#xff1a;nssm&#xff0c;nginx 配置Django项目 1、把Django项目的静态文件整理到staticfiles文件夹中 注&#xff1a;settings中的设置 STATIC_URL /static/ STATIC_ROOT os.path.join(BASE_DIR, staticfiles/) STATICFILES_DI…

SQL面试题1:连续登陆问题

引言 场景介绍&#xff1a; 许多互联网平台为了提高用户的参与度和忠诚度&#xff0c;会推出各种连续登录奖励机制。例如&#xff0c;游戏平台会给连续登录的玩家发放游戏道具、金币等奖励&#xff1b;学习类 APP 会为连续登录学习的用户提供积分&#xff0c;积分可兑换课程或…

【大数据】机器学习-----线性模型

一、线性模型基本形式 线性模型旨在通过线性组合输入特征来预测输出。其一般形式为&#xff1a; 其中&#xff1a; x ( x 1 , x 2 , ⋯ , x d ) \mathbf{x}(x_1,x_2,\cdots,x_d) x(x1​,x2​,⋯,xd​) 是输入特征向量&#xff0c;包含 d d d 个特征。 w ( w 1 , w 2 , ⋯ ,…

OpenCV基础:矩阵的创建、检索与赋值

本文主要是介绍如何使用numpy进行矩阵的创建&#xff0c;以及从矩阵中读取数据&#xff0c;修改矩阵数据。 创建矩阵 import numpy as npa np.array([1,2,3]) b np.array([[1,2,3],[4,5,6]]) #print(a) #print(b)# 创建全0数组 eros矩阵 c np.zeros((8,8), np.uint8) #prin…

(蓝桥杯)二维数组前缀和典型例题——子矩阵求和

题目描述 小 A 同学有着很强的计算能力&#xff0c;张老师为了检验小 AA同学的计算能力&#xff0c;写了一个 n 行 m 列的矩阵数列。 张老师问了小 A 同学 k 个问题&#xff0c;每个问题会先告知小 A 同学 4 个数 x1,y1,x2,y2画出一个子矩阵&#xff0c;张老师请小 A同学计算出…

Node.js - HTTP

1. HTTP请求 HTTP&#xff08;Hypertext Transfer Protocol&#xff0c;超文本传输协议&#xff09;是客户端和服务器之间通信的基础协议。HTTP 请求是由客户端&#xff08;通常是浏览器、手机应用或其他网络工具&#xff09;发送给服务器的消息&#xff0c;用来请求资源或执行…

[读书日志]8051软核处理器设计实战(基于FPGA)第七篇:8051软核处理器的测试(verilog+C)

6. 8051软核处理器的验证和使用 为了充分测试8051的性能&#xff0c;我们需要测试每一条指令。在HELLO文件夹中存放了整个测试的C语言工程文件。主函数存放在指令被分为五大类&#xff0c;和上面一样。 打开后是这样的文件结构。HELLO.c是主文件&#xff0c;这是里面的代码&am…

深入浅出 Android AES 加密解密:从理论到实战

深入浅出 Android AES 加密解密&#xff1a;从理论到实战 在现代移动应用中&#xff0c;数据安全是不可忽视的一环。无论是用户隐私保护&#xff0c;还是敏感信息的存储与传输&#xff0c;加密技术都扮演着重要角色。本文将以 AES&#xff08;Advanced Encryption Standard&am…

IDEA编译器集成Maven环境以及项目的创建(2)

选择&#xff1a;“File” ---> "Othoer Setting" --> "Settings for New Projects..." --->搜索“Maven” 新建项目 利用maven命令去编译这个项目 利用maven去打包

Open FPV VTX开源之默认MAVLink设置

Open FPV VTX开源之默认MAVLink设置 1. 源由2. 准备3. 连接4. 安装5. 配置6. 测试6.1 启动wfb-ng服务6.2 启动wfb-ng监测6.3 启动QGroundControl6.4 观察测试结果 7. 总结8. 参考资料9. 补充9.1 telemetry_tx异常9.2 DEBUG串口部分乱码9.3 PixelPilot软件问题 1. 源由 飞控图传…

gesp(C++五级)(4)洛谷:B3872:[GESP202309 五级] 巧夺大奖

gesp(C五级)&#xff08;4&#xff09;洛谷&#xff1a;B3872&#xff1a;[GESP202309 五级] 巧夺大奖 题目描述 小明参加了一个巧夺大奖的游戏节目。主持人宣布了游戏规则&#xff1a; 游戏分为 n n n 个时间段&#xff0c;参加者每个时间段可以选择一个小游戏。 游戏中共有…

像JSONDecodeError: Extra data: line 2 column 1 (char 134)这样的问题怎么解决

问题介绍 今天处理返回的 JSON 的时候&#xff0c;出现了下面这样的问题&#xff1a; 处理这种问题的时候&#xff0c;首先你要看一下当前的字符串格式是啥样的&#xff0c;比如我查看后发现是下面这样的&#xff1a; 会发现这个字符串中间没有逗号&#xff0c;也就是此时的J…

道旅科技借助云消息队列 Kafka 版加速旅游大数据创新发展

作者&#xff1a;寒空、横槊、娜米、公仪 道旅科技&#xff1a;科技驱动&#xff0c;引领全球旅游分销服务 道旅科技 &#xff08;https://www.didatravel.com/home&#xff09; 成立于 2012 年&#xff0c;总部位于中国深圳&#xff0c;是一家以科技驱动的全球酒店资源批发商…

导出文件,能够导出但是文件打不开

背景&#xff1a; 在项目开发中&#xff0c;对于列表的查询&#xff0c;而后会有导出功能&#xff0c;这里导出的是一个excell表格。实现了两种&#xff0c;1.导出的文件&#xff0c;命名是前端传输过去的&#xff1b;2.导出的文件&#xff0c;命名是根据后端返回的文件名获取的…

ISP各模块功能介绍

--------声明&#xff0c;本文为转载整理------- ISP各个模块功能介绍&#xff1a; 各模块前后效果对比&#xff1a; 黑电平补偿&#xff08;BLC&#xff09; 在理想情况下&#xff0c;没有光照射的像素点其响应值应为0。但是&#xff0c;由于杂质、受热等其它原因的影响&…

dockerfile实现lnmp

dockerfile实现lnmp 自定义镜像实现整个架构 (基础镜像centos7) nginx cd /opt mkdir nginx mysql php vim Dockerfile docker network create --subnet172.111.0.0/16 mynetwork #创建自定义网段 docker run -itd --name nginx -p 80:80 --cpu-quota 20000 -m 512m -v /op…

DeepSeek-V3技术报告

摘要 https://arxiv.org/pdf/2412.19437v1 我们介绍DeepSeek-V3&#xff0c;这是一个强大的混合专家&#xff08;MoE&#xff09;语言模型&#xff0c;具有6710亿个总参数&#xff0c;每个token激活37亿个参数。为了实现高效推理和经济实惠的训练&#xff0c;DeepSeek-V3采用了…

【spring mvc】文件上传、下载

文件上传&#xff0c;存储至本地目录中 一、代码1、工具类&#xff08;敏感后缀过滤&#xff09;2、文件上传&#xff0c;存储至本地3、文件下载 二、效果演示1、上传1.1、postMan 请求1.2、上传效果 2、下载2.1、下载效果 一、代码 1、工具类&#xff08;敏感后缀过滤&#x…

CryptoMamba:利用状态空间模型实现精确的比特币价格预测

“CryptoMamba: Leveraging State Space Models for Accurate Bitcoin Price Prediction” 论文地址&#xff1a;https://arxiv.org/pdf/2501.01010 Github地址&#xff1a;https://github.com/MShahabSepehri/CryptoMamba 摘要 预测比特币价格由于市场的高波动性和复杂的非线…

dockerfile2.0

dockerfile实现lnmp nginx centos7 mysql centos7 php centos7 自定义镜像来实现整个架构 cd /opt mkdir nginx mysql php cd nginx 拖入nginx和wordpress vim Dockerfile vim nginx.conf ↓ worker_processes 1; events {worker_connections 1024; } http {include …