如何在Unity中通过编程设置RectTransform?

4
我希望我的RectTransform看起来像这样:

enter image description here

我尝试了以下代码:
m_Viewport = go.GetComponent<RectTransform>();
m_Viewport.anchorMin = Vector2.zero;
m_Viewport.anchorMax = Vector2.one;
m_Viewport.localPosition = Vector3.zero;
m_Viewport.localScale = Vector3.one;
m_Viewport.offsetMin = new Vector2(30, 0);
m_Viewport.offsetMax = new Vector2(0, 0);
m_Viewport.sizeDelta = new Vector2(-20, 0);

但结果却是这样的:

在此输入图像描述

2个回答

6

试试这个:

float left = 30;
float right = 20;

m_Viewport.anchorMin = Vector3.zero;
m_Viewport.anchorMax = Vector3.one;
m_Viewport.anchoredPosition = new Vector2((left - right)/2, 0f);
m_Viewport.sizeDelta = new Vector2(-(left + right), 0);

sizeDelta属性按比例将rectTransform在左右方向上拉伸。如果你想让左侧和右侧大小不同,就需要通过调整位置来实现。


1
请解释一下这是如何工作的。里面的东西一点也不合理,但它却正确地完成了任务。如果我想让“Left”变成60,我需要改变什么? - Justin808
1
说实话,我只是将检查器置于调试模式并复制了值。但我想我找到了一种更易读的代码。我将编辑答案。 - Nathalia Soragge
没问题,很高兴能帮忙! :) - Nathalia Soragge

0
我认为设置sizeDelta的方式是错误的。
m_Viewport.sizeDelta = new Vector2(-(left + right), 0);

我把它改成了:
m_Viewport.sizeDelta = new Vector2(parentSizeDelta.x - (left + right),                                         parentSizeDelta.y - (top + down));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接