Unity UGUI2——Canvas与EventSystem

news2024/9/22 5:38:31

一、Canvas

​ Canvas 的意思是画布,它是 UGUI 中所有 UI 元素能够被显示的根本,它主要负责渲染自己的所有 UI 子对象

​ 如果 UI 控件对象不是 Canvas 的子对象,那么控件将不能被渲染

​ 我们可以通过修改 Canvas 组件上的参数修改渲染方式

​ 场景中允许有多个 Canvas 对象,可以分别管理不同画布的渲染方式,分辨率适应方式等等参数

​ 如果没有特殊需求,一般情况场景上一个 Canvas 即可

​ Canvas 有三种渲染模式:

  • Screen Space - Overlay:屏幕空间,覆盖模式,UI 始终在前

  • Screen Space - Camera:屏幕空间,摄像机模式,3D 物体可以显示在 UI 之前

  • World Space:世界空间,3D 模式

(一)Screen Space - Overlay

  1. Pixel Perfect:是否开启无锯齿精确渲染(性能换效果) ,一般不需要勾选

  2. SortOrder:排序层编号(用于控制多个 Canvas 时的渲染先后顺序)

    数字越大,越后渲染,越显示在前面

  3. TargetDisplay:目标设备(在哪个显示设备上显示)

  4. Additional Shader Channels:其他着色器通道,决定着色器可以读取哪些数据

(二)Screen Space - Camera

  1. Pixel Perfect:是否开启无锯齿精确渲染(性能换效果) ,一般不需要勾选

  2. RenderCamera:用于渲染 UI 的摄像机(如果不设置将类似于覆盖模式),不建议设置为 Main Camera

  3. Plane Distance:UI 平面在摄像机前方的距离,类似整体 Z 轴的感觉

  4. Sorting Layer:所在排序层,可以自己创建,后添加的层级优先级越低,越后被渲染,越显示在前面

5.Order in Layer:排序层的序号

Sorting Layer 相同时,该序号决定了渲染的优先级,值越大,优先级越低,越显示在前面

6.Additional Shader Channels:其他着色器通道,决定着色器可以读取哪些数据

​ 若要使物体显示在 UI 之前,我们通常会将物体创建为 UI 的子物体,调整其与 UI 的 Z 轴距离使得一起被渲染。

​ 这里注意物体缩放大小的问题。由于自适应大小,物体创建为 UI 的子物体后将会变得很小,主要手动调节 Scale 将其变大显示。

(三)World Space

​ 3D 模式,可以把 UI 对象像 3D 物体一样处理,常用于 VR 或者 AR

  1. Event Camera:用于处理 UI 事件的摄像机(如果不设置,不能正常注册 UI 事件),一般关联 Main Camera
  2. Sorting Layer:所在排序层
  3. Order in Layer:排序层的序号
  4. Additional Shader Channels:其他着色器通道,决定着色器可以读取哪些数据

二、Canvas Scaler

​ CanvasScaler 意思是画布缩放控制器

​ 它是用于分辨率自适应的组件

​ 它主要负责在不同分辨率下 UI 控件大小自适应

​ 它并不负责位置,位置由之后的 RectTransform 组件负责

​ 它主要提供了三种用于分辨率自适应的模式 ,我们可以选择符合我们项目需求的方式进行分辨率自适应

(一)准备知识

  1. 屏幕分辨率:

    在 Game 窗口中的 Stats 统计数据窗口,看到当前“屏幕”分辨率,会参与分辨率自适应的计算

1.画布大小和缩放系数:

选中 Canvas 对象后在 RectTransform 组件中看到的宽高和缩放

宽高 * 缩放系数 = 屏幕分辨率

2.Reference Resolution: 参考分辨率

在缩放模式的宽高模式中出现的参数,参与分辨率自适应的计算

​ 屏幕分辨率——当前设备的分辨率,编辑器下 Game 窗口中可以查看到

​ 参考分辨率——在其中一种适配模式中出现的关键参数,参与分辨率自适应的计算

​ 画布宽高和缩放系数——分辨率自适应会改变的参数,通过屏幕分辨率和参考分辨率计算而来

​ 分辨率大小自适应——通过一定的算法以屏幕分辨率和参考分辨率参与计算得出缩放系数,该结果会影响所有 UI 控件的缩放大小

​ 分辨率大小自适应主要就是通过不同的算法计算出一个缩放系数,用该系数去缩放所有 UI 控件,让其在不同分辨率下达到一个较为理想的显示效果

​ 即:屏幕大的时候,按钮大,屏幕小的时候,按钮小

​ 三种适配模式:

  • Constant Pixel Size(恒定像素模式):无论屏幕大小如何,UI 始终保持相同像素大小

  • Scale With Screen Size(缩放模式):根据屏幕尺寸进行缩放,随着屏幕尺寸放大缩小

  • Constant Physical Size(恒定物理模式):无论屏幕大小和分辨率如何,UI 元素始终保持相同物理大小

(二)Constant Pixel Size(恒定像素模式)

  1. Scale Factor:缩放系数

    按此系数缩放画布中的所有 UI 元素

  2. Reference Pixels Per Unit: 单位参考像素

    多少像素对应 Unity 中的一个单位(默认一个单位为 100 像素)

    图片设置中的 Pixels Per Unit 设置,会和该参数一起参与计算

    UI 原始尺寸 = 图片大小(像素)/ (Pixels Per Unit / Reference Pixels Per Unit)

​ 恒定像素模式

​ 不会让 UI 控件进行分辨率大小自适应,会让 UI 控件始终保持设置的尺寸大小显示

​ 一般在进行游戏开发极少使用这种模式,除非通过代码计算来设置缩放系数

(三)Scale With Screen Size(缩放模式)

  1. Reference Resolution:参考分辨率(美术同学出图的标准分辨率)。

    缩放模式下的所有匹配模式都会基于参考分辨率进行自适应计算

  2. Screen Match Mode:屏幕匹配模式,当前屏幕分辨率宽高比不适应参考分辨率时,用于分辨率大小自适应的匹配模式

    • Expand:水平或垂直拓展画布区域,会根据宽高比的变化来放大缩小画布,可能有黑边

      将 Canvas Size 进行宽或高扩大,让他高于参考分辨率

      计算公式: 缩放系数 = Mathf.Min(屏幕宽 / 参考分辨率宽,屏幕高 / 参考分辨率高);

      画布尺寸 = 屏幕尺寸 / 缩放系数

      表现效果:最大程度的缩小 UI 元素,保留 UI 控件所有细节,可能会留黑边

    • Shrink:水平或垂直裁剪画布区域,会根据宽高比的变化来放大缩小画布,可能会裁剪

      将 Canvas Size 进行宽或高收缩,让他低于参考分辨率

      计算公式: 缩放系数 = Mathf.Max(屏幕宽 / 参考分辨率宽,屏幕高 / 参考分辨率高);

      画布尺寸 = 屏幕尺寸 / 缩放系数

      表现效果:最大程度的放大 UI 元素,让 UI 元素能够填满画面,可能会出现裁剪

    • Match Width Or Height:以宽高或者二者的平均值作为参考来缩放画布区域

      以宽高或者二者的某种平均值作为参考来缩放画布

      • Match:确定用于计算的宽高匹配值

      主要用于只有横屏模式或者竖屏模式的游戏

      竖屏游戏:Match = 0

      将画布宽度设置为参考分辨率的宽度,并保持比例不变,屏幕越高可能会有黑边

      横屏游戏:Match = 1

      将画布高度设置为参考分辨率的高度,并保持比例不变,屏幕越长可能会有黑边

​ 游戏开发一般使用 Scale With Screen Size 缩放模式

​ 存在横竖屏切换选择: Expand(拓展匹配,有黑边)和 Shrink(收缩匹配,有裁剪)

​ 不存在横竖屏切换(定死的横屏或者竖屏游戏): Match Width or Height(宽高匹配)

  • 横屏游戏 Match = 1

  • 竖屏游戏 Match = 0

(四)Constant Physical Size(恒定物理模式)

​ DPI(Dots Per Inch,每英寸点数):图像每英寸长度内的像素点数

  1. Physical Unit:物理单位,使用的物理单位种类

    单位种类与 1 英寸的关系
    Centimeters(cm)2.54
    Millimeters(mm)2.54
    Inches(英寸)1
    Points(点)72
    Picas(皮卡)6
  2. Fallback Screen DPI:备用 DPI,当找不到设备 DPI 时,使用此值

  3. Default Sprite DPI:默认图片 DPI

  4. Reference Pixels Per Unit :单位参考像素

    新单位参考像素 = 单位参考像素 * Physical Unit / Default Sprite DPI

    再使用模式一:恒定像素模式的公式进行计算

    原始尺寸 = 图片大小(像素)/ (Pixels Per Unit / 新单位参考像素)

​ 恒定像素模式和恒定物理模式区别:

  • 相同点:他们都不会进行缩放,图片有多大显示多大,使用他们不会进行分辨率大小自适应

  • 不同点:相同尺寸不同 DPI 设备像素点区别,像素点越多细节越多

​ 同样为 5 像素,DPI 较低的设备上看起来的尺寸可能会大于 DPI 较高的设备

​ 恒定物理模式

​ 它不会让 UI 控件进行分辨率大小自适应,而会让 UI 控件始终保持设置的尺寸大小显示

​ 而且会根据设备 DPI 进行计算,让在不同设备上的显示大小更加准确

​ 一般在进行游戏开发极少使用这种模式

(五)3D 模式

​ 当 Canvas 的渲染模式设置为世界空间 3D 渲染模式时,这时 Canvas Scaler 的缩放模式会强制变为 World 3D 世界模式

  1. Dynamic Pixels Per Unit:UI 中动态创建的位图(例如文本)中,单位像素数(类似密度)

  2. Reference Pixels Per Unit:单位参考像素,多少像素对应 Unity 中的一个单位(默认一个单位为 100 像素)

​ 3D 模式

​ 只有在 3D 渲染模式下才会启用的模式,主要用于控制该模式下的像素密度

​ 该模式了解即可,一般不修改

三、Graphic Raycater

​ Graphic Raycaster 意思是图形射线投射器,它是用于检测 UI 输入事件的射线发射器

​ 它主要负责通过射线检测玩家和 UI 元素的交互,判断是否点击到了 UI 元素

  1. Ignore Reversed Graphics:是否忽略反转图形

    即图形翻转后,背面是否还接受交互

  2. Blocking Objects:射线被哪些类型的碰撞器阻挡(在覆盖渲染模式 Overlay 下无效)

  3. Blocking Mask:射线被哪些层级的碰撞器阻挡(在覆盖渲染模式 Overlay 下无效)

四、EventSystem

​ Event System 意思是事件系统,它是用于管理玩家的输入事件并分发给各 UI 控件,它是事件逻辑处理模块

​ 所有的 UI 事件都通过 EventSystem 组件中轮询检测并做相应的执行

​ 它类似一个中转站,和许多模块一起共同协作。如果没有它,所有点击、拖曳等等行为都不会被响应

  1. First Selected:首先选择的游戏对象,可以设置游戏一开始的默认选择

  2. Send Navigation Events:是否允许导航事件(移动 / 按下 / 取消)

    可以通过键盘 WASD 或上下左右改变当前选中的按钮,Enter 键模拟选中按钮

    该效果依赖 Standalone Input Module

  3. Drag Threshold:拖拽操作的阈值(移动多少像素才算拖拽)

五、Standalone Input Module

​ Standalone Input Module 意思是独立输入模块

​ 它主要针对处理鼠标 / 键盘 / 控制器 / 触屏(新版Unity)的输入

​ 输入的事件通过 EventSystem 进行分发

​ 它依赖于 EventSystem 组件,他们两缺一不可

  1. Horizontal Axis:水平轴按钮对应的热键名(该名字对应 Input 管理器)

  2. Vertical Axis:垂直轴按钮对应的热键名(该名字对应 Input 管理器)

  3. Submit Button:提交(确定)按钮对应的热建名(该名字对应 Input 管理器)

  4. Cancel Button:取消按钮对应的热建名(该名字对应 Input 管理器)

  5. Input Actions Per Second:每秒允许键盘 / 控制器输入的数量

  6. Repeat Delay:每秒输入操作重复率生效前的延迟时间

  7. ForceModule Active:是否强制模块处于激活状态

六、RectTransform

​ RectTransform 意思是矩形变换,它继承于 Transform,是专门用于处理 UI 元素位置大小相关的组件

​ Transform 组件只处理位置、角度、缩放

​ RectTransform 在此基础上加入了矩形相关,将 UI 元素当做一个矩形来处理

​ 加入了中心点、锚点、长宽等属性,其目的是更加方便的控制其大小以及分辨率自适应中的位置适应

(一)参数介绍

  1. Pivot:轴心(中心)点,取值范围 0 ~ 1

  1. Anchors(相对父矩形锚点):

    Min 是矩形锚点范围 X 和 Y 的最小值

    Max 是矩形锚点范围 X 和 Y 的最大值

    取值范围都是 0 ~ 1,相当于对于父物体矩形的百分比

    • 锚点(Min = Max):位置自适应

      物体中心 Pivot 将以 Anchors 为原点进行设置

    • 矩形(Min ≠ Max):大小自适应

      此时,Pos 窗口会替换为 Left / Top / Right / Bottom

  2. Pos(X, Y, Z):轴心点(中心点)相对锚点的位置

  3. Width / Height:矩形的宽高

  4. Left / Top / Right / Bottom:矩形边缘相对于锚点的位置;当锚点分离时会出现这些内容

  5. Rotation:围绕轴心点旋转的角度

  6. Scale:缩放大小

  7. image-20220423010158283:Blueprint Mode(蓝图模式)

    启用后,编辑旋转和缩放不会影响矩形,只会影响显示内容

  8. image-20220423010236235:Raw Edit Mode(原始编辑模式)

    启用后,改变轴心和锚点值不会改变矩形位置

(二)组件参数

  1. 点击左上角方框,将出现锚点中心点快捷设置面板

  2. 鼠标左键点击其中的选项, 可以快捷设置锚点(9 宫格布局)

  3. 按住 Shift 点击鼠标左键可以同时设置轴心点(相对自身矩形)

  4. 按住 Alt 点击鼠标左键可以同时设置位置

(三)代码使用

​ 将 Transform 转为 RectTransform 从而获取其参数

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

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

相关文章

[架构之路-214]- UML-类图图解、详解、结构化、本质化讲解

目录 一、什么是类 1.1 概述 1.2 UML中类的表示 1.3 接口 1.4 抽象类 1.5 模板类 二、什么类图 2.1 概述 2.2 类关系 三、UML类图 3.1 结构关系 3.1.1 完全一体:继承关系 (类与类耦合度最高,类与类之间最强的关系) …

空天|谈一谈飞机引擎的应急断离

为什么突然想到这个话题呢?归功于即将到来的材料力学考试。在复习科学出版社出版的苟文选、王安强等编写的《材料力学(1)》第三版第三章的连接键强度校核等内容时,一个例题吸引了我的注意力。 例3-4: 水平力Fg。 强而…

理论实战源码齐飞!架构师社区疯传的SpringSecurity进阶小册真香

安全管理是Java应用开发中无法避免的问题,随着Spring Boot和微服务的流行,Spring Security受到越来越多Java开发者的重视,究其原因,还是沾了微服务的光。作为Spring家族中的一员,其在和Spring家族中的其他产品如SpringBoot、Spring Cloud等进…

Unity UGUI3——三大基础控件

一、Image ​ Image 是图像组件,是 UGUI 中用于显示精灵图片的关键组件 ​ 除了背景图等大图,一般都使用 Image 来显示 UI 中的图片元素 (一)参数介绍 Source Image:图片来源 图片类型必须是“精灵 Sprite”类型 Col…

IBM N系列存储和NetApp FAS之间的对应关系

IBM在很长一段时间都是OEM NetApp的FAS存储作为他的NAS产品线,在IBM叫做Storage N series,就是N系列,在2014年IBM终止了和NetApp之间的OEM关系,目前在市场上的OEM的NetApp存储型号主要是 FAS3000,FAS31和FAS32的中端系…

HTB靶场:简单inject

HTB靶场:简单inject 1、进入靶场,连接vpn后开启靶机 inject 2、nmap扫描一下靶机 nmap -v -A 10.10.11.*扫描后显示服务和端口信息8080和22 3、打开web服务 1)有上传文件功能 简单上传了几个文件(txt,img等 上传过程根据参数简…

SpringBoot 实现 PDF 添加水印有哪些方案?

简介 PDF(Portable Document Format,便携式文档格式)是一种流行的文件格式,它可以在多个操作系统和应用程序中进行查看和打印。在某些情况下,我们需要对 PDF 文件添加水印,以使其更具有辨识度或者保护其版…

全国青少年软件编程(Scratch)等级考试二级考试真题2023年5月——持续更新.....

一、单选题(共25题,共50分) 1.运行下列哪段程序,可以让狗狗走到木屋门口?() A. B. C. D. 标准答案:C 2.下列哪个选项可以控制:按下左键扫帚向左旋转15度,按下右键扫帚向右旋转15度?() A. B. C.

LLM系列 | 09: 基于ChatGPT构建智能客服系统(query分类安全审核防注入)

简介 竹斋眠听雨,梦里长青苔。门寂山相对,身闲鸟不猜。小伙伴们好,我是卖热干面的小女孩。紧接前面几篇ChatGPT Prompt工程系列文章: 04:ChatGPT Prompt编写指南05:如何优化ChatGPT Prompt?06:ChatGPT Prompt实践&am…

如何安装MySQL数据库

目录 什么是MySQL数据库 第一步 安装依赖环境 第二步 创建MySQL相关进程用户 第三步 导入MySQL相关包 第四步 解包到指定目录下 第五步 切换到MySQL目录下编译安装 第六步 编译 第七步 更改指定文件的所有者和所属组 第八步 进入指定配置文件清空内容 第九步 配置指定…

软件测试复习题

一、填空题 软件从“出生”到“消亡”的过程称为___。早期的线性开发模型称为_______开发模型。引入风险分析的开发模型为_______开发模型。ISO 9126-1991标准提出的质量模型包括_______和________和________和______和_______和_______6大特性。按照缺陷的严重程度可以将缺陷…

如何做Web测试?测试者必知的常见测试点总结

目录 一、Web应用程序 二、功能测试 三、易用性测试(界面测试)整体界面测试 四、茶客性测试 五、安全性测试安全性测试要求: 六、性能测试 总结: 如何做Web测试?以下为大家比较全面地总结一下Web测试的票点 一、Web应用程序 应用程序有两种模式&#xff0c…

article-五轴机械臂正逆分析(标准法)VQ

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A2CiIK0R-1687071926271)(data:image/svgxml;utf8, )] 五轴机械臂正逆解仿真 标准的D-H参数法 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PbUOp13D-1687071926272)(da…

设计模式-策略工厂

在介绍策略工厂的实现前,我们要先了解spring中beanFactory: BeanFactory 作为IOC服务的提供者,通过XmlBeanFactory来得到实例 生产Bean的工厂,采用延迟初始化策略(只有在需要某个对象时,才进行初始化和依…

网络安全如何从零基础到精通?

在看这篇文章之前,有个问题想确认一下,你现在自学网络安全是出于兴趣原因,还是说之后准备走网络安全这个方向? 因为目的不同,学习的方式和深度也会不一样。 今天我就围绕职业发展这个方向来和你聊聊。 如果你真的想通过…

全国青少年软件编程(Scratch)等级考试一级考试真题2023年5月——持续更新.....

一、单选题(共25题,共50分) 1.看图找规律,请问下图红框中是?( ) A. B. C. D. 标准答案:D 试题解析:通过观察每种图形有两个,所以选择D 2.用一根绳子绕树一圈余30厘米&#x…

小说推文洗稿的工作流程

牙叔教程 简单易懂 第一步 找到十万赞以上的爆款视频 自己刷呗, 多刷一些, 最好是那种粉丝几万到几十万的作者, 点赞数量在万赞以上的作品, 十万赞就更好啦 第二步 提取视频的文案 我们分享视频的时候, 有一个复制链接的按钮, 然后把链接复制到 逗哥配音 , 就可以把文案提取…

【QQ界面展示-通知的发布2 Objective-C语言】

一、我再把这个通知的发布与监听给大家复习一下, 1.我们发布和监听通知, 1)第一,需要一个对象,通知的发布者 2)第二,需要一个对象,通知的监听者 只有它俩,还不够,一个是通知的发布者、一个是通知的监听者, 只有它俩,根本不够, 你要想进行通知的发布、和监听,…

leetcode329. 矩阵中的最长递增路径(java)

矩阵中的最长递增路径 矩阵中的最长递增路径题目描述 暴力递归代码演示 递归 缓存代码演示 动态规划专题 矩阵中的最长递增路径 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/longest-increasing-path-in-a-matrix 题…

一文搞懂文件系统

目录 1.文件系统概述 2.文件命名 3.目录 3.1一级目录系统 3.2层次目录系统 4.文件系统的实现 4.1引导块 4.2超级块 4.3空闲空间块 4.3.1位图 4.3.2 使用链表进行管理 4.inode 5.记录文件所用磁盘块的方法 5.1连续分配 5.2链表分配 5.3inode 1.文件系统概述 文件系…