Рубрики
Canvas RectTrasform UI Unity

Трансформация UI элемента на сцене

//загрузка ui префаба
var go = PrefabUtility.LoadPrefabContents(ФайлПрефаба);
//после переноса объекта в родитель изменятся Scale 
go.transform.SetParent(gameObject.transform);         
//получение компонента Трансформация у элемента ui       
var rt = go.GetComponent<RectTransform>();
//настройка центра элемента ui        
rt.pivot = Vector2.zero; 
//масштаб элемента ui        
rt.localScale = Vector3.one;  
//размеры ui элемента width,height,depth       
rt.sizeDelta = new Vector3(60, 30, 0);
//изменить Top координаты элемента относительно родителя
rt.SetInsetAndSizeFromParentEdge(RectTransform.Edge.Top, 0.5f*(gameObject.transform.childCount-2)* (rt.rect.height+10), rt.rect.height);
//изменить Right координаты элемента относительно родителя
rt.SetInsetAndSizeFromParentEdge(RectTransform.Edge.Right, rt.sizeDelta.x, rt.rect.height);
//изменение центра элемента ui по оси x
rt.pivot = new Vector2(2,0);
//Растянуть ui элемент относительно родителя по оси x
rt.localPosition = new Vector3(0, rt.localPosition.y, 0);         rt.anchorMin = new Vector2(0, 0.5f);         
rt.anchorMax = new Vector2(1, 0.5f);
//После можно прилепить ui вверх относительно родителя
rt.SetInsetAndSizeFromParentEdge(RectTransform.Edge.Top, 0.5f * (gameObject.transform.childCount - 2) * (rt.rect.height + 10), rt.rect.height);
//прилепить ui элемент вверх-слева относительно родителя
rt.SetInsetAndSizeFromParentEdge(RectTransform.Edge.Left, 0, rt.rect.height);
//изменить LEFT         
rt.offsetMin = new Vector2(left, rt.offsetMin.y);         
//изменить RIGHT         
rt.offsetMax = new Vector2(right, rt.offsetMax.y);
//изменить TOP
rt.offsetMax = new Vector2(rt.offsetMax.x, top);
//изменить BOTTOM
rt.offsetMin = new Vector2(rt.offsetMin.x, bottom);