unity屏幕自适应的解决方法

时间:2024-03-15 14:56:11

问题

在一次开发手机游戏的过程中遇到屏幕显示问题:因为初始设置的参数是2160×1080 Portrait,显示没有什么问题

unity屏幕自适应的解决方法

但是有些手机的参数,例如1920×1080 Protrait,显示就出现问题

unity屏幕自适应的解决方法

接下来总结解决方法:

①先对位置明确的物体(在屏幕上边,在屏幕正中间等)使用锚点,例如摩天轮,可以把锚点设为如下:这样屏幕缩小还是放大,摩天轮依旧显示完全,位置相对于上边缘。

unity屏幕自适应的解决方法

②将Canvas的Screen Match Mode设置为Match Width Or Height,而通常竖屏是Match Hight,而横屏是Match Width,所以对于这个例子就要Match Height

unity屏幕自适应的解决方法

③不同Panel中的组件是固定在其所在的Panel中,这样将无法固定在画布中,因此需要将每个Panel铺满整个画布

④若在界面里放了张背景图,这个图片Match Height,且用锚点铺满了整个画布。这个时候假如屏幕的高度发生了变化,若屏幕Match Height,则高度不变,画布会自动对宽度进行缩放,但这时背景图片已经被锚定铺满了整个画布,因此背景图片会出现拉伸或压缩。因此对于背景图,不要让它锚定并铺满画布,而是让它使用默认的铺展方式,即居中

效果

这样就基本解决了屏幕自适应。其他屏幕也是基本没有多大显示问题

unity屏幕自适应的解决方法

有一些文章写得很好,可以参考一下

比较详细的介绍屏幕自适应:https://blog.csdn.net/qq_15020543/article/details/82595179

RectTransform详解:https://www.jianshu.com/p/dbefa746e50d