Unity C#

FindObjectOfType в Unity C# — поиск единственного объекта типа

Метод FindObjectOfType — встроенный метод Unity, который находит первый объект заданного типа на сцене. Он выручает, когда нужна ссылка на компонент или объект, а прямой привязки в инспекторе нет.

Но учти: метод относительно медленный, особенно если объектов на сцене много — Unity перебирает их все. Поэтому применять его стоит в исключительных случаях, например для разовой инициализации в Start.

Особенности

  • Поиск объекта: возвращает первый найденный объект нужного типа, а если таких нет — null.
  • Медленный вызов: неэффективен при частом использовании, так как проверяет все объекты сцены.
  • Для разовой инициализации: уместен в Awake или Start.

Пример кода

GameManager при старте ищет игрока на сцене:

using UnityEngine;

public class GameManager : MonoBehaviour
{
    private Player player;

    void Start()
    {
        // Поиск объекта типа Player в сцене
        player = FindObjectOfType<Player>();

        if (player != null)
        {
            Debug.Log("Игрок найден: " + player.name);
        }
        else
        {
            Debug.LogError("Игрок не найден в сцене!");
        }
    }
}