Skip to content

Latest commit

 

History

History
44 lines (27 loc) · 2.7 KB

File metadata and controls

44 lines (27 loc) · 2.7 KB

[FindInScene]

Что это: Атрибут [FindInScene] автоматизирует поиск одного компонента указанного типа на текущей активной сцене и автоматически назначает его в поле.

Как использовать: см. разделы ниже.


Пространство имен: Neo Путь: Scripts/PropertyAttribute/InjectAttribute/FindInSceneAttribute.cs

Описание

Атрибут [FindInScene] автоматизирует поиск одного компонента указанного типа на текущей активной сцене и автоматически назначает его в поле.

Это очень удобно для получения ссылок на уникальные объекты-менеджеры (например, GameManager, AudioManager, LevelManager и т.д.), когда вы не хотите использовать паттерн "Одиночка" (Singleton) или назначать ссылку вручную в инспекторе.

Как использовать

Поместите атрибут над полем, тип которого является компонентом, который вы хотите найти.

using UnityEngine;

public class Player : MonoBehaviour
{
    [FindInScene]
    private UIManager uiManager;

    void Start()
    {
        uiManager.ShowPlayerHealth(100);
    }
}

Когда вы выберете GameObject с компонентом Player в инспекторе, если поле uiManager будет пустым (null), редактор автоматически выполнит поиск компонента UIManager на сцене и подставит найденную ссылку в это поле.

Важные замечания

  • Уникальность: Атрибут находит только первый попавшийся активный компонент указанного типа. Порядок поиска не гарантирован. Поэтому лучше всего использовать этот атрибут для компонентов, которые существуют на сцене в единственном экземпляре.
  • Перезапись: Поиск и автозаполнение происходят только в том случае, если поле равно null. Это сделано для того, чтобы случайно не перезаписать ссылку, которая была назначена вручную.