DI-провайдеры и время жизни
Укажем, когда создавать новый объект, а когда возвращать готовый.
Для каждого такого объекта добавляем в DI-контейнер правило — провайдер. В нём указываем токен и способ получения объекта: вернуть готовое значение, создать объект из класса или вызвать фабрику. При регистрации также выбираем, сохранять объект для следующих запросов или создавать каждый раз новый.
Например, сервис прогресса может быть общим для всей игры. А если на экране два счётчика, каждому нужен свой компонент, чтобы управлять своим текстом.
Сокращённая регистрация компонента в di.providers.ts:
group.add('BlockPuzzleScoreComponent', BlockPuzzleScoreComponent);
Компонент регистрируем в ComponentsGroup под тем же именем, что и type в JSON. Узел — это элемент экрана, например текст счётчика. Если подключить этот компонент к двум текстовым узлам, SDK создаст два отдельных объекта компонента — по одному для каждого текста.
При глобальной регистрации singleton остаётся общим для игры. При регистрации в контейнере сцены он создаётся заново при каждом входе.