注意事项
在阅读本文之前,需要首先掌握如何在 Inspector 面板中设置 RectTransform。本文起到将代码与 Inspector 面板对应之用。
设置大小和位置
使用代码动态设置 RectTransform 的方式与 Anchors 有关,对不同的 Anchors 取值,需要使用不一样的函数。参考下列情形。
各种情形
情形 1:Anchors 汇聚于中心
此时应使用如下代码:
rectTransform.anchorMin = new Vector2(0.5f, 0.5f);
rectTransform.anchorMax = new Vector2(0.5f, 0.5f);
rectTransform.sizeDelta = new Vector2(11, 8);
rectTransform.anchoredPosition = new Vector2(2, 3);
对应效果如下:
这也是国内大多数帖子中说的,使用 sizeDelta
设置 RectTransform 尺寸的方法。但这种方法仅当 Anchors 位于中心(其他表述:四个值重合、一致、相同、together)时才成立;然而,在实际业务中 Anchors 位于中心的情况,没有那么经常地被使用。 关于 sizeDelta
,见:docs.unity3d.com/ScriptRefer…
情形 2:Anchors 汇聚于顶部中心
此时应使用如下代码:
rectTransform.anchorMin = new Vector2(0.5f, 1);
rectTransform.anchorMax = new Vector2(0.5f, 1);
rectTransform.SetInsetAndSizeFromParentEdge(RectTransform.Edge.Top, 2, 52);
rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizo