有关适配问题官方文档的连接,有兴趣的小伙伴可以查阅一下。
Anchors:https://docs.unity3d.com/Manual/UIBasicLayout.html
CanvasScaler:https://docs.unity3d.com/Manual/script-CanvasScaler.html
多分辨率的适配:https://docs.unity3d.com/Manual/HOWTO-UIMultiResolution.html ————————————————
讨论一下Unity中关于多分辨率下UI适配的问题。
适配需要解决的问题 我们在项目开发时通常都会在一个标准的分辨率下进行开发,但我们发布的时候则会发布到不同的平台和设备上去,不同的平台和设备他们的分辨率则是不一样的。所以适配需要解决以下两个方面的问题:
多分辨率下UI的大小尺寸保持不变。(方案:Canvas画布)
多分辨率下UI的相对位置保持不变。(方案:Anchors锚点)
只有解决了这两个问题,才会让我们在不同分辨率下的UI看起来和开发时分辨率下的UI一样。
来说适配大小。在Unity中UI都是放置在Canvas对象下的,在不同分辨率下为了达到适配的目的,我们可以通过修改Canvas对象上RectTransform的Width、Height和Scale来实现(主要是Scale)。但是Canvas对象的RectTransform是无法直接修改的,我们需要借助Unity中的CanvasScaler组件来进行修改,下面我们就来了解一下CanvasScaler。
CanvasScaler中的UI Scale Mode有三种模式:Constant Pixel Size、Scale With Screen Size、Constant Physical Size。而我们适配需要使用到的是Scale With Screen Size模式,其作用是根据屏幕分辨率来进行缩放适配。Constant Pixel Size模式是保持UI原始像素尺寸不变来进行适配,Constant Physical Size是保持UI原始物理尺寸进行适配,这两个模式有兴趣的小伙伴可以自行了解一下。
接下来我们详细讲Scale With Screen Size模式。Scale With Screen Size模式是根据标准分辨率计算出当前分辨率下Canvas的缩放比例,来修改Canvas的Scale值进行适配的。在Scale With Screen Size模式中有两个重要的参数。第一个是Reference Resolution,Reference Resolution就是我们开发时使用的标准分辨率,Canvas的缩放都是以Reference Resolution的值为标准进行计算的。第二个是Screen Match Mode,Screen Match Mode用于选择屏幕的匹配模式,其中有三种模式:Match Width or Height、Expand、Shrink。
Match Width or Height模式是以标准分辨率的Width、Height或者两者的中间值为参考计算缩放的。下面示例的标准分辨率为1280*720,实际分辨率为1024*768,以Width值为参考。
原文链接:https://blog.csdn.net/huoyixian/article/details/89250677
在适配不同分辨率比例的手机上UI遇到了一些问题.
一、Canvas设置(UI的画布)
(选中场景中的Canvas,然后在Inspector窗口中设置)
1.设置Canvas大小缩放:Render Mode:设置UI与3D场景中的物体的渲染关系.
1)ScreenSpace-Camera模式,可以在下面RenderCamera赋值的摄像机中的3D物体 粒子特效等渲染到UI中,并且能设置层级.
2)ScreenSpace-OverLay模式,比较适合纯UI,UI显示在所有3D物体前面.
3)WorldSpace模式,则是把UI放到3D场景中渲染.
Canvas Scale组件:
设置UI的适应缩放.
1) UI Scale Mode:
模式1.Scale With Screen Size:根据原屏幕大小进行变化比较小的缩放.(该模式下,能够较好地适应不同分辨率和大小的屏幕)
衍生选项- Renference Resolution:设置开发时屏幕分辨率,做为参考分辨率.
Screen Match Mode:不同像素比的场景显示UI的模式
1 Expand:扩展拉伸.(拉伸后分辨率>=Renference Resolution的参考分辨率)
2 Match Width or Height:按原始比例匹配宽度或者高度.(屏幕比例不同会有黑边)
3 Shrink:收缩.(收缩后分辨率<=Renference Resolution的参考分辨率)
模式2.Constant Pixel Size:根据原像素大小进行显示.(该模式下,屏幕的分辨率会影响UI的大小)
衍生选项- Scale Factor:像素倍数,即放大的倍数.(听说用该方法放大后不会失真)
模式3.Constant Physical Size:根据固定的物理大小显示.(该模式下,屏幕的大小和分辨率不会影响到UI显示的大小)
2)Reference Pixels Per Unit:每单位参考像素数.(与上面图片设置中的"Pixels Per Unit"大小相对应)
假如想让UI可以自适应各种分辨率比例的手机屏幕的话,可以参考上图的设置,Reference Resolution根据你的开发的分辨率比例设置.
2.设置UI组件锚点位置:(上面二讲的是整体UI画布的设置,这里讲每个UI元素配合缩放的设置,UI元素的像素和画布像素是不一样的,都需要进行设置.)
Canvas内的UI元素,都有Rect Transform-Anchor组件,若想要适配不同分辨率比例的屏幕,需要对UI元素进行锚点设置.
1.不需要拉伸的UI就在下面这9个锚点预设中选择.(比如中间/边上/角上的按钮等)
例如,分辨率比例改变后,要保持该按钮在左上角,就选择topLeft锚点位置.
2.需要拉伸的UI就在下面这7个锚点预设中选择.(比如背景/横幅/竖幅等等)
例如,中间横幅需要横向扩展到屏幕两边,就选择middleStretch横向拉伸.
————————————————
原文链接:https://blog.csdn.net/qq_29847807/article/details/103807548
使用Unity的UGUI设计游戏UI考虑在不同分辨率机器下UI的大小缩放以及位置的自适应。
首先我们来了解一下相机的渲染模式和Canvas下的Canvas Scaler
一、相机渲染模式和画布Unity基础篇:画布的相机渲染模式_Peter_Gao_的博客-CSDN博客
二、Constant Pixel Size像素:像素大小始终不变,即一个100*100的图片在任何的分辨率下都占用100*100的像素。简单比较好理解。Scale Factor是表示缩放倍数。比如是2时,即将上面图片整体是缩放两倍是不变形的。
三、Scale With Screen Size这种模式应用场景多一点。首先逐个说明下:
1)Reference Resolution是开发时的分辨率。以后缩放就参考它。
2)Screen Match Mode 又包含三种模式
* Match Width Or Height。下面包含一个Macht属性,当处于最左边时,屏幕高度对于UI大小完全没有任何影 响,只有宽度会对UI大小产生影响。假设宽度为Reference Resolution宽度的x倍,则UI整体缩放为Reference Resolution设置参数的x倍。也就是说只有宽度等于Reference Resolution宽度时,才能做到pixel perfect,否则像素就会有拉伸 ,当处于最右边时,与上述情况正好相反,决定整体缩放值的是高度,而宽度则没有任何影响 ,处于中间某处时,对上述两者的影响进行权重加成 。所以一般我们都把其放在0.5的位置(0.618也很舒服哦)。
* Expand 缩放不剪切:当屏幕分辨率与设定不同时,选择变化较小的一个方向(横向还是纵向),进行缩放显示
,它会保证设计时分辨率能显示出来的缩放后依然能显示出来。
* Shrink 缩放剪切:当屏幕分辨率与设定不同时,选择变化较大的一个方向(横向还是纵向)进行缩放显示
,对于超出的部分剪切不显示。
四、Constant Physical Size保持物理上不变的方式,这个应用场景较少,具体是这样的,比如你电脑分辨率是 1000*2000而你的手机分辨率也是1000*2000。虽然电脑屏幕比手机屏幕大的多,但是他们最后显示出来图片的物理大小是一样的。
*****************************************************************************************************************************************************
首先我们设置好Canvas参数,假设我们开发基准为480x800的分辨率。
然后在Canvas下面创建4个Button,并设置锚点分别对应四个角落,对UGUI的RectTransFrom不熟悉的同学可以去看下这位博主的文章。http://www.cocoachina.com/game/20160602/16570.html
这是480x800的显示效果
这是1920x1080的显示效果,大功告成!
Canvas Scaler适配模式部分摘自https://blog.csdn.net/st75033562/article/details/52355239 原文链接:https://blog.csdn.net/qq_15020543/article/details/82595179
例:背景图分辨率适配方案:环境背景图使用全屏铺满的方式适配,主角图使用等宽高比缩放的适配方式
Unity UGUI背景图屏幕分辨率适配_linxinfa的专栏-CSDN博客_ugui分辨率适配
