Реализована интерактивная программа для взаимодействия с 3D-объектами на сцене. Пользователь может управлять камерой, настраивать свойства объектов (прозрачность, цвет, видимость) через UI, а также сохранять/загружать состояние сцены. Проект соответствует всем базовым требованиям и включает дополнительные функции.
- Управление камерой:
- Вращение: Удерживать ПКМ + движение мыши (горизонталь/вертикаль)
- Приближение/отдаление: Колесико мыши
- Вертикальное перемещение: Удерживать СКМ + движение мыши (вверх/вниз)
- Фоккусирование на объекте: ЛКМ по объекту с тегом
Selectable-> камера центрируется на нём, ЛКМ по невыбираемому объекту -> камера сбрасывает фокус
- Взаимодействие с объектами:
- Настройка прозрачности (20%, 40%, 60%, 80%, 100%)
- Выделение объектов (контурная подсветка - готовый outline shader из asset store, в будущем возможно добавление кастомного outline shader если это необходимо)
- Смена цветов (на выбираемых объектах с помощью скрипта
MaterialInstancer.csможно разместить несколько материалов и при нажатии соответствующей кнопки на UI панели материалы будут последовательно сменяться, при этом сохраняя параметр прозрачности) - Включение/отключение видимости на сцене
- Групповые операции (выделить/скрыть всё)
- UI-панель управления:
- Динамический список объектов, который строится из префабов в соответствии с выбираемыми объектами на сцене
- Кнопки управления для каждого объекта:
- Выделение
- Видимость
- Глобальные кнопки управления:
- Секция прозрачности (настройка прозрачности выделенных объектов)
- Циклически поменять цвет у выбранных
- Показать/Скрыть все объекты
- Выделить все/Убрать выделение со всех
- Сохранение и загрузка
- Кнопка сохранения сохраняет позицию камеры, объект на котором камера была сфокусирована, настройки цвета, прозрачности и видимости для всех объектов. Сохранение работает независимо от сессии
- Кнопка загрузки достает данные из JSON файла и применяет их к сцене
- Движок: Unity 2021.3 - основная платформа
- Язык: C# - логика приложения
- Ключевые технологии:
- Raycasting для выбора объектов
- Динамическая генерация UI с помощью префабов
- JSON-сериализация для хранения данных
- Ядро управления:
CameraController.cs- логика управления камеры (фокус, вращение, зум)SelectionManager.cs- центральный координатор UI и объектов, точка связи многих скриптов, способ передать данные из одного раздела в другой, позволяющий обновлять состояния не связанных напрямую элементов UI
- Система материалов:
MaterialInstancer.cs- создает инстансы материалов для независимой настройки параметров, позволяет не создавать копии материалов при добавлении новых выбираемых объектов на сцену (если в будущем это понадобится)SwitchMaterialController.cs- смена материалов выделенных объектов
- UI-контроллеры:
PrefabController.cs- скрипт отвечающий за управление конкретным элементом списка объектовControlPanelController.cs- кнопки глобальных действийTransparencyController.cs- управление прозрачностью кликом по одной из кнопок в Transparency SectionMenuButtonController.cs- управление активности основного интерфейса
- Сериализация
-
SaveLoad.cs- основной скрипт для сохранения и загрузки состояния сцены -SceneData.cs,CameraData.cs,ObjectData.cs- вспомогательные классы для удобной сериализации данных
- Управление камерой:
- ЛКМ: Выбрать объект
- ПКМ + движение: Вращение
- СКМ: Зум
- СКМ + вертикальное движение: Перемещение вверх/вниз
- Взаимодействие с объектами в UI
- Глобальные операции в UI
