Unity3D-UGUI原理篇Canvas 渲染模式

Posted 恬静的小魔龙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity3D-UGUI原理篇Canvas 渲染模式相关的知识,希望对你有一定的参考价值。

推荐阅读

大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。

一、前言

这个系列文章,是为了记录分析UGUI的各种原理:

  • UGUI的渲染模式。
  • UGUI的缩放计算。
  • UGUI的锚点定位。
  • UGUI的层级渲染流程。
  • UGUI的事件触发原理。
  • UGUI的布局自动布局方式。

这是本系列文章的第X篇:

二、Canvas 渲染模式

首先我们在Unity的Hierarchy面板,选择"Create→UI→Canvas",新建一个画布来详细的看一下属性:

Canvas 渲染模式有三种:Screen Space-Overlay、Screen Space-Camera、World Space

下面就分别进行进行解析:

2-1、Screen Space-Overlay —— 屏幕空间覆盖模式

属性功能
Pixel Perfect使UI元素像素对应,效果就是边缘清晰不模糊
Sort Order多个Canvas时,数值越大越后渲染。值大的画布,会挡住值小的
Target Display目标显示器,如果有多个屏幕的话可以选择
Addtional Shader Channels附加着色通道,决定Shader可以读取哪些相关数据,比如 法线、 切线 等数据。

这个屏幕空间覆盖模式渲染模式,就是表示不管有没有相机去渲染场景,Canvas下的所有UI永远位于屏幕的前面,覆盖掉渲染场景显示的元素。

2-2、Screen Space-Camera —— 相机模式

属性功能
Pixel Perfect使UI元素像素对应,效果就是边缘清晰不模糊
Render Camera渲染的相机
Plane DistanceCanvas与相机之间的距离
Sorting LayerCanvas属于的排序层,在 Edit->Project Setting->Tags and Layers->Sorting Layers 进行新增,越下方的层显示越前面
Order In LayerCanvas属于的排序层下的顺序,该值越高显示越前面

这种渲染模式 适用于场景模型太多太大,在调整UI的时候挡住UI,让UI和渲染的相机移动到比较远的位置,就可以避免遮挡。并且Canvas 和 摄像机之间有一定的距离 , 可以在摄像机和 Canvas之间放置一些模型或粒子特效。

2-3、World Space —— 世界模式

属性功能
Event Camera响应事件的相机
Sorting Layer画布的深度,指定了相机的渲染顺序
Order in Layer值越大,该UI越显示在前面
Addtional Shader Channels附加着色通道,决定Shader可以读取哪些相关数据,比如 法线、 切线 等数据。

把物体当作世界座标中的平面(GameObject),也就是当作3D物件,显示3D UI

这种模式下 Canvas 就和场景中哄的其他游戏对象属性一样了,可以控制它的大小、旋转、缩放等。

UI元素会根据在3D场景歌中的放置位置,来决定渲染在场景其他物体的前面还是后面。

这个模式,在我们需要将UI成为我们世界场景的一部分的时候非常有效。

以上是关于Unity3D-UGUI原理篇Canvas 渲染模式的主要内容,如果未能解决你的问题,请参考以下文章

Unity3D-UGUI原理篇RectTransform 组件详解

Unity3D-UGUI原理篇Auto Layout 自动布局

Unity3D-UGUI原理篇Event System Manager 事件与触发

Unity3D-UGUI原理篇使用 UnityEngine.Events 让程序更灵活稳定

Canvas 最佳实践(性能篇)

Canvas 最佳实践(性能篇)