有关适配问题官方文档的连接,有兴趣的小伙伴可以查阅一下。
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:收缩.(收缩后分辨率
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?