目录
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 提供了以下主要功能:
-
Alpha(透明度)
-
控制组内所有 UI 元素的整体透明度。
-
值为
1
时完全不透明,值为0
时完全透明。 -
适用于淡入淡出效果。
-
-
Interactable(可交互性)
-
控制组内所有 UI 元素是否可以交互(如按钮是否可点击)。
-
如果设置为
false
,组内的所有交互元素(如按钮、输入框等)将不可用。
-
-
Blocks Raycasts(阻挡射线检测)
-
控制组内所有 UI 元素是否阻挡射线检测(用于检测鼠标点击或触摸)。
-
如果设置为
false
,UI 元素将不会响应点击事件,即使它们可见。
-
-
Ignore Parent Groups(忽略父级 Canvas Group)
-
如果启用,当前 Canvas Group 将忽略父级 Canvas Group 的设置。
-
默认情况下,子对象的 Canvas Group 会继承父对象的设置。
-
Canvas Group 的常见用途
-
UI 元素的淡入淡出
-
通过调整
Alpha
值,可以实现 UI 元素的淡入淡出效果。
-
-
禁用一组 UI 元素
-
通过设置
Interactable
为false
,可以快速禁用一组 UI 元素的交互功能。
-
-
隐藏 UI 元素但保留布局
-
通过设置
Alpha
为0
并禁用Blocks Raycasts
,可以隐藏 UI 元素但仍保留它们在布局中的位置。
-
-
嵌套 UI 组的管理
-
在复杂的 UI 结构中,可以使用多个 Canvas Group 分层管理 UI 元素的交互性和可见性。
-
如何使用 Canvas Group
-
添加 Canvas Group 组件
-
在 Unity 编辑器中,选择一个 UI 元素(如
Panel
或Button
)。 -
点击
Add Component
,搜索并添加Canvas Group
。
-
-
通过代码控制 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 =