您当前的位置: 首页 >  unity

Unity分辨率适配方案设置

发布时间:2021-12-12 15:13:31 ,浏览量:6

有关适配问题官方文档的连接,有兴趣的小伙伴可以查阅一下。

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分辨率适配

关注
打赏
1688896170
查看更多评论

暂无认证

  • 6浏览

    0关注

    115984博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0561s