SceneDiDefinition05 / 13

Зависимости сцены — Scene DI

Укажем, как создать сервис и когда его запускать.

SceneDiDefinition описывает зависимости одной сцены. Её ключ должен совпадать с ключом в scenes.map.

В GameSceneDi из scene.di.ts есть два разных списка. Сокращённый фрагмент для одного сервиса:

protected override registerProviders(registrar: ValuesGroupRegistrar): void {
  registrar.singletonClass(BlockPuzzleServices.Audio, BlockPuzzleAudioService);
}

protected override registerServices(services: SceneServiceTokenRegistry): void {
  services.add(BlockPuzzleServices.Audio);
}

registerProviders задаёт, как создать сервис. В registerServices перечислим сервисы, у которых SDK должен вызвать методы входа и выхода.

Общее для игрыГлобальный DI

Системы · прогресс · фабрики поведения

Сцена bootЗагрузка
Сцена gameGameplay · Geometry · Audio
Дочерний контейнер сначала ищет локальную регистрацию, затем обращается к родителю.

Geometry только рассчитывает координаты. Его можно запросить по токену, даже если его нет в registerServices.

GameDiDefinition объединяет регистрации игры и её сцен. SDK сверяет ключи сцен и проверяет, что для каждого сервиса есть регистрация.

Источники ↗

Block Puzzle · scene.di.ts↗Geometry без lifecycle и активные сервисы сцены.