Задать вопрос
PragmaGames
@PragmaGames
Увлекаюсь Unity.

Как правильно позиционировать два RectTransform?

У меня есть какая-то тривиальная задача которую я не могу решить ) Имеется overlay canvas. На нем в разных иерархиях с разными кастомными якорями, пивотами и тд лежат 2 RectTransform. Я хочу просто поместить один рект в позицию второго.
Я почему-то всегда думал что для overlay canvas будет правлиьный варинат rect1.position = rect2.position. Потому что для оверлея мировые координаты являются экранными. В итоге если смотреть по rect.position координаты соовпадают, но визуально они находятся в разных местах. Я пробовал еще пару вариантов (они ниже). В последнем спавнится правильно, но когда пытаюсь сменить родителя на нужного позиция получается "неправильно", причем во всех трех методаха это "неправильная" позиция одинаоквая.

P.S Все из-за горизонтальной группы, после того как я ее убрал все варианты начали работать, может кто-то расскажет почему так происходит ?

RectTransformUtility.ScreenPointToLocalPointInRectangle(
                 navigation.Canvas.GetComponent<RectTransform>(), 
                 rect.position, 
                 null, 
                 out Vector2 localPoint
             );


var instance = Instantiate(_holePrefab, rectTransform, false);
instance.RectTransform.sizeDelta = rectTransform.sizeDelta;
instance.RectTransform.anchoredPosition = Vector2.zero;
instance.RectTransform.SetParent(GetComponent<RectTransform>(), true);
  • Вопрос задан
  • 10 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы