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。