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);
}
}