Unity UGUI 自适应
背景
(1)手机需要再竖屏与横屏之间切换,这样适应竖屏的UI元素的位置,未必适应横屏。
(2)即使都采用横屏模式,手机的横纵比不同,有的是2140*1080,有的是2400*1080,有的是1920*1080,等等…
(3)即使都采用相同横纵比,但屏幕分辨率不同,例如:1920*1080与2560*1440
设置元素自适应
1、默认情况下,元素的锚点在中心位置,修改分辨率后,按钮为了保持恒定的偏移,会出现超出屏幕的情况。
2、把锚点都设置在各自对应的角上,如图,
但是这样会出现两个问题,元素相对于屏幕变大了。两个元素有可能叠加在一起。
3、大小适应分辨率的变化
解决方法,按钮元素的大小跟随屏幕的大小变化。
使用Canvas Scaler组件
UI Scale Mode设置为scale with Screen Size。
设置X,Y。此处标识,元素的初始参考的大小为1400 2560。后面分辨率发生变化,元素的缩放都是依据这个初始分辨率大小。
4、再次适应横纵比的变化
问题:当竖屏变为横屏时,按钮大小会发生变化。
当竖屏变为横屏时,它会将实际分辨率的宽度与CanvasScaler参考分辨率的宽度进行比较,并将结果作为缩放因子使用。由于目前的景物分辨率为960 x 640,宽度是竖屏画的640 x 960的1.5倍,所以布局被放大了1.5倍。
该组件具有一个名为Match的值,该值可以是0(宽度)、1(高度)或介于两者之间的值。默认情况下,它被设置为0,它将当前屏幕宽度与描述的画布Scaler宽度进行比较。
将值设置为0.5
W=当前宽度/参考宽度=3/2
H=当前高度/参考高度=2/3
W*H=1,意味着按钮保持其原来大小。
如果设置为其它值。
2 ^ lerp( log(wx, 2), log(hx, 2) )
- 这类似于再宽度比和高度比之间插值,但又不是线性插值
关于图片的像素设置
UI大小 = 原图大小(Pixels) / (Pixels Per Unit / Reference Pixels Per Unit)
Sprite
Pixels Per Unit
设置完成后,注意点一下Image组件得SetNativeSize 重新计算一下。
参考文章
https://blog.csdn.net/l783929897/article/details/118892962
https://zhuanlan.zhihu.com/p/469694665