Unity C#

GetComponentsInChildren в Unity C# — компоненты дочерних объектов

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

Особенности

  • Работа с потомками: рекурсивно проверяет объект и всех его потомков.
  • Возвращает массив: результат — массив всех найденных компонентов (пустой, если ничего нет).
  • Неактивные объекты: если передать true, метод учтёт и неактивные объекты.
  • Удобство: упрощает работу со сценой без лишних полей под ссылки.

Если нужен только первый компонент — бери GetComponentInChildren, чтобы не тратить ресурсы зря.

Пример кода

Скрипт красит в красный материалы всех MeshRenderer среди потомков:

using UnityEngine;

public class Example : MonoBehaviour
{
    void Start()
    {
        // Получение всех компонентов MeshRenderer у дочерних объектов
        MeshRenderer[] renderers = GetComponentsInChildren<MeshRenderer>();

        foreach (MeshRenderer renderer in renderers)
        {
            renderer.material.color = Color.red; // Изменение цвета материала на красный
        }

        Debug.Log($"Найдено рендереров: {renderers.Length}");
    }
}