2017-02-14 39 views
3

Я инстанцирование GO, который имеет компонент панели (RectTransform) как ребенок холста, существующий в сцене:Unity3D C# позиционирования панели после конкретизации

_heroSelectUI = (GameObject)Instantiate (_heroSelectUIPrefab, GameObject.Find ("Canvas").GetComponent<Transform>()); 

Когда он создан, он получает следующее значения:

Panel Values

«левые», «Вверх», «Вправо» и «Bottom» получить некоторые нежелательных значения (вероятно, из-за существующий холст ш похоже, имеет одинаковые значения).

Панели сборные конструкции значения 0, как установить их обратно в 0 после конкретизации? Я не могу найти правильные переменные для RectTransform.

ответ

5

Согласно documentation

Для растяжения Rect преобразования, это может быть проще, чтобы установить положение, используя свойства offsetMin и offsetMax. Свойство offsetMin определяет угол нижнего левого угла прямоугольника относительно нижнего левого якоря. Свойство offsetMax определяет угол верхнего правого угла прямоугольника относительно верхнего правого якоря.

Попробуйте сделать следующим образом:

RectTransform rt = _heroSelectUI.GetComponent<RectTransform>(); 
rt.offsetMin = rt.offsetMax = Vector2.zero ; 

Else, согласно документации тоже, вы можете попробовать сделать это при установке родителя:

Prefabs из UI элементы создаются в обычном порядке с использованием метода Instantiate. При установке родительского элемента созданного элемента пользовательского интерфейса рекомендуется использовать его с помощью метода Transform.SetParent с параметром worldPositionStays, установленным на false.

_heroSelectUI = (GameObject)Instantiate (_heroSelectUIPrefab, GameObject.Find ("Canvas").GetComponent<RectTransform>(), false); 

ИЛИ:

_heroSelectUI = (GameObject)Instantiate (_heroSelectUIPrefab); 
_heroSelectUI.GetComponent<Transform>().SetParent(GameObject.Find ("Canvas").GetComponent<RectTransform>(), false) ; 
+0

Спасибо много он сделал работу, в самом деле! – Csharpest

+0

О, да, я настраивался на ложные для своих кнопок, но не думал об этом и с панелью! Он выполнил эту работу, а установив worldPositionStays в false. – Csharpest

+2

@Csharpest Если ответ верный, отметьте его как принятый. – Smartis