1.UGUI自适应锚点运用:最近在做Unity的UGUI的自适应的东西,谈到自适应,不得不涉及到锚点的运用,大多时候通过简单的锚点拖拽也可以实现自适应,但是有时候面对一些比较特殊的情况不得不适用代码来进行控制;首先必须明白一点,锚点是基于其父物体的。
做面板自适应的时候,只需要将父物体的自适应处理好,子物体在搭建的时候默认认为父物体已经自适应完毕去基于父物体搭建就可以了。
①sizeDelta的x和y指的是该UI面板到锚点的距离,锚点在UI内部为正,外部为负;
//改变UI面板大小的API
gamePlay_Panel.GetComponent<RectTransform>().sizeDelta = new Vector2(correct_width, correct_Height);
②rect.width和rect.height则为这个UI面板的宽和高;
gamePlay_Panel.GetComponent<RectTransform>().rect.width;
gamePlay_Panel.GetComponent<RectTransform>().rect.height
③rect.position的x和y为UI的边缘到UI中心的距离,其绝对值大小为rect.width和rect.heigh的一半,注意,其大小与锚点无关,与UI中心轴位置也无关,没有任何关系;
gamePlay_Panel.GetComponent<RectTransform>().rect.position;
这三个理解起来就第一个难一点,因为代码的提示不清不楚,这里我说明一下sizeDelta的大小(UI面板到锚点的距离),不要用屏幕的尺寸来判断UI的大小,screen的width,height和rect的width,height是不一样的,当锚点定在父物体的两边缘线上时,我们通过父物体UI的rect的width,height与该UIrect的width,height相减可直接得到对应的sizeDelta的x和y的值。
然后anchoredPosition这个值暂时没太明白是什么意思,如果有网友知道,欢迎补充,谢谢。
2.游戏面板为3D物体,且渲染的3D摄像机为正交,则可以改变摄像机的正交尺寸来实现自适应。
Camera.main.orthographicSize = value