Что это: Bootstrap — синглтон инициализации для сервисов и менеджеров, которые реализуют IInit. Компонент собирает объекты из ручного списка и/или через поиск по сцене, затем вызывает Init() в порядке InitPriority. Файл: Scripts/Tools/Managers/Bootstrap.cs, пространство имён: Neo.Tools.
Как использовать:
- Добавьте
Bootstrapна сцену. - Для явного контроля добавьте нужные компоненты в
Manual Initializables. - Для автоматического поиска включите
Auto Find Components. - Реализуйте
IInitна компонентах, которым нужна упорядоченная инициализация. - Для runtime-регистрации вызывайте
Register(IInit)иUnregister(IInit).
- Manual Initializables — список компонентов для инициализации вручную.
- Auto Find Components — искать в сцене все IInit и вызывать Init() по приоритету.
- InitPriority — чем больше, тем раньше вызов.
- Init() — вызывается один раз при старте.
Register(IInit)добавляет новый сервис в bootstrap и после завершения первоначальной инициализации запускает его через общий priority-проход.Unregister(IInit)удаляет сервис из текущего набора bootstrap.- Для необязательных менеджеров и интеграций безопаснее проверять наличие singleton через
HasInstanceилиTryGetInstance(out T), а не принудительно ходить вI.
Bootstrapсобирает компоненты изManual Initializables.- Если включён
Auto Find Components, он ищет в сцене всеMonoBehaviour, реализующиеIInit. - Все найденные компоненты сортируются по
InitPriorityпо убыванию. - Для каждого ещё не инициализированного объекта вызывается
Init(). - После стартового прохода поздние регистрации через
Register()тоже проходят через тот же механизм.
Используйте Bootstrap, если:
- у вас несколько менеджеров, которые должны запускаться в определённом порядке;
Awake()иStart()уже недостаточно прозрачны;- есть сервисы, которые регистрируются после старта сцены.
using Neo.Tools;
using UnityEngine;
public class SaveStartupService : MonoBehaviour, IInit
{
public int InitPriority => 100;
public void Init()
{
Debug.Log("Save system initialized before gameplay services.");
}
}