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); // Наносим урон со временем
}
}
}
}