Введение Приветствую вас, дорогие читатели.
В сегодняшней статье, которая является завершающей в серии о редакторе визуальной логики, мы, как ни странно, поговорим именно о редакторе.
Этот аспект всей системы в целом является наиболее сложным и обширным, в том числе и с точки зрения реализации.
Я постараюсь охватить все основные моменты архитектуры, а также решения, которые я использовал для создания таких вещей, как рисование соединений, компонентов, инспектора и т. д. Предыдущие статьи серии: Редактор визуальной логики для Unity3d. Часть 1 Редактор визуальной логики для Unity3d. Часть 2
Архитектура
Ниже представлена общая схема архитектуры редактора.
Прежде чем рассказать, что здесь за что отвечает, остановимся на одном важном моменте, связанном с Единство .
Думаю многие знают об особенностях разработки расширений для Юнити3D , но я все равно их опишу:
- Однопоточный рендеринг.
- Очень кривая и странная система событий.
- Отсутствие поддержки асинхронных вызовов ( Сопрограмма ).
Примечание : сейчас он есть, но когда писался редактор, его не было .
- Окно редактора визуальной логики.
- Редактор параметров логических компонентов на базе инспектора Юнити3д.
Давайте подробнее рассмотрим архитектурные элементы редактора визуальной логики.
- Редактор VLELogic .
Основной класс окна редактора визуальной логики
- Главное меню .
Класс, реализующий меню в редакторе.
- ЛогическаяОбласть .
Класс, отвечающий за визуализацию области рендеринга логических компонентов.
- Положение дел .
Класс, реализующий область состояния.
- Главное меню .
- VLEКаталог .
Класс, реализующий логику сбора и отображения списка всех компонентов логики, находящихся в проекте.
- ВЛЕИнспектор .
Класс, реализующий функционал установки параметров компонента на основе инспектора.
Юнити3D
- VLELogicComponentCustomEditor .
Класс, реализующий общую логику визуализации параметров логического компонента в инспекторе.
- Редактор VLEObject .
Класс, реализующий логику настройки ссылок на объекты.
Юнити3д .
По сути, это специальный редактор-обертка.
ВЛОбъект .
- VLELogicComponentCustomEditor .
- VLESettingWindow .
Класс, реализующий логику работы окна общих настроек редактора.
- VLESearchWindow .
Класс, реализующий функционал поиска компонентов и групп в открытом в данный момент файле логики.
- ВЛЕВиджет .
Базовый класс для визуализации логических элементов.
- ВЛЕКомпонент .
Класс, реализующий рендеринг компонентов.
- Группа ВЛЕГ .
Класс, реализующий визуализацию групп компонентов.
- ВЛЕСсылка .
Класс, реализующий визуализацию связей между компонентами.
- VLEVariable .
Класс, реализующий визуализацию логических переменных.
- ВЛЕКомпонент .
Подробный код каждого элемента архитектуры мы рассмотрим в следующих параграфах.
Требуется поддержка ядра
При разработке редактора визуальной логики мне пришлось столкнуться с тем, что для его корректного функционирования в ядре не хватало определённых вещей, которые работали бы только в режиме редактора.Юнити3D .
Для этого был добавлен необходимый код, о котором я расскажу ниже.
Чтобы разделить ядро для редактора и ядро для сборки, использовалась директива прекомпиляции.
UNITY_EDITOR .
Список файлов логики, используемых в сцене
Чтобы быстро переключаться между наборами логики в сцене, нужно было где-то хранить и извлекать их имена, которые потом можно было бы использовать в выпадающем списке.Для этого для режима редактора в классе Логический Контроллер добавлено свойство:
Теги: #Разработка игр #unity #unity3d #визуальные скрипты #расширения редактора Unity#if UNITY_EDITOR
-
Бесшовная Интеграция – Все Наоборот
19 Oct, 24 -
Вы Часто Покупаете Бумажные Газеты/Журналы?
19 Oct, 24 -
С Днем Рождения, Хайку!
19 Oct, 24 -
Рубиновый Подкаст Noname S04E20
19 Oct, 24 -
Электронный Бумажный Телефон Hitachi.
19 Oct, 24