Не работает GetComponentInChildren и создаются неправильно дубликаты объекта

Мне нужно чтобы в магазине создавались объекты сами при помощи скрипта с List, где уже указаны про них данные.

Но возникли проблемы:

1) У меня есть кнопка, у которой дочерний объект (по умолчанию Text у кнопок, я поменял на Image) - Image с компонентом Image.

Но вместо того, чтобы его изменять (button.GetComponentInChildren<Image>().sprite = list.item_image;), он изменяет компонент Image в самом объекте Button, а не в дочернем. Интересно, что если написать просто GetComponent<...>..., то свои действие не меняет и делает точно также, как и с InChildren.

2) Исходная модель, которая находится в файлах проекта, но не на сцене (шаблон) - objectButton меняется, хотя я сделал дубликат button и менял его, а не objectButton.

Т.е. как выше писал, он меняет Image в button и в шаблоне objectButton (где не должен менять), хотя я писал button.GetComponentInChildren<Image>().sprite = list.item_image; - т.е. задал дубликату button, а не исходнику в файлах игры

введите сюда описание изображения

foreach (var list in List_of_things)
        {
            //Дубликат
            RectTransform button = new RectTransform();
            //Задаём дубликату исходную модель
            button = objectButton;
            //Изменяем дубликат
            button.GetComponentInChildren<Image>().sprite = list.item_image;
            //Создаём дубликат
            Instantiate(button, UI_content);

        }

Заранее спасибо


Ответы (1 шт):

Автор решения: Steve Dekart

Мой ответ (сам нашёл решения): 1) Мне нужно всего лишь было получить дочерний объект и задать уже его Image

GameObject image = clone.gameObject.transform.GetChild(0).gameObject;         

image.GetComponent<Image>().sprite = list.item_image;

2) Спасибо RiotBr3aker, что дал понять, что я делаю ссылку. Исправил следующим образом

GameObject clone = Instantiate(objectButton, UI_content);

Всем спасибо, вопрос решён

→ Ссылка