Canvas Scaler

作用:分辨率自适应,计算ui控件的缩放系数
不同分辨率下Ui控件大小自适应,不负责位置

Game窗口的Stats(统计数据 )查看屏幕分辨率
Canvas的Rect Transform组件 宽高(Width,Height)乘以缩放(X,Y)=屏幕分辨率
Reference Resolution 参与分辨率自适应的计算

适配方式UI Scale Mode :

Constant Pixel Size

不论屏幕大小 UI始终保持相同像素大小
没有自适应效果 始终保持UI的大小
可以通过代码 调整Scale Factor 实现缩放
Scale Factor 缩放系数 影响UI元素的缩放
Reference Pixels Per Unit: 一个单位多少像素
图片设置中的Pixels Per Unit 和 该 参数一起计算 得到UI的大小
Set Native Size的大小 =图片大小(像素)/ (Pixels Per Unit /Reference Pixels Per Unit)

Scale With Screen Size

根据屏幕尺寸进行缩放UI
Reference Resolution 参考分辨率
Screen Match Mode 屏幕匹配模式 屏幕宽高比例 不适用 参考分辨率比例时 使用匹配模式

1.Expand

水平或者垂直 扩展 画布区域 根据宽高的变化缩放画布 可能存在黑边
对Canvas Size宽或者高进行拉伸 大于参考分辨率
缩放系数:Mathf.Min(屏幕宽/参考分辨率,屏幕高/参考分辨率高)
画布尺寸=屏幕尺寸/缩放系数
最大程度缩小Ui 保留所有Ui细节 会有黑边

2.Shrink

水平或者垂直 裁剪 画布区域 根据宽高的变化缩放画布 可能会裁剪
对Canvas Size宽或高进行收缩 小于参考分辨率
缩放系数:Mathf.Max(屏幕宽/参考分辨率,屏幕高/参考分辨率高)
最大程度放大Ui 让UI元素能够填满画面 ui可能被裁剪

3.Match Width Or Height

Match:确定用于计算的宽高屏幕匹配值
以宽高或者两者的平均值为参考 缩放画布
float logWidth=Mathf.Log(屏幕宽/参考分辨率宽,2);//取对数
float logHeight=Mathf.Log(屏幕高/参考分辨率高,2);//取对数
float logWeightedAverage=Mathf.Lerp(logWidth, logHeight,m_MathWidthOrHeight);
scaleFactor=Mathf.Pow(2,logWeightedAverage);
竖屏:match=0 高度增大 ui不缩放 可能有黑边 宽度改变 ui缩放
横屏:match=1 宽度增大 ui不缩放 可能有黑边 高度变化 ui缩放

Constant Physical Size

无论屏幕大小和分辨率如何 Ui 元素始终保持相同物理大小
DPI:每英寸长度内的像素数目
Physical Unit 物理单位
1英寸=2.54Centimeters 厘米
=72Point 点
=6Picas 皮卡
新的单位参考像素=参考单位像素*Physical Unit / Default Sprite DPI
原始尺寸=图片大小/(Pixels Per Unit/新单位参考像素)
Fallback Screen DPI 找不到DPI时的 备用DPI
Default Sprite DPI 默认图片DPI

恒定像素 与 恒定物理区别

同:UI不缩放 不自适应
不同:相同尺寸 不同DPI设备下
同样的长度下 DPI大的像素多 每个像素的长度就小
DPI小的像素少 每个像素的长度就大
恒定像素 切换到不同DPI环境下 图片的像素不变化 但显示的尺寸变化
恒定物理 切换到不同DPI环境下 图片的像素和尺寸不变化

3D模式

Canvas Mode 切换到World Space
Canvas Scaler 出现3D模式
Dynamic Pixels Per Unit UI中动态创建的位图中 单位像素数 数值增大 ui更清晰 例如图片 文本等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值