Unity中Canvas Scaler下跨画布保持Image真实高度的公式求解
Unity UI跨Canvas真实高度匹配求解公式
已知参数定义
统一变量命名以便推导:
- 实际屏幕分辨率:实际宽度W,实际高度H(竖屏场景下,如1920×1080指H=1920,W=1080)
- Canvas 1 核心参数:
- 参考分辨率:宽
CW1=2960,高CH1=1440 - 缩放规则:Scale With Screen Size,Match=1(以高度为匹配基准)
- 目标Image高度:
IH1=100
- 参考分辨率:宽
- Canvas 2 核心参数:
- 参考分辨率:宽
CW2=1440,高CH2=2560 - 缩放规则:Scale With Screen Size,Expand模式
- 待求解的Image高度:
x
- 参考分辨率:宽
通用推导公式
核心目标:让Canvas 2中Image的真实显示高度与Canvas 1中的Image完全一致,即:IH1 × Canvas1缩放因子 = x × Canvas2缩放因子
步骤1:计算Canvas1的缩放因子S1
Canvas1采用Match Height(Match=1),缩放因子由实际高度与参考高度的比值决定:
S1 = H / CH1
步骤2:计算Canvas2的缩放因子S2
Canvas2采用Expand模式,缩放因子取「实际宽/参考宽」和「实际高/参考高」中的较小值(保证UI内容完整显示):
S2 = min( W/CW2 , H/CH2 )
步骤3:求解x
将S1、S2代入真实高度等式,整理得最终公式:
x = IH1 × ( H / CH1 ) / min( W/CW2 , H/CH2 )
示例验证(以1920×1080分辨率为例)
代入参数:H=1920,W=1080,CH1=1440,CW2=1440,CH2=2560,IH1=100
- 计算S1:
1920/1440 = 1.333333 - 计算S2:
min(1080/1440, 1920/2560) = min(0.75, 0.75) = 0.75 - 求解x:
100 × (1.333333 / 0.75) = 177.7778
与示例结果完全匹配。
内容的提问来源于stack exchange,提问作者Jinn
相关产品推荐
相关产品推荐

