У меня есть пользовательский интерфейс в Unity, в котором я постоянно перемещаю элементы из одного места в другое.
Некоторые из упомянутых элементов являются контейнерами, и я решил предоставить каждому контейнеру собственный дочерний объект gameObject, представляющий и содержащий фактический контейнер контент после открытия (он же активировал gameObject). Я решил сделать это таким образом, чтобы упростить отслеживание фактических контейнеров каждого контейнера.
Что я хочу: при изменении родительского элемента (то есть его перемещении, поскольку все мои родители имеют группы макетов) дочерний объект gameObject должен оставаться в той же позиции в мире
Что у меня: при изменении родительского элемента дочерний объект gameObject меняет мировую позицию
Что я могу сделать: я мог каждый раз сбрасывать положение дочернего объекта gameObject , как я делаю в первый раз, когда создается экземпляр gameObject с использованием этого кода (относительный gameObject растягивается)
Vector3[] corners = new Vector3[4];
transform.parent.parent.GetComponent<RectTransform>().GetWorldCorners(corners);
float width = corners[2].x - corners[0].x;
float height = corners[1].y - corners[0].y;
RectTransform itemTransform = item.transform.GetChild(1).GetComponent<RectTransform>();
itemTransform.position = new Vector3(width / 2, height / 2);
Что я хочу знать: есть ли что-то встроенное в Monobehavior или Unity, что предотвращает запуск дочернего gameObject перемещение
Вот пошаговые изображения одного из случаев, которые он может применить:
Здесь у меня есть сумка под названием «sa c a dos "в моей комнате
Теперь я открыл сумку, которая отображается в центре экрана
Теперь я создал предмет сундука под названием "Coffre" в том же месте, в результате чего сумка будет помещена в качестве дочернего элемента контейнера сундука child gameObject
Здесь я открыл сундук, расположенный в нужном месте, и показал сумку, которая была помещена в качестве дочернего элемента контейнера сундука. Child gameObject
Здесь я открыл сумку в сундуке, в результате чего дочерний объект gameObject мешка оказался не на своем месте, так как положение мешка изменилось