UGUI的Canvas Scaler组件解析
Canvas Scaler组件用于控制Canvas画布中的所有UI元素的整体缩放与像素密度。其意义就是为了适应不同的分辨率的设备。
UI Scale Mode(UI的缩放模式)
模式1 Constant Pixel Size
不管屏幕Size如何变化,都会保持UI像素Size不变(UI的宽与高所占用的像素个数不变,不管当前屏幕的分辨率如何)。
Scale Factor:设置UI的缩放比例,值为1时,表示不缩放,<1时缩小,>1时放大。
Reference Pixels Per Unit:UI元素每个单元需要Sprite图中的多少像素填充。
设置屏幕16:9时,UI界面如下图
设置屏幕5:4时,UI界面如下图
对比上述2种情况,会发现Canvas画布中所有UI元素的position与size依据它们在屏幕中实际占的像素而定。因此,UI在2种模式下看起来没有变化。
其实,在Constant Pixel Size模式下,可以通过调节Scale Factor属性的值,可以达到缩放UI元素的效果。
屏幕5:4情况下,设置ScaleFactor = 0.75时,结果如下图
模式2 Scale With Screen Size
UI会根据屏幕的Size,来调整自己的Size。
Reference Resolution:默认参考的分辨率,一般设置为当下市场中主流设备的分辨率。它是参考标准,其他的分辨率的,会根据它来进行缩放。另外,项目的UI也是依据该标准分辨率来制作的。
Screen Match Mode:如果当前屏幕的分辨率与参考标准值不符时,应选择一种适应匹配模式来缩放Canvas。
它有3种匹配适应方式:
方式1:Match WidthOr Height
当Match的值为0时,指UI大小只取决于屏幕的宽度,如果当前屏幕的宽度是参考标准宽度的n倍,则UI整体缩放为参考标准的n倍;当Match的值为1时,指UI大小只取决于屏幕的高度,如果当前屏幕的高度是参考标准高度的m倍,则UI整体缩放为参考标准的m倍;当Match值介于0和1之间时,对上述两者的影响进行权重加成来进行计算。
方式2:Expand
这种模式比较适合屏幕的实际Size大于参考标准时,需要将UI扩充到大屏幕中。为尽可能保证显示效果,该模式会选择变化较小的一个方向(横/纵),作为放大Canvas的标准,而另外一个方向上的变化则在整体缩放以后再进行补偿性的变化。
方式3:Shrink
与Expand恰好相反,这种模式比较适合屏幕的实际Size小于参考标准时,需要将UI压缩到小屏幕中。原理也与Expand类似。
模式3 Constant Physical Size
不管屏幕的Size还是分辨率的如何变化,都会保持UI的物理Size不变(就是指在不同的大小和分辨率的屏幕中,UI的大小不变)。
Physical Unit:设置物理尺寸的单位
Fallback Screen DPI:当屏幕分辨率不明确时,而采用的分辨率;
Default Sprite DPI:精灵图片每英寸的默认像素
总结:笔者在实际项目中,只是运用了模式二Scale With ScreenSize,并且选择了Match Width Or Height 自适应模式。我们美术针对当前16:9的主流设备画UI,其他的分辨率的如:16:10 4:3等都会进行自适配。当然其他分辨率设备显示的界面布局会没有16:9下那么好看。当然,这是为了节省UI成本,而做的“不得已”选择。如果你的项目中对UI要求非常高,可以针对每个特定分辨率的设备,画一套UI。如果读者有对屏幕分辨率不是很清楚的,可以阅读一下我的另外一篇关于屏幕尺寸、分辨率及像素的文章,链接如下http://gad.qq.com/article/detail/7181450