Skip to content

Tulen4ick/Interactive-model

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Interactive model in Unity

Реализована интерактивная программа для взаимодействия с 3D-объектами на сцене. Пользователь может управлять камерой, настраивать свойства объектов (прозрачность, цвет, видимость) через UI, а также сохранять/загружать состояние сцены. Проект соответствует всем базовым требованиям и включает дополнительные функции.

Как это работает в действии

gameplay_best

Ключевые возможности

  1. Управление камерой:
  • Вращение: Удерживать ПКМ + движение мыши (горизонталь/вертикаль)
  • Приближение/отдаление: Колесико мыши
  • Вертикальное перемещение: Удерживать СКМ + движение мыши (вверх/вниз)
  • Фоккусирование на объекте: ЛКМ по объекту с тегом Selectable-> камера центрируется на нём, ЛКМ по невыбираемому объекту -> камера сбрасывает фокус
  1. Взаимодействие с объектами:
  • Настройка прозрачности (20%, 40%, 60%, 80%, 100%)
  • Выделение объектов (контурная подсветка - готовый outline shader из asset store, в будущем возможно добавление кастомного outline shader если это необходимо)
  • Смена цветов (на выбираемых объектах с помощью скрипта MaterialInstancer.cs можно разместить несколько материалов и при нажатии соответствующей кнопки на UI панели материалы будут последовательно сменяться, при этом сохраняя параметр прозрачности)
  • Включение/отключение видимости на сцене
  • Групповые операции (выделить/скрыть всё)
  1. UI-панель управления:
  • Динамический список объектов, который строится из префабов в соответствии с выбираемыми объектами на сцене
  • Кнопки управления для каждого объекта:
    • Выделение
    • Видимость
  • Глобальные кнопки управления:
    • Секция прозрачности (настройка прозрачности выделенных объектов)
    • Циклически поменять цвет у выбранных
    • Показать/Скрыть все объекты
    • Выделить все/Убрать выделение со всех
  • Сохранение и загрузка
    • Кнопка сохранения сохраняет позицию камеры, объект на котором камера была сфокусирована, настройки цвета, прозрачности и видимости для всех объектов. Сохранение работает независимо от сессии
    • Кнопка загрузки достает данные из JSON файла и применяет их к сцене

Технологический стек

  • Движок: Unity 2021.3 - основная платформа
  • Язык: C# - логика приложения
  • Ключевые технологии:
    • Raycasting для выбора объектов
    • Динамическая генерация UI с помощью префабов
    • JSON-сериализация для хранения данных

Архитектура и основные компоненты

  1. Ядро управления:
    • CameraController.cs - логика управления камеры (фокус, вращение, зум)
    • SelectionManager.cs - центральный координатор UI и объектов, точка связи многих скриптов, способ передать данные из одного раздела в другой, позволяющий обновлять состояния не связанных напрямую элементов UI
  2. Система материалов:
    • MaterialInstancer.cs - создает инстансы материалов для независимой настройки параметров, позволяет не создавать копии материалов при добавлении новых выбираемых объектов на сцену (если в будущем это понадобится)
    • SwitchMaterialController.cs - смена материалов выделенных объектов
  3. UI-контроллеры:
    • PrefabController.cs - скрипт отвечающий за управление конкретным элементом списка объектов
    • ControlPanelController.cs - кнопки глобальных действий
    • TransparencyController.cs - управление прозрачностью кликом по одной из кнопок в Transparency Section
    • MenuButtonController.cs - управление активности основного интерфейса
  4. Сериализация -SaveLoad.cs - основной скрипт для сохранения и загрузки состояния сцены -SceneData.cs, CameraData.cs, ObjectData.cs - вспомогательные классы для удобной сериализации данных

Инструкция по использованию

  1. Управление камерой:
    • ЛКМ: Выбрать объект
    • ПКМ + движение: Вращение
    • СКМ: Зум
    • СКМ + вертикальное движение: Перемещение вверх/вниз
  2. Взаимодействие с объектами в UI
    • Кнопка Select: Выделить/снять выделение select_inactive select_active
    • Кнопка Visibility: Скрыть/показать объект visibility_inactive visibility_active
  3. Глобальные операции в UI
    • Кнопки в Transparent Section: transparent_20 transparent_40 transparent_60 transparent_80 transparent_100
    • Кнопка Change Color: Циклическая смена материала change color
    • Кнопка Show/Hide All: Управление видимостью всех объектов hide show
    • Кнопка Add/Delete All: Массовое выделение select_inactive select_active
    • Кнопки Save/Load: Сохранение/загрузка через отдельный контроллер save load

About

unity scene with selectable objects, a camera controller, and a simple ui

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors