Unity3D之UGUI基础--画布的三种模式

2021-08-12 11:05:19 浏览数 (1)

画布的三种模式和三种缩放模式

Canvas组件有三种不同的渲染模式:

  • Screen Space - Overlay
  • Screen Space - Camera
  • World Space

一、Overlay模式

全称:屏幕空间-覆盖模式(Screen Space-Overlay),Canvas创建出来后,默认就是该模式,该模式和摄像机无关,即使场景内没有摄像机,UI游戏物体照样渲染

  • 屏幕空间:电脑或者手机显示屏的2D空间,只有x轴和y轴
  • 覆盖模式:UI元素永远在3D元素的前面

几个相关属性:

  • Pixel Perfect:勾选后UI和屏幕像素对应,UI图片不会出现锯齿边缘
  • Sort Order:当前画布的深度层级

二、Camera模式

全称:屏幕空间-摄像机模式(Screen Space-Camera),设置成该模式后需要指定一个摄像机游戏物体,指定后UGUI就会自动出现在该摄像机的“投射范围”内,和NGUI的默认UI Root效果一致,如果隐藏掉摄像机,UGUI当然就无法渲染

几个相关属性:

  • Render Camera:用于渲染摄像机
  • Plane Distance:控制UGUI元素和摄像机之间的距离,不影响显示

三、WorldSpace模式

全称:世界空间模式(WorldSpace),设置成该模式后UGUI就相当于是场景内的一个普通的“Cube 游戏模型”,可以在场景内任意的移动UGUI元素的位置,通常用于怪物血条显示和VR开发

Canvas Scaler(画布缩放)

为了适应不同的分辨率,我们可能会允许适当的UI整体性缩放,外加一些尽可能少的布局微调。 这样就能达到一个比较理想的效果。Unity为我们提供了Canvas Scaler组件用于控制画布中UI元素的统一缩放和像素密度的。缩放值影响Canvas上所有的元素,包括字体的size和image的borders。

属性

Property:

功能:

UI Scale Mode

Canvas中UI元素的缩放模式

Constant Pixel Size

使UI保持自己的尺寸,与屏幕尺寸无关。

Scale With Screen Size

屏幕尺寸越大,UI越大

Constant Physical Size

使UI元素保持相同的物理大小,与屏幕尺寸无关。

Constant Pixel Size:

Property:

功能:

Scale Factor

通过factor值来缩放所有UI元素(画布大小)

Reference Pixels Per Unit

如果Sprite设置了‘Pixels Per Unit’,那么该Sprite一个像素将占用UI的一个像素

 Scale With Screen Size:

Property:

功能:

Reference Resolution

The resolution the UI layout is designed for. If the screen resolution is larger, the UI will be scaled up, and if it’s smaller, the UI will be scaled down. UI布局的设计分辨率,如果实际分辨率大,UI会放大显示,如果实际分辨率小,UI会缩小显示。

Screen Match Mode

A mode used to scale the canvas area if the aspect ratio of the current resolution doesn’t fit the reference resolution Canvas缩放模式

Match Width or Height

Scale the canvas area with the width as reference, the height as reference, or something in between 根据设计分辨率的宽,高或按权值取宽高中间值来缩放Canvas

Expand

Expand the canvas area either horizontally or vertically, so the size of the canvas will never be smaller than the reference 横向或纵向扩展画布大小(因此实际画布尺寸总是大于设计分辨率)

Shrink

Crop the canvas area either horizontally or vertically, so the size of the canvas will never be larger than the reference 横向或总线收缩画布大小(因此实际画布尺寸总是小于设计分辨率)

Match

Determines if the scaling is using the width or height as reference, or a mix in between.

Reference Pixels Per Unit

If a sprite has this ‘Pixels Per Unit’ setting, then one pixel in the sprite will cover one unit in the UI. 如果Sprite设置了‘Pixels Per Unit’为x,那么该Sprite的x个像素将占用UI的一个单位.(UI当中的一单元对应多少设计分辨率像素,最好跟图片设置一致,否则Image显示会与画布不匹配)

Constant Physical Size:

通过调节 Canvas 物理大小来维持缩放不变。它的意思是在任何屏幕上不改变 Canvas 的 DPI,而是调节 Canvas 的物理大小总是与屏幕保持一致。这种说法可能比 Constant Pixel Size 更难以理解,实际上他们本质是一样的,只不过 Constant Pixel Size 通过逻辑像素大小调节来维持缩放,而 Constant Physical Size 通过物理大小调节来维持缩放。使用这种模式必须指定一个像素转换物理大小的因数(填写96方便在windows上进行开发)。运行时通过具体设备报告的dpi计算 Canvas 像素大小和缩放系数。这种模式从设计的意图来看,是为了在开发时使用物理单位而非像素单位,这只会让程序和美术的工作变得复杂,实际使用价值并不高。因为开发人员更关心设计的像素分辨率,他们需要绘制明确的像素大小的图片!如果未来开发人员和玩家都使用了超高DPI的显示器,那时或许会更注重物理尺寸。

dpi :dots per inch , 直接来说就是一英寸多少个像素点。常见取值 120,160,240。我一般称作像素密度,简称密度

对于设置为“屏幕空间 - 覆盖”或“屏幕空间 - 相机”的画布,Canvas Scaler UI比例模式可以设置为“恒定像素大小”,“按屏幕大小缩放”或“恒定物理大小”。


对这块不熟悉,自己搜索的整理了一下,方便加深对画布Canvas的理解

0 人点赞