初入程序深似海呀!在做项目UI时必须经历的一个问题就是UI自适应问题,啥也不懂的时候,难以避免的就是稍微一调整屏幕分辨率,UI就变了,就变了!!!这就很难受。

那么下面来稍微了解一下UI自适应。

官方文档:https://docs.unity3d.com/Manual/script-CanvasScaler.html

unity ui适配不同屏幕比 unity ui大小_unity ui适配不同屏幕比

UI Scale Mode:确定如何缩放画布中的UI元素。

  • Constant Pixel Size:使UI元素保持相同的像素大小,而不管屏幕大小。
    + Scale Factor:通过这个因素缩放画布中的所有UI元素。
  • Scale With Screen Size:屏幕越大,UI元素越大。
    + Reference Resolution:UI布局设计的分辨率。如果屏幕分辨率较大,UI将按比例放大;如果屏幕分辨率较小,UI将按比例缩小。
    + Screen Match Mode:长宽比,用于缩放画布区域的模式,当前分辨率与参考分辨率不匹配。
    + Match:确定缩放是使用宽度或高度作为参考,还是两者之间的混合。
  • Constant Physical Size:使UI元素保持相同的物理大小,而不管屏幕大小和分辨率。
    + Physical Unit:指定位置和大小的物理单位。
    + Fallback Screen DPI:假定屏幕上的DPI是未知的。
    + Default Sprite DPI:像素每英寸使用的精灵有一个“像素每单位”设置匹配“参考像素每单位”设置。
    Reference Pixels Per Unit:根据上述不同选项而变化。

unity ui适配不同屏幕比 unity ui大小_UI_02


当我们直接在Scene中创建一个Canvas而不做设置就开始UI制作,只有将大部分的UI的自适应设置成绝对定位,才可能避免改变分辨率UI产生不可描述的离奇变化!

unity ui适配不同屏幕比 unity ui大小_unity ui适配不同屏幕比_03


如果将 UI Scale Mode 的属性更改为 Scale With Screen Size,那么效果就不一样了。

官方解释使用具有屏幕大小模式的缩放,可以根据指定参考分辨率的像素指定位置和大小。如果当前屏幕分辨率大于参考分辨率,画布将保持只有参考分辨率的分辨率,但将按比例放大以适应屏幕。如果当前屏幕分辨率小于参考分辨率,画布也会相应地缩小以适应需要。

也就是说做了这个一个小改动,那么你就不用那么苦逼的调整大部分UI的绝对定位了。

UI 的道路还是很长的,后面有问题了再做修改!

言至于此,大佬们不喜勿喷哈!