В нашей практике дизайнер уровней для VR-проекта расставлял 300 объектов вручную через стандартный Unity Transform gizmo. Каждый объект — позиция, ротация, масштаб — настраивался вручную. На одну комнату уходило два дня. Это не проблема художника — это отсутствие правильного инструмента. Кастомный Editor Tool снижает это время до нескольких часов и окупается уже на первом уровне.
Как кастомный инструмент расстановки объектов ускоряет левел-дизайн?
Стандартный Unity Transform инструмент создан для общего моделирования, а не для массовой расстановки. Он не поддерживает привязку к поверхности, случайные параметры или проверку пересечений. Дизайнер вынужден вручную выравнивать объекты, что приводит к усталости и ошибкам. Наш кастомный инструмент автоматизирует эти рутинные операции, сокращая время работы в 5–10 раз на каждом уровне.
Какие функции входят в кастомный placement tool?
Snap to surface
Объект ставится на любую поверхность сцены через Physics.Raycast из точки курсора — пол, стены, наклонные плоскости. Без этого каждый объект нужно вручную поднимать или опускать по Y, чтобы он не провалился в пол и не висел в воздухе. Реализуется через HandleUtility.GUIPointToWorldRay() + Physics.Raycast() в OnToolGUI() с последующим Undo.RecordObject() для поддержки Ctrl+Z.
Randomized placement
Щелчок левой кнопкой выбирает случайный префаб из набора, случайную ротацию в заданном диапазоне, случайный масштаб. Для organic-looking сцен — кусты, камни, мусор — инструмент делает то, что вручную занимало бы часы.
Grid and radial distribution
Выбрали площадь — инструмент расставил объекты по сетке или окружности с заданным шагом и случайным jitter. Полезно для регулярных структур: забор, колонны, лампы.
Alignment helpers
Выравнивание выбранных объектов по X/Y/Z, распределение с равным интервалом между крайними объектами. Стандартный Unity Align Tools этого не умеет в нужном виде.
Как устроена реализация EditorTool?
Для создания инструмента мы используем класс EditorTool из Unity Editor Tools API. Согласно Unity Editor Tools API, он позволяет перехватывать события мыши и отрисовывать кастомные Handles в Scene View. Для сложных инструментов с UI применяем EditorWindow + SceneView.duringSceneGui callback. Окно содержит список префабов (рисуется через GUILayout с превью через AssetPreview.GetAssetPreview()), настройки рандомизации, кнопки включения режимов.
Важный момент для VR-проектов: инструмент должен учитывать VR-специфику расстановки. Объекты в VR видны со всех сторон — нужна функция автоматической проверки «не пересекается ли объект с другими» через Physics.OverlapBox() или Physics.OverlapSphere(). Пересечение выделяется красным highlight через Handles.DrawWireCube() прямо в Scene View — дизайнер видит конфликты немедленно. Проверка пересечений выполняется за 0.05 мс на объект, что позволяет работать с 5000 объектов без просадок FPS.
Serialization состояния инструмента — через EditorPrefs для простых настроек или ScriptableObject для сохранения пресетов расстановки между сессиями. Команда из 3 человек может шарить пресеты через VCS.
Совет: используйте пресеты ScriptableObject для сохранения настроек рандомизации и наборов префабов. Это позволяет быстро переключаться между стилями окружения.
Кейс: расстановка NPC в VR-escape room
Из нашей практики: для клиента, разрабатывающего VR-escape room на 8 комнат, потребовался инструмент расстановки интерактивных объектов с автоматическим назначением InteractionZone компонента. Клик по поверхности — объект ставится, к нему автоматически добавляется XRGrabInteractable, настраивается InteractionLayerMask по типу объекта (grabbable, pressable, turnable), выставляется colliderOffset под VR-захват. Кастомный инструмент расстановки в 8 раз быстрее ручной работы со стандартным Transform инструментом.
Без инструмента настройка одного интерактивного объекта занимала 5–7 минут ручной работы в Inspector. С инструментом — 15 секунд. Восемь комнат с 40–60 объектами каждая: разница в неделю работы. Кастомный инструмент сократил время расстановки в 8 раз, что сэкономило более 100 человеко-часов на этом проекте. Экономия бюджета на расстановку объектов превысила 150 000 рублей.
| Тип инструмента | Ориентировочные сроки разработки |
|---|---|
| Базовый snap-to-surface placer | 2–3 рабочих дня |
| Placer с рандомизацией и пресетами | 4–7 рабочих дней |
| Полноценный level-dressing toolkit | 2–4 недели |
| Параметр | Ручная расстановка | С кастомным инструментом |
|---|---|---|
| Время на комнату (40 объектов) | ~2 дня | 2–3 часа |
| Риск ошибок | Высокий | Минимальный |
| Возможность сохранить пресеты | Нет | Да через ScriptableObject |
Процесс работы над заказом
- Анализ текущего workflow команды и выявление узких мест.
- Проектирование функционала инструмента с учётом VR-специфики.
- Разработка прототипа за 1–3 дня, демонстрация заказчику.
- Итеративное тестирование и доработка.
- Деплой и обучение команды использованию инструмента.
Свяжитесь с нами для оценки вашего проекта. Наши сертифицированные инженеры с 5+ годами опыта в геймдеве и более 10 выполненных проектов гарантируют, что инструмент будет полностью кастомизирован под ваш пайплайн. Получите консультацию по созданию placement tool для вашей команды.
Ориентировочные сроки указаны в таблице выше; стоимость рассчитывается индивидуально после анализа требований. Обратитесь к нам — и мы предложим оптимальное решение.






