id: 229 slug: custom-unity-editor-tools-for-vr-graphics title_ru: "Создание кастомных инструментов редактора Unity для VR графики" tags: [vr-ar]
Создание кастомных инструментов редактора Unity для VR графики
Стандартный Unity Editor не создавался для VR-специфичных задач: проверки Draw Call бюджета в реальном времени, валидации Shadow Caster на соответствие Oculus VRC, контроля количества полигонов per-eye с учётом Multiview. Каждый раз открывать Frame Debugger и считать вручную — это потеря времени на каждом ревью ассетов. Кастомные Editor Tools решают эту задачу один раз и работают для всей команды.
Какие инструменты реально нужны VR-команде
Самый востребованный класс — Asset Validator. VRC Guideline для Oculus требует: меш персонажа не более 70 000 треугольников, текстуры не выше 2048×2048 без исключений, все материалы на стандартных шейдерах без Tessellation. Проверять это руками на каждом ассете невозможно при команде 5+ человек. Editor Window с AssetDatabase.FindAssets() + AssetImporter сканирует всю папку за секунды и показывает нарушителей списком с быстрой навигацией.
Второй инструмент — Scene Complexity Dashboard. Прямо в Scene View показывает текущий Draw Call count, количество Shadow Casters, статистику по материалам (сколько уникальных, сколько батчуется). Реализуется через EditorWindow + SceneView.duringSceneGui делегат + UnityEditor.Handles для оверлеев. Обновляется при любом изменении иерархии через EditorApplication.hierarchyChanged.
Третий — LOD Preview Tool. Стандартный LOD Group Inspector показывает переключение по проценту экрана, но в VR LOD distance зависит от IPD, FOV и разрешения конкретного HMD. Кастомный инструмент пересчитывает LOD transitions в реальные метры для целевого устройства (Quest 3: 96°, 2064×2208 per eye) и показывает, что игрок реально увидит на дистанции 1, 3, 10 метров.
Технические детали реализации
Unity Editor API даёт несколько уровней кастомизации:
EditorWindow — независимое окно с любым GUI. Строится на IMGUI (старый стиль) или UI Toolkit (новый, рекомендуется с Unity 2021+). Для сложных UI с таблицами и фильтрами UI Toolkit с ListView и виртуализацией заметно лучше — IMGUI будет лагать на списках из 500+ ассетов.
Custom Inspector через [CustomEditor(typeof(MyComponent))] — расширяет стандартный Inspector. Добавляем в VR Camera Rig Inspector кнопки «Validate FOV Settings», «Check IPD Range», «Preview at Quest 3 Resolution».
SceneView Tools через EditorTool (API появился в Unity 2019.1) — кастомный инструмент в Toolbar сцены. Используем для «VR Scale Reference»: отображает фигуру человека 1.75 м рядом с любым объектом для оценки масштаба в VR-пространстве.
AssetPostprocessor — хук на импорт ассетов. Автоматически применяет нужные настройки к FBX при импорте: modelImporter.importNormals = ModelImporterNormals.Calculate, ограничение LOD, генерация Read/Write флага только для меш-коллайдеров.
Из практики: в проекте архитектурной VR-визуализации команда тратила 40 минут на каждый ревью ассетов от 3D-художников — проверка полигонажа, UV развёртки, настроек импорта. После внедрения Asset Validator + AssetPostprocessor это сократилось до 5 минут: инструмент сразу подсвечивает проблемы и применяет стандартные настройки автоматически.
Для шейдерного пайплайна делаем ShaderGraph Validator: проверяет, что все ноды совместимы с URP Mobile (нет Screen Space нодов, нет Tessellation, нет GrabPass-аналогов). Реализуется через ShaderGraph.GraphData API.
Доставка инструментов команде
Кастомные Editor Tools живут в папке Editor/ проекта и не попадают в билд. Правильная практика — упаковать в Unity Package (package.json + asmdef с includePlatforms: [Editor]) и установить через Package Manager из git-репозитория. Команда получает обновления через Packages/manifest.json без ручного копирования файлов.
Этапы работы
Сбор требований. Разговариваем с командой: что проверяется вручную регулярно, где теряется время, какие ошибки повторяются.
Прототип. Быстрая Editor Window для самой болезненной задачи — команда дает обратную связь.
Полная реализация. UI Toolkit, интеграция с Asset Database, настройка AssetPostprocessor, документация по использованию.
Пакетизация. Упаковка в Unity Package для удобного распространения и обновления.
| Тип инструмента | Ориентировочные сроки |
|---|---|
| Простой Asset Validator (EditorWindow) | 2–5 дней |
| Scene Complexity Dashboard с оверлеями | 1–2 недели |
| Полный набор (validator + dashboard + LOD preview) | 3–5 недель |
Стоимость рассчитывается после обсуждения конкретных требований команды.





