Unity:UGUI之Canvas详解(屏幕适配)

新建一个画布 Canvas

1)第一个组件:RectTransform 

① Transform的子类

② Anchors 锚点:屏幕适配重点!设置锚点,想象锚点类似一根钉子,把一块弹力布某个角钉住,使劲拉伸,被钉住的这个角不会变。点开锚点框后按住Alt键,可以自动对齐/平铺。

 ③ 获取UI的宽高最安全的方式

RectTransform rect = transform.GetComponent<RectTransform>();
Debug.Log("获取UI的宽:"+rect.rect.width);
Debug.Log("获取UI的高:"+rect.rect.height);

 

 左边按下是蓝图模式,用来控制Rotation和Scale的,旋转和缩放,Panel的大小不会变。

(Panel指RectTool模式下物体的边框,即新建一个空物体,只添加RectTransfrom组件)

右边R按下是原始编辑模式,用来控制Anchors和Pivot。

2)第二个组件:Canvas

① Render Mode

Screen Space - Overlay:显示在所有层级之上。画布会缩放来适应屏幕,直接渲染而不参考相机(没有相机也能渲染)。

Screen Space - Camera:这个模式要参考相机,UI和相机的距离。例如在UI层上面绘制linerender,因为linerender是3D的,要把linerender显示在UI层前面才能看见,此时就需要此模式,并且把UI距离调到比linerender Z轴更远处。

 World Space:将UI视为平面渲染。其他对象可以位于UI后面、中间穿透、前面。画布大小取决于与相机视角和距离。例如显示在人物头顶的血条。

 3)第三个组件:Canvas Scaler 画布缩放器  屏幕适配重点!

Q:之前讲过设置锚点可以让图标始终保持在四个角,图标位置正确,但图标大小却不会随屏幕大小变化,如果屏幕很小,图标就会过大遮挡住画面。

那么怎么让图标能随屏幕大小放大缩小呢?

A:Canvas Scaler组件,UI Scale Mode 选择 Scale With Screen Size模式。

Q:这样就正确了吗?你会发现640*960竖屏设置好的图标,到了960*640横屏还是会变大。

A:这是因为Match参数默认是0,即以width为标准,将这个参数调至0.5,即以width和height为标准。

你以为这样就对了吗?实际上只有Expend模式是按比例拉伸,其他两个模式在极端情况下都会发生裁切。如果想要始终显示所有的UI就要选择Expend。

 

posted @ 2021-12-18 18:27  番茄玛丽  阅读(2678)  评论(0编辑  收藏  举报