Редактор Визуальной Логики Для Unity3D. Часть 3



Введение Приветствую вас, дорогие читатели.

В сегодняшней статье, которая является завершающей в серии о редакторе визуальной логики, мы, как ни странно, поговорим именно о редакторе.

Этот аспект всей системы в целом является наиболее сложным и обширным, в том числе и с точки зрения реализации.

Я постараюсь охватить все основные моменты архитектуры, а также решения, которые я использовал для создания таких вещей, как рисование соединений, компонентов, инспектора и т. д. Предыдущие статьи серии: Редактор визуальной логики для Unity3d. Часть 1 Редактор визуальной логики для Unity3d. Часть 2



Архитектура

Ниже представлена общая схема архитектуры редактора.



Редактор визуальной логики для Unity3d. Часть 3

Прежде чем рассказать, что здесь за что отвечает, остановимся на одном важном моменте, связанном с Единство .

Думаю многие знают об особенностях разработки расширений для Юнити3D , но я все равно их опишу:

  1. Однопоточный рендеринг.

  2. Очень кривая и странная система событий.

  3. Отсутствие поддержки асинхронных вызовов ( Сопрограмма ).

    Примечание : сейчас он есть, но когда писался редактор, его не было .

На основании вышеизложенного было решено разделить всю логику и код между двумя основными сущностями:
  1. Окно редактора визуальной логики.

  2. Редактор параметров логических компонентов на базе инспектора Юнити3д.
Все остальные подсистемы вложены в эти две и реализованы на основе частных классов.

Давайте подробнее рассмотрим архитектурные элементы редактора визуальной логики.

  • Редактор VLELogic .

    Основной класс окна редактора визуальной логики

    • Главное меню .

      Класс, реализующий меню в редакторе.

    • ЛогическаяОбласть .

      Класс, отвечающий за визуализацию области рендеринга логических компонентов.

    • Положение дел .

      Класс, реализующий область состояния.

  • VLEКаталог .

    Класс, реализующий логику сбора и отображения списка всех компонентов логики, находящихся в проекте.

  • ВЛЕИнспектор .

    Класс, реализующий функционал установки параметров компонента на основе инспектора.

    Юнити3D

    • VLELogicComponentCustomEditor .

      Класс, реализующий общую логику визуализации параметров логического компонента в инспекторе.

    • Редактор VLEObject .

      Класс, реализующий логику настройки ссылок на объекты.

      Юнити3д .

      По сути, это специальный редактор-обертка.

      ВЛОбъект .

  • VLESettingWindow .

    Класс, реализующий логику работы окна общих настроек редактора.

  • VLESearchWindow .

    Класс, реализующий функционал поиска компонентов и групп в открытом в данный момент файле логики.

  • ВЛЕВиджет .

    Базовый класс для визуализации логических элементов.

    • ВЛЕКомпонент .

      Класс, реализующий рендеринг компонентов.

    • Группа ВЛЕГ .

      Класс, реализующий визуализацию групп компонентов.

    • ВЛЕСсылка .

      Класс, реализующий визуализацию связей между компонентами.

    • VLEVariable .

      Класс, реализующий визуализацию логических переменных.

Для лучшего понимания, что за что отвечает, ниже будет приведена картинка.



Редактор визуальной логики для Unity3d. Часть 3

Подробный код каждого элемента архитектуры мы рассмотрим в следующих параграфах.



Требуется поддержка ядра

При разработке редактора визуальной логики мне пришлось столкнуться с тем, что для его корректного функционирования в ядре не хватало определённых вещей, которые работали бы только в режиме редактора.

Юнити3D .

Для этого был добавлен необходимый код, о котором я расскажу ниже.

Чтобы разделить ядро для редактора и ядро для сборки, использовалась директива прекомпиляции.

UNITY_EDITOR .



Список файлов логики, используемых в сцене

Чтобы быстро переключаться между наборами логики в сцене, нужно было где-то хранить и извлекать их имена, которые потом можно было бы использовать в выпадающем списке.

Для этого для режима редактора в классе Логический Контроллер добавлено свойство:

   

#if UNITY_EDITOR

Теги: #Разработка игр #unity #unity3d #визуальные скрипты #расширения редактора Unity
Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.