У нашій практиці дизайнер рівнів для 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 для вашої команди.
Орієнтовні терміни вказані в таблиці вище; вартість розраховується індивідуально після аналізу вимог. Зверніться до нас — і ми запропонуємо оптимальне рішення.






