Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Modular Task System — Unity (VContainer + DDD + Reactive UI)

Данный проект реализует расширяемую архитектуру заданий (tasks) для Unity с использованием:

  • DDD (Domain-Driven Design)
  • Dependency Injection через VContainer
  • Разделения ответственности (Provider, Service, Query)
  • Реактивной модели (события ProgressChanged, Completed)
  • Поддержки Tickable и Event-driven задач
  • Поддержки динамического добавления, сохранения и модульного расширения

Структура проекта

Assets/
├── Features/
│   ├── Tasks/
│   │   ├── Application/
│   │   │   ├── TaskSeeder.cs
│   │   │   └── TaskService.cs
│   │   ├── Domain/
│   │   │   ├── Core/
│   │   │   │   ├── ITask.cs
│   │   │   │   ├── ITickableTask.cs
│   │   │   │   ├── ITaskProvider.cs
│   │   │   │   └── ITaskQuery.cs
│   │   │   ├── Implementations/
│   │   │   │   ├── Tasks/
│   │   │   │   │    ├── DestroyAnyTask.cs
│   │   │   │   │    ├── DestroySpecificTask.cs
│   │   │   │   │    ├── TimeTask.cs
│   │   │   │   └── TaskProvider.cs
│   │   │   └── Support/
│   │   │       ├── TaskBase.cs
│   │   │       ├── TickedTaskBase.cs
│   │   │       └── EventDrivenTaskBase.cs
│   │   ├── Infrastructure/
│   │   │   └── TaskScope.cs
│   │   └── UI/
│   │       ├── TaskUI.cs
│   │       ├── TaskUIFactory.cs
│   │       └── Prefabs/
│   │           └── TaskUI.prefab
│
├── Gameplay/
│   ├── Destructible/
│   │   ├── Prefabs/
│   │   │   ├── DestructibleCube.prefab
│   │   │   ├── DestructibleRow.prefab
│   │   │   └── DestructibleSphere.prefab
│   │   ├── DestructibleObject.cs
│   │   └── ObjectDestroyedEvent.cs
│   └── Infrastructure/
│       └── GameplayScope.cs
│
├── Infrastructure/
│   └── GameScope.cs
│
├── Shared/
│   └── Events/
│       ├── GameEventBus.cs
│       └── IGameEventBus.cs
│
├── Scenes/
│   └── MainScene.unity

Назначение компонентов

Компонент Назначение
GameScope Глобальный контейнер зависимостей
TaskProvider Хранилище всех задач, рассылает события
TaskService Управляет задачами: инициирует, тикает, отображает
TaskSeeder Добавляет начальные задачи при запуске (временно)
TaskUI / Factory Реактивное обновление UI
DestructibleObject Генерирует события при клике
EventBus Связь между системами без прямых зависимостей

Добавление новых задач

  1. Унаследуй класс от TaskBase / TickedTaskBase / EventDrivenTaskBase
  2. Реализуйте:
    • Description
    • ProgressText
    • Progress
    • OnTick() или OnEvent(...)
  3. Добавьте задачу через TaskProvider: taskProvider.AddTask(...) или по умолчанию в TaskSeeder

Настройка сцены

  1. Создайте Canvas/Panel с VerticalLayoutGroup → это будет uiRoot
  2. Создайте TaskUI.prefab и назначьте необходимые компоненты (Text, Slider, Image)
  3. Разместите GameScope,
  4. Разместите TaskScope и GameplayScope, укажите им Parent GameScope
  5. Укажите в TaskScope префаб UI и корневой контейнер для интерфейса

Минимальные зависимости

  • Unity 2022.2+ или Unity 6+
  • VContainer
  • TextMeshPro

About

Task system made in Unity for EISVIL

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages