Canvas 的 Canvas Scaler 组件就是用来做适配的。
UI Scale Mode 设置为 Scale With Screen Size 时,可在下方设置一个默认尺寸。在 Editor上设计 UI 时就是根据这个默认尺寸进行布局。针对不同屏幕的分辨率,会根据 Screen Match Mode 中的适配模式,对默认尺寸进行缩放来实现适配。
Screen Match Mode 提供三种适配方案。
Match Width or Height
此种模式下,可通过设置下方的 Match 值来选择是适配宽度还是适配高度,或者可以选择二者中间的某个值。
当 Match == 0 时,适配宽度。将宽度设置为屏幕宽度,并保持默认尺寸比例不变。如果此时高度超过屏幕高度,超出部分将会被裁切掉。
当 Match == 1 时,适配高度。将高度设置为屏幕高度,并保持默认尺寸比例不变。如果此时宽度超过屏幕宽度,超出部分将会被裁切掉。
Expand
保持缩放比例,不裁切
对默认尺寸进行缩放,并保证缩放后的宽高均小于或等于实际屏幕宽高的最大尺寸。
Shrink
保持缩放比例,裁切
对默认尺寸进行缩放,并保证缩放后的宽高均大于或等于实际屏幕宽高的最小尺寸。
eg:
默认尺寸:1920 * 1080
屏幕尺寸1:1792 * 828
屏幕尺寸2:1000 * 828
- Match Width or Height 模式(屏幕尺寸1)
当 Match == 0 时,缩放后 1792 * 1008 ,实际尺寸为 1792 * 828 (发生裁切)。实际效果如下图,白框为屏幕大小,蓝色区域为 1920 * 1080 的背景图。
当 Match == 1 时,缩放后 1472 * 828 ,实际尺寸为 1472 * 828 (屏幕左右两侧有黑边)
- Expand
对于屏幕尺寸1,按宽度缩放后 1792 * 1008 ,按高度缩放后 1472 * 828,实际尺寸为 1472 * 828
对于屏幕尺寸2,按宽度缩放后 1000 * 562 ,按高度缩放后 1472 * 828,实际尺寸为 1000 * 562
- Shrink
对于屏幕尺寸1,按宽度缩放后 1792 * 1008 ,按高度缩放后 1472 * 828,实际尺寸为 1792 * 1008
对于屏幕尺寸2,按宽度缩放后 1000 * 562 ,按高度缩放后 1472 * 828,实际尺寸为 1472 * 828