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 resolutionCanvas缩放模式 |
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比例模式可以设置为“恒定像素大小”,“按屏幕大小缩放”或“恒定物理大小”。
评论(0)