Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I programmatically set a RectTransform in Unity?

I want my RectTransform to look like this:

enter image description here

I'm trying this:

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);

But it comes out like this:

enter image description here

like image 484
Justin808 Avatar asked Sep 04 '25 16:09

Justin808


1 Answers

Try this:

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 streches the rectTransform to left and right in the same proportion. As you want the left size different from the right size, you have to move the x position to adjust.

like image 119
Nathalia Soragge Avatar answered Sep 07 '25 17:09

Nathalia Soragge