前言
在游戏开发中,UI适配一直是很重要的一部分。由于不同终端的分辨率(特指比例)不一,经常导致UI无法正常展示。但是如果将所有节点都用Widget组件做停靠处理,会导致游戏在运行时需要处理的Widget组件数量变多,降低性能。这里我提供另外一种比较通用的方法。
九锚点法
九锚点法通过在界面上标定游戏内可视区域的中心、四个顶点和四条边的中点,将UI上的元素交给9个节点管理。
![](https://img.haomeiwen.com/i28752965/7aad19ca1057eb6a.png)
场景内节点树如图,红框内的节点为9个“锚点”:
![](https://img.haomeiwen.com/i28752965/37330426a4b6a5b7.png)
首先将Canvas
节点Widget组件内Left、Right、Top和Bottom的值都设置成0px,并选上锁定
![](https://img.haomeiwen.com/i28752965/ec901c926aed806b.png)
以左上角的TopLeft
节点为例,为其挂上Widget组件,将Widget组件的水平对齐设置成左对齐,Left值为0px,垂直对齐设置成上对齐,Top值为0px:
![](https://img.haomeiwen.com/i28752965/e5534895e15ada00.png)
同时,建议TopLeft
节点的尺寸设置成(0,0)。其余8个“锚点”的配置参考TopLeft
节点,修改水平对齐和垂直对齐即可,不再赘述了。如果用不到某些“锚点”节点,也可以不用加入到场景中。
如果需要加入其他UI节点到场景中,只需要放入到9个“锚点”节点之下并设置它们的坐标就可以了,这些节点会跟随“锚点”。
测试
在左上角的“锚点”中放入一个Label,移动到合适位置。
![](https://img.haomeiwen.com/i28752965/235ae73fe08b6eca.png)
运行,可以看到在改变了可视区域尺寸(图中为旋转)后,左上角的Label依然出现在正确的区域内。
![](https://img.haomeiwen.com/i28752965/8e74183306dab1a7.png)
![](https://img.haomeiwen.com/i28752965/2c99b1a808ffdd00.png)
说明
以上基于Cocos Creator3.6.2版本编写,与3.0版本以下有些出入,总体的思想是差不多的。
网友评论