У меня есть какая-то тривиальная задача которую я не могу решить ) Имеется 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);