Что это: Атрибут [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. Это сделано для того, чтобы случайно не перезаписать ссылку, которая была назначена вручную.