CanvasScaler.matchWidthOrHeight

切换到手册
public float matchWidthOrHeight ;

描述

用于缩放画布以匹配参考分辨率的宽度或高度(或两者组合)的设置。

如果该设置为 0,则画布会根据当前屏幕分辨率宽度与参考分辨率宽度之间的差异进行缩放。如果该设置为 1,则画布会根据当前屏幕分辨率高度与参考分辨率高度之间的差异进行缩放。

对于介于 0 与 1 之间的值,缩放基于相对宽度和高度的组合。

比如,参考分辨率是 640x480,而当前屏幕分辨率是横向模式 480x640。

如果 scaleWidthOrHeight 设置为 0,则画布按 0.75 进行缩放,因为当前分辨率宽度 480 是参考分辨率宽度 640 的 0.75 倍。画布分辨率会变为 640x853.33。此分辨率的宽度与参考分辨率宽度相同,但是具有当前屏幕分辨率的宽高比。请注意,画布分辨率 640x853.33 是当前屏幕分辨率除以缩放因子 0.75。

如果 scaleWidthOrHeight 设置为 1,则画布按 1.33 进行缩放,因为当前分辨率高度 640 是参考分辨率高度 480 的 1.33 倍。画布分辨率会变为分辨率 360x480。此分辨率的高度与参考分辨率宽度相同,但是具有当前屏幕分辨率的宽高比。请注意,画布分辨率 360x480 是当前屏幕分辨率除以缩放因子 1.33。

如果 scaleWidthOrHeight 设置为 0.5,则我们会得到所需水平缩放 (0.75) 和所需垂直缩放 (1.33),并求出平均值。但是,我们在对数空间中进行平均。常规平均值 0.75 和 1.33 会生成结果 1.04。但是,因为乘以 1.33 与除以 0.75 相同,所以两个缩放因子实际上对应于乘以 0.75 与除以 0.75,这两者的平均值应进行均等并生成中性结果。0.75 和 1.33 在对数空间中的平均值恰好是 1.0,这是我们希望得到的。因而画布分辨率最终是 480x640,这是当前屏幕分辨率除以缩放因子 1.0。

对于所有值,都采用这一机制。水平与垂直缩放因子之间的平均值是基于 matchWidthOrHeight 值的加权平均值。