unity——Preject3——面板基类

news/2025/1/15 23:43:19 标签: unity, 3d, 游戏引擎, c#, gitee, 学习, 开发语言

目录

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.niftyadmin.cn/n/5824454.html

相关文章

Lesson 109 A good idea

Lesson 109 A good idea 词汇 idea n. 主意&#xff0c;想法 复数&#xff1a;ideas 用法&#xff1a;口语&#xff1a;Good idea! 好主意&#xff01;       Big idea! 高见&#xff01;好主意&#xff01;       Great idea! 好主意       Bad idea! 坏主…

AI工具集网站整理

AI导航网 AI工具集思维导图 AI工具集&#xff1a;https://ai123.cn/ 这里集合了1000的AI写作工具&#xff0c;无论是公文还是小说&#xff0c;都能找到合适的AI助手。amz123 AI导航&#xff1a;https://www.amz123.com/ai 这里有超多AI写作辅助平台&#xff0c;让你的文字创作…

C#补充----反射,特性,迭代器,特殊语法,值类型运用类型。

1.反射&#xff1a;通过type 获取类中的数据。创建实例&#xff0c;并赋值。 《1》获取类的方式 《2》反射的应用 <1>获取类型的所有公共成员 <2>获取构造函数 <3>获取类型的 公共成员变量 <4>获取类型的 公共方法 <5>.获取类型的 属性 <6&g…

Java Web开发进阶——Spring Boot与Thymeleaf模板引擎

Thymeleaf 是一个现代化的、功能强大的 Java 模板引擎&#xff0c;常用于生成 Web 应用程序的视图。它与 Spring Boot 的集成十分方便&#xff0c;并且提供了丰富的功能&#xff0c;能够帮助开发者实现动态渲染数据、处理表单、页面控制等操作。下面&#xff0c;我们将详细探讨…

《深度剖析算法优化:提升效率与精度的秘诀》

想象一下&#xff0c;你面前有一堆杂乱无章的数据&#xff0c;你需要从中找到特定的信息&#xff0c;或者按照一定的规则对这些数据进行排序。又或者&#xff0c;你要为一个物流公司规划最佳的配送路线&#xff0c;以降低成本和提高效率。这些问题看似复杂&#xff0c;但都可以…

自动化解决方案:修复devicedisplaystatusmanager.dll丢失

在Windows操作系统中&#xff0c;DLL&#xff08;动态链接库&#xff09;文件扮演着至关重要的角色。它们为应用程序提供必要的函数和数据&#xff0c;以确保系统的平稳运行。然而&#xff0c;有时我们可能会遇到DLL文件丢失或损坏的问题&#xff0c;比如DeviceDisplayStatusMa…

STM32 C++编程,怎样使用printf函数从串口输出中文字符

在STM32 C编程中&#xff0c;使用printf函数从串口输出中文字符是可行的&#xff0c;但需要注意字符编码的问题。由于STM32的默认编码是ASCII&#xff0c;而中文字符通常属于Unicode编码&#xff08;如UTF-8或GB2312&#xff09;&#xff0c;因此需要对字符编码进行转换和处理。…

JavaScript系列(26)--安全编程实践详解

JavaScript安全编程实践详解 &#x1f512; 今天&#xff0c;让我们深入探讨JavaScript的安全编程实践。在当今的网络环境中&#xff0c;安全性已经成为开发者必须重点关注的领域。 安全编程基础 &#x1f31f; &#x1f4a1; 小知识&#xff1a;JavaScript安全编程涉及多个方…