浅谈Unity中Canvas的三种渲染模式

Overview

 

UGUI通过 Canvas 组件渲染和管理UI元素。Canvas 是 UI 元素的容器,它决定了 UI 元素的渲染方式以及它们在屏幕上的显示效果。Canvas 有三种主要的渲染模式,每种模式有不同的用途和特点。本文将介绍这三种渲染模式

1. Screen Space - Overlay 模式

1.1 渲染方式

Screen Space - Overlay 模式下,Canvas 会直接渲染到屏幕上,而不依赖于任何摄像机。这意味着 UI 元素会覆盖在游戏画面之上,始终位于屏幕的最前面。

1.2 特点

  • 无需摄像机:不依赖场景中的任何摄像机,UI 会直接渲染到屏幕。
  • 始终位于最上层:无论场景中是否有其他 Canvas,Screen Space - Overlay 模式下的 UI 始终显示在最上面,其他 UI 元素都会被它覆盖。例如场景中还存在一个Screen Space - Camera 模式的Canvas,它下面的UI元素只可能被前者的UI遮挡,而绝不可能遮挡前者的UI.
  • 性能较高:由于 UI 渲染不需要经过摄像机的投影计算,因此其渲染效率较高,适合用于较为简单和静态的 UI。

1.3 适用场景

  • 主要用于游戏中不需要与场景中的 3D 对象交互的 UI。例如:主菜单、游戏 HUD、游戏中显示的分数等。
  • 用于需要始终显示在屏幕上并且不受场景摄像机影响的元素。

1.4 监视面板属性

1.Pixel Perfect:

  • 消除模糊和锯齿:尤其是在低分辨率设备或缩放后的 UI 元素中,未启用 Pixel Perfect 时,可能会看到 UI 元素的边缘变得模糊或出现锯齿。启用该选项后,Unity 会强制元素的边界对齐到像素网格,避免这些视觉问题。

  • 精确显示:它有助于确保 UI 元素在显示器上以精确的像素值显示,避免由于屏幕分辨率差异导致的模糊效果。

  • 适用于像素艺术风格:如果你制作的是像素艺术风格的游戏或应用,启用 Pixel Perfect 可以确保每个像素都完美对齐,保持像素风格的一致性和清晰度。

这是一个对比效果,前者没打开导致了输入框上下出现了色差,后者是打开该属性,获得了更好的显示效果(但是更耗性能).

2.Sort Order

通常不会出现两个同为Screen Space - Overlay 模式的Canvas,但是如果有的话,Sort Order属性会影响渲染属性,值越大越后渲染(即更不会被挡住).但是如果两个Canvas的该属性都为同一值渲染顺序如何呢?笔者没找到规律.

3.Target Display

  • Target Display 属性决定了 Canvas 渲染到哪个显示器。这个属性适用于 Screen Space - CameraWorld Space 渲染模式的 Canvas。当你有多个显示器时,你可以指定 UI 渲染在哪个显示器上。

  • Unity 支持将不同的摄像机渲染到不同的显示器上,而 Target Display 就是控制每个 Canvas 的渲染目标,帮助你更好地在多个显示器上分配渲染任务。

4.Additional Shader Channels

控制 Canvas 渲染时是否包含一些额外的顶点数据,以便提供给 Shader 进行更多的处理。这些额外的 Shader 通道提供了更多关于每个 UI 元素的信息,通常用于自定义 Shader 渲染效果。

Screen Space - Overlay 模式下,UI 渲染是直接绘制到屏幕上的,而不是依赖于相机的视图,因此,通常不会涉及复杂的空间变换。但即使在这种模式下,你仍然可以启用一些附加的 Shader 通道,以便在自定义 Shader 中使用。(通常不会使用)

可用的选项:

  1. Vertex Streams (顶点流)

    • 顶点流允许传递更多与顶点相关的数据给 Shader。这通常是用于处理与顶点位置、颜色、纹理坐标等相关的额外数据流。
  2. Normals (法线)

    • 启用此选项会将法线信息传递给 Shader。对于 Screen Space - Overlay 渲染模式来说,通常并不需要法线数据,因为 UI 元素通常是平面上的。但是,如果你想为 UI 添加某种自定义效果(例如基于法线的光照),启用法线数据就很有帮助。
  3. Tangents (切线)

    • 切线通常与法线一起使用,主要用于法线贴图的处理。如果你的 UI 需要进行复杂的材质效果,比如通过法线贴图实现视觉效果,可以选择启用切线数据。
  4. UV2 / UV3 / UV4 (额外的 UV 通道)

    • 这些额外的 UV 通道可以用于不同的纹理坐标。如果你想给 UI 使用多个纹理(例如多个层次的贴图),你可以启用这些额外的 UV 通道。
  5. Color (颜色)

    • 此选项启用后,Canvas 渲染的 UI 元素将包含颜色信息,这对于自定义 Shader 控制颜色或者透明度非常有用。
  6. Lightmap (光照贴图)

    • 如果你希望 UI 元素使用光照贴图进行渲染(虽然在 Screen Space - Overlay 模式下较少见),你可以启用光照贴图通道。这个选项让 Shader 能够访问相关的光照贴图数据。

2. Screen Space - Camera 模式

2.1 渲染方式

Screen Space - Camera 模式下,Canvas 会根据指定的摄像机进行渲染。UI 元素会被渲染到摄像机视野中的一个平面上,可以通过摄像机的视角和视野调整 UI 的显示效果。此时Cube也被渲染到UI上了.

2.2 特点

  • 依赖摄像机:渲染需要指定一个摄像机,UI 会根据摄像机的位置、视野以及投影设置进行渲染。
  • 支持透视效果:如果摄像机使用透视投影,UI 元素也会受到透视效果的影响,显示更具立体感。
  • 自动适应分辨率:当屏幕分辨率发生变化时,Canvas 会自动调整大小,以适应新的屏幕尺寸。

2.3 适用场景

  • 适用于需要3D 对象的情况。
  • 用于需要根据摄像机视角进行动态渲染的场景,如虚拟现实中的 UI 或者 3D 游戏中的 HUD。

2.4 注意:

推荐改成这样一个结构专门管理该模式的UI.同时这个摄像机这渲染UI层,而不做其他事.

经过测试虽然只渲染UI层,UI物体(比如一个Image),该Image即便改为别的层也能被渲染,但是3D物体却不行.但是摄像机如果改为渲染Water层,则UI物体就不会被渲染,即便UI物体也改为Water层.

 

此时因为是依靠摄像机渲染我们可以通过旋转UI获得一些立体效果.


也可以考虑修改摄像机为正交相机,将摄像机从 透视(Perspective) 改为 正交(Orthographic) 有以下几个优点和影响:

优点

  1. UI 不受透视变形影响

  • 透视相机会让 UI 元素受到透视投影的影响,远处的元素显得更小,近处的更大,导致 UI 在屏幕上的显示比例不均匀。

  • 正交相机可以确保 UI 元素在屏幕上保持相同的大小,不会因为远近发生缩放,使 UI 更加稳定。

  1. 更方便对齐 UI 元素

    正交相机不会有透视缩放问题,因此在 UI 布局时可以更精确地对齐,不会因相机角度变化导致 UI 位置和大小发生意外变化。
  2. 减少 UI 失真

    透视相机会导致 UI 组件的拉伸变形,特别是在 UI 组件较大或接近屏幕边缘时,而正交相机可以避免这些问题,使 UI 显示更清晰。
  3. 性能提升

    正交投影不需要进行复杂的透视变换和深度计算,因此可以提高渲染效率,特别是在 UI 复杂的情况下能减少 GPU 负担。

对比透视相机

特性透视相机 (Perspective)正交相机 (Orthographic)
UI 变形UI 可能受透视影响变形UI 保持原始比例,无变形
对齐可能因透视造成 UI 位置变化UI 位置更稳定,易对齐
视角变化UI 受相机 FOV 影响UI 不受相机 FOV 影响
深度感具有透视深度感无透视深度感
性能需要透视投影计算计算量较低,性能较优

适用场景

适合使用正交相机的情况

  • 2D 游戏 UI,如按钮、文本等不希望受到透视变形影响。
  • HUD(抬头显示),如血条、准星、迷你地图等,应该保持固定尺寸和位置。
  • 固定视角的游戏 UI,比如卡牌游戏、策略游戏等。

适合使用透视相机的情况

  • 3D UI 设计,比如 VR UI 或带有 3D 立体感的 UI。
  • 需要 UI 深度感的场景,比如某些游戏的界面希望 UI 组件能随距离发生变化。

总结

如果 UI 主要是 2D 组件,并希望它们在屏幕上保持稳定的尺寸和对齐方式,那么将 Screen Space - Camera 下的摄像机设置为 正交模式 是一个更好的选择。而如果 UI 需要透视效果,比如 3D 交互界面或者 VR UI,则可以选择透视相机。

2.5 监视面板属性:

在 Unity 的 Screen Space - Camera 模式下,Canvas 组件Plane Distance 属性的作用与摄像机的投影模式(透视或正交)有关。以下是详细解析:


Plane Distance属性

  1. 控制 UI 与摄像机的距离

    • Screen Space - Camera 模式下,Canvas 依附于一个摄像机,UI 会被渲染成 3D 物体。
    • Plane Distance 代表 UI 画布距离该摄像机的距离,单位是 世界单位(World Units)
  2. 影响 UI 元素的缩放

    • 如果使用的是 透视相机(Perspective),则 Plane Distance 越大,UI 组件会变得越小,因为透视投影会导致远处的物体缩小,近处的物体放大。
    • 如果使用的是 正交相机(Orthographic)Plane Distance 对 UI 组件大小没有影响,因为正交相机不会有透视缩放效果。
  3. 影响 UI 的遮挡关系

    • Canvas 作为一个 3D 物体,可能会与游戏场景中的其他 3D 物体发生遮挡。
    • Plane Distance 距离过大 可能会让 3D 物体遮挡UI。

Plane Distance 对比

投影模式Plane Distance 影响推荐值
透视相机(Perspective)影响遮挡关系,同时影响 UI 大小10-100,根据 UI 需求调整
正交相机(Orthographic)不影响 UI 大小,仅影响遮挡关系一般设为 1-10,避免过远

Sorting Layer属性和Order in Layer属性

这两者的设置只为了影响同为Screen Space - Camera 模式的Canvas的渲染顺序.

首先两个同为Screen Space - Camera 模式的Canvas,且Sorting Layer处于同一层级,这时Order in Layer的大小才有比较意义.那不同Sorting Layer的Canvas呢?

层级越大越不会被遮挡.

 

3. World Space 模式

3.1 渲染方式

World Space 模式下,Canvas 被视为场景中的一个 3D 对象。UI 元素会按照场景中的坐标进行渲染,因此它们能够与其他 3D 对象进行交互,并且受场景中的光照和摄像机视角影响。

3.2 特点

  • 视为 3D 对象:UI 元素作为场景中的 3D 对象存在,可以根据需要在三维空间中自由放置。
  • 与场景交互:UI 元素可以与其他 3D 对象进行交互,可以被其他 3D 对象遮挡或通过摄像机的投影显示。
  • 需要考虑遮挡和光照:UI 元素的显示可能会受到场景光照的影响,并且它们可能会被其他 3D 对象遮挡。

3.3 适用场景

  • 适用于游戏中的 3D UI 或 AR/VR 场景。例如:在 3D 游戏中,UI 元素显示在场景中的物体旁边或者浮动在物体上方。
  • 在需要在 3D 空间中定位并显示 UI 的场景中使用,例如 AR 中的标签或 VR 游戏中的交互面板。

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++17 std::variant 详解:概念、用法和实现细节

文章目录 简介基本概念定义和使用std::variant与传统联合体union的区别 多类型值存储示例初始化修改判断variant中对应类型是否有值获取std::variant中的值获取当前使用的type在variant声明中的索引 访问std::variant中的值使用std::get使用std::get_if 错误处理和访问未初始化…

NoteGen:记录、写作与AI融合的跨端笔记应用

在信息爆炸的时代,如何高效地捕捉灵感、整理知识并进行创作成为了许多人关注的问题。为此,我们开发了 NoteGen,一款专注于记录和写作的跨端 AI 笔记应用。它基于 Tauri 开发,利用其强大的跨平台能力支持 Mac、Windows 和 Linux 系统,并计划未来扩展到 iOS 和 Android 平台…

SET alter system reload

目录标题 alter system 只是 写 auto 文件SET & alter system1. **会话级别参数(Session-level parameters)**2. **系统级别参数(System-level parameters)**3. **某些特定的超级用户参数**4. **修改时生效的参数**总结&#…

Ubuntu20.04 磁盘空间扩展教程

Ubuntu20.04 磁盘空间扩展教程_ubuntu20 gpart扩容-CSDN博客文章浏览阅读2w次,点赞38次,收藏119次。执行命令查看系统容量相关的数据:df -h当前容量为20G,已用18G(96%),可用844M,可用…

无心剑七绝《除夕快乐》

七绝除夕快乐 除旧迎新瑞气扬 夕阳烂漫映红妆 快言美酒佳肴味 乐享天伦福满堂 2025年1月28日 平水韵七阳平韵 无心剑这首七绝以“除夕快乐”为题,巧妙地运用了藏头手法,将“除夕快乐”四字分别嵌入诗的每一句首字,构思精巧,富有新…

WebSocket 详解:全双工通信的实现与应用

目录 一、什么是 WebSocket?(简介) 二、为什么需要 WebSocket? 三、HTTP 与 WebSocket 的区别 WebSocket 的劣势 WebSocket 的常见应用场景 WebSocket 握手过程 WebSocket 事件处理和生命周期 一、什么是 WebSocket&#xf…

机器人抓取与操作概述(深蓝)——1

工业机器人:① “臂”的形态 ② “手”的形态 ③ 视觉,力和触觉 1 机器人的不同形态 “臂”的形态 “手”的形态 2 常见的操作任务 操作:插入、推和滑 抓取:两指(平行夹爪)抓取、灵巧手抓取 落地-产…

人物传记之新月篇

相关故事链接(及时更新):Python的那些事第四篇:编程中的智慧之光控制结构-CSDN博客 目录 1. C语言程序:增强版加密与解密工具 2. Python程序:增强版加密与解密工具 功能对比表格 详细功能解释 人物传记…

Tensor 基本操作4 理解 indexing,加减乘除和 broadcasting 运算 | PyTorch 深度学习实战

前一篇文章,Tensor 基本操作3 理解 shape, stride, storage, view,is_contiguous 和 reshape 操作 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started Tensor 基本使用 索引 indexing示例代码 加减…

2024收尾工作

目录 开场白 栈与队列 LeetCode232. 用栈实现队列 LeetCode225. 用队列实现栈 LeetCode102. 二叉树的层序遍历 LeetCode103. 二叉树的锯齿形层序遍历 堆(优先级队列) 堆排序 LeetCode215. 数组中的第 k 个最大元素 总结 开场白 今天是除夕&…

【反悔堆】【hard】力扣871. 最低加油次数

汽车从起点出发驶向目的地,该目的地位于出发位置东面 target 英里处。 沿途有加油站,用数组 stations 表示。其中 stations[i] [positioni, fueli] 表示第 i 个加油站位于出发位置东面 positioni 英里处,并且有 fueli 升汽油。 假设汽车油…

PWM频率测量方法

测量PWM(脉宽调制)信号的频率是嵌入式系统中的常见需求,尤其是在电机控制、LED调光、传感器信号处理等场景中。 在这里介绍两种测量PWM频率的方法:测频法与测周法。 1、测频(率)法 原理:在闸门…

银行卡三要素验证接口:方便快捷地实现银行卡核验功能

银行卡三要素验证API:防止欺诈交易的有力武器 随着互联网的发展,电子支付方式也越来越普及。在支付过程中,银行卡是最常用的支付工具之一。然而,在一些支付场景中,需要对用户的银行卡信息进行验证,以确保支…

常见字符串相关题目

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏: 优选算法专题 目录 14.最长公共前缀 5.最长回文子串 67.二进制求和 43.字符串相乘 14.最长公共前缀 题目: 编写一个函数来查…

DeepSeek:突破传统的AI算法与下载排行分析

DeepSeek的AI算法突破DeepSeek相较于OpenAI以及其它平台的性能对比DeepSeek的下载排行分析(截止2025/1/28 AI人工智能相关DeepSeek甚至一度被推上了搜索)未来发展趋势总结 在人工智能技术飞速发展的当下,搜索引擎市场也迎来了新的变革。DeepS…

2025神奇的数字—新年快乐

2025年,一个神奇的数字,承载着数学的奥秘与无限可能。它是45的平方(45),上一个这样的年份是1936年(44),下一个则是2116年(46),一生仅此一次。2025…

搭建Spark分布式集群

1,下载 下载 spark-3.5.4-bin-without-hadoop.tgz 地址: https://downloads.apache.org/spark/spark-3.5.4/ 2,安装 通过虚拟机设置共享文件夹将需要的安装包复制到linux虚拟机中 localhost1。虚拟机的共享盘在 /mnt/hgfs/。 将共享盘安装…

2025春晚刘谦魔术揭秘魔术过程

2025春晚刘谦魔术揭秘魔术过程 首先来看全过程 将杯子,筷子,勺子以任意顺序摆成一排 1.筷子和左边物体交换位置 2.杯子和右边物体交换位置 3.勺子和左边物体交换位置 最终魔术的结果是右手出现了杯子 这个就是一个简单的分类讨论的问题。 今年的魔术…

通过高效的侦察发现关键漏洞接管整个IT基础设施

视频教程在我主页简介或专栏里 在这篇文章中, 我将深入探讨我是如何通过详细分析和利用暴露的端点、硬编码的凭据以及配置错误的访问控制,成功获取目标组织关键IT基础设施和云服务访问权限的全过程。 我们先提到目标网站的名称 https://*sub.domain*.co…

Java实战项目-基于 springboot 的校园选课小程序(附源码,部署,文档)

Java 基于 springboot 的校园选课小程序 博主介绍:✌程序员徐师兄、8年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战*✌ 🍅文末获取源码联系🍅 👇&…