Единство изменить образ дочернего компонента кнопки - PullRequest
0 голосов
/ 02 декабря 2018
void Start () {
    foreach (Sprite texture in spriteImages) {
        GameObject button = Instantiate (shopButtonPrefab) as GameObject;
        button.GetComponentInChildren<Image>().sprite = texture;
        button.transform.SetParent (shopButtonContrainer.transform, false);

    }
}

У меня есть кнопочный префаб, то есть кнопка, с компонентом изображения как ребенок.Я не уверен, почему мой код меняет изображение спрайта кнопок в противоположность дочерним.Важно, чтобы я изменил ребенка, изображение, которое я тоже изменяю, является кругом, поэтому я не хочу терять изображение по умолчанию в виде прямоугольника, кнопка уже есть.Как я могу изменить дочернее изображение, оставив изображение кнопки по умолчанию?

1 Ответ

0 голосов
/ 02 декабря 2018

GetComponentInChildren<t>() получает запрошенный компонент в игровом объекте или его дочерних элементах, использующих поиск в глубину, это означает, что он сначала проверит родительский объект и вернет первый найденный экземпляр.Вы можете использовать GetComponentsInChildren<t>(), это вернет массив всех компонентов, найденных в родительском и его дочерних элементах.

Альтернативой может быть получение первого дочернего элемента и вызов * GetComponent<t>() для этого дочернего элемента.

Чтобы пропустить родительский элемент, используйте GetComponentsInChildren<t>() цикл по всем найденным компонентам и, если они не являются t на родительском элементе, измените его текстуру.

Вот пример, это неэто самый эффективный способ сделать это:

void Start () {

    foreach (Sprite texture in spriteImages) {
        GameObject button = Instantiate (shopButtonPrefab) as GameObject;
        Image buttonImage= button.GetComponent<Image>();
        Image[] images = button.GetComponentsInChildren<Image>().sprite = texture;
        foreach(Image image in images) {
            if(image != buttonImage) 
            {
                image.sprite = texture;
                break;
            }
        }
        button.transform.SetParent (shopButtonContrainer.transform, false);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...