Unity3d UI自适应之Canvas Scaler详细说明和测试项目源码

前言

UI在项目中必不可少,需求不一定都是16:9,各种比例分辨率的屏幕层出不穷,这样如何实现UI自适应这显得及其重要,这里我们就来讲解一下自适应中及其关键的Canvas Scaler。

说明

如下是官网给出的说明:

在这里插入图片描述

这里有三种缩放模式:

1.恒定像素模式(Constant Pixel Size)

无论屏幕大小如何,UI 元素都保持相同的像素大小。

2.根据屏幕缩放(Scale With Screen Size)

即:屏幕越大,UI 元素越大。

3.恒定物理尺寸(Constant Physical Size)

UI 元素无论屏幕大小和分辨率如何都保持相同的物理大小。

比较常用的是根据屏幕缩放(Scale With Screen Size),它有三种模式:

1. 匹配宽度或高度(Match Width or Height)

以宽度为参考、以高度为参考或介于两者之间的值来缩放画布区域。

2. 扩张(Expand)

水平或垂直扩展画布区域,因此画布的大小永远不会小于参考。

3. 收缩(Shrink)

水平或垂直裁剪画布区域,因此画布的大小永远不会大于参考。

搭建UI对比

这里我我们以1920*1080的参考比例搭建UI,将IU元素都设定锚点,然后通过切换不同的分辨率来看看变换的效果。

1.恒定像素模式

1920*1080 效果:
在这里插入图片描述

3000:100 效果:
在这里插入图片描述

可以看到无任何拉伸或者缩放,都是按设定的大小显示。

2.恒定物理尺寸

这个的UI因为必须按物理尺寸,左右两边中间的长条进行了缩短。
1920*1080 效果:
在这里插入图片描述

3000:100 效果:

在这里插入图片描述

都有一定的统一缩放,而且因为高度变化(1080->1000)左右两侧的间距变窄了一小点,其它也基本看不出什么变化。

3.根据屏幕缩放

这种模式下除了扩张和收缩模式,匹配宽度或高度可能有很多情况,这里就展示匹配高度、匹配宽度和匹配高宽0.5这三种情况。
而且所有根据屏幕缩放的情况都如下图:

在这里插入图片描述

1. 扩张

3000:100 效果:

在这里插入图片描述

这里可以看到,canvas的宽度进行了拓展(1920 --> 3240),高度保持不变(1080)同时整体收缩了0.9259倍,UI基本正常。

2.收缩

3000:100 效果:
在这里插入图片描述

这里可以看到,canvas的高度进行了收缩(1080 --> 640),宽度保持不变(1920)同时整体放大了1.5625倍。画面出现异常,左右两边居中的的绿色和橙色部分超出画面

3.匹配高度

3000:100 效果:

在这里插入图片描述

查看效果其实和扩张的效果是一致的。

4.匹配宽度

3000:1000 效果:

在这里插入图片描述

查看效果其实和收缩的效果是一致的。

5.匹配宽度高度

3000:1000 效果:

在这里插入图片描述

可以看到,canvas的宽度进行了收缩(1080 -->831),高度进行放大(1920 --> 2494)同时整体放大了1.2倍。画面出现异常,左右两边居中的的绿色和橙色部分已经遮挡其它元素。

运行对比

上面进行了编辑器状态下的分辨率切换测试,下面进行打包发布后在800*600分辨率下查看效果。

1.恒定像素模式

效果:
在这里插入图片描述

由于窗体小,UI混乱。

2.恒定物理尺寸

效果:
在这里插入图片描述

由于窗体小,UI混乱。

3.根据屏幕缩放

这种模式下除了扩张和收缩模式,匹配宽度或高度可能有很多情况,这里就展示匹配高度、匹配宽度和匹配高宽0.5这三种情况。

1. 扩张

效果:
在这里插入图片描述

正常显示,只是有点分散。

2.收缩

效果:
在这里插入图片描述

正常显示。

由于窗体小,UI混乱。

3.匹配高度

效果:
在这里插入图片描述

正常显示

4.匹配宽度

效果:
在这里插入图片描述

正常显示,只是有点分散。

5.匹配宽度高度

效果:
在这里插入图片描述

正常显示。

总结

开发过程中常用的方式是根据屏幕大小适配,再配合锚点基本能满足常用的UI适配;如果项目可能是超宽屏幕,可以考虑高度匹配; 如果项目使用环境在一定的分辨率范围内,可以考虑匹配高宽0.5的方式适配会更美观;如果不适配可以考虑恒定像素模式和恒定物理像素模式。

测试源码

这里将源码工程开放,更多的测试可以自行修改分辨率进行测试。

https://download.csdn.net/download/qq_33789001/19549118

Unity中,为了实现UI自适应分辨率,我们可以使用Canvas Scaler组件来进行设置。Canvas Scaler提供了几种不同的渲染模式,其中包括Constant Pixel Size、Scale With Screen Size和Constant Physical Size。其中,Scale With Screen Size是最常用的一种模式。 在Scale With Screen Size模式下,我们可以使用Match Width Or Height属性来控制UI的缩放。当Match属性设置为0时,屏幕的宽度对UI大小没有影响,只有高度会对UI大小产生影响。假设UI的宽度是Reference Resolution宽度的x倍,则UI整体缩放为Reference Resolution设置参数的x倍。同样地,当Match属性设置为1时,高度对UI大小没有影响,只有宽度会对UI大小产生影响。当Match属性设置为0.5时,宽度和高度对UI大小都会产生影响,但是宽度的影响会比高度更大。一般来说,我们会将Match属性设置为0.5,以实现较好的自适应效果。 另外,还有一种渲染模式是Constant Pixel Size,它会保持UI像素大小不变。这种模式适用于需要在不同分辨率下保持UI像素一致的情况,比如在电脑和手机上显示相同大小UI。 综上所述,Unity中的UI自适应分辨率可以通过Canvas Scaler的设置来实现,其中Scale With Screen Size模式是最常用的一种。 #### 引用[.reference_title] - *1* *2* *3* [Unity基础篇:使UI跟随屏幕分辨率变化自适应。](https://blog.csdn.net/qq_15020543/article/details/82595179)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十幺卜入

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值