Зависимости сцены — 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 сверяет ключи сцен и проверяет, что для каждого сервиса есть регистрация.