Unity C#

FindObjectsOfType в Unity C#: поиск всех объектов типа

Метод FindObjectsOfType ищет все активные объекты определённого типа на текущей сцене и возвращает их массивом. Удобно, когда нужно работать сразу с несколькими объектами одного типа.

Метод ресурсоёмкий, поэтому вызывать его часто (например, в Update) не стоит — лучше один раз при инициализации.

Особенности

  • Массив объектов: возвращает все объекты указанного типа из активной сцены.
  • Ресурсоёмкость: при большом числе объектов работает медленно — не для частой логики.
  • Только активные: неактивные объекты не находит, для них есть Resources.FindObjectsOfTypeAll.

Пример кода

Менеджер врагов собирает всех Enemy на сцене и наносит им урон со временем:

using UnityEngine;

public class EnemyManager : MonoBehaviour
{
    private Enemy[] enemies;

    void Start()
    {
        // Поиск всех объектов типа Enemy в сцене
        enemies = FindObjectsOfType<Enemy>();

        Debug.Log("Количество врагов: " + enemies.Length);
    }

    void Update()
    {
        // Пример взаимодействия с найденными врагами
        foreach (var enemy in enemies)
        {
            if (enemy != null)
            {
                enemy.TakeDamage(1 * Time.deltaTime); // Наносим урон со временем
            }
        }
    }
}