Одной из самых востребованных функций в Unity, помимо тёмной темы в бесплатной версии (¬‿¬ ), является Visual Scripting, похожий на Blueprint в Unreal Engine.
Разработчики из Unity работали над экспериментальной версией Unity Visual Script и недавно выпустили 3-ю экспериментальную версии вместе с демкой. Не забывайте, что инструмент на стадии разработки, в проде лучше не использовать, да и документацию пока не завезли.
Так же не стоит забывать, что работать будет только в DOTS проектах, с MonoBehaviour кодом не совместимо. Для пробы нужно версия Unity минимум 2019.3.0a11. Подробнее про это решение можно почитать в треде про 2 версию.
В этом конкретном случае мы поняли, что существует довольно много зрелых решений, которые большая часть сообщества успешно использует для визуального программирования. Мы посчитали, что решение поверх MonoBehaviours с точки зрения визуальных сценариев, было бы не особо лучше решений из нашего магазине ассетов.
— Joachim Ante
С другой стороны, мы увидели возможность сфокусировать VisualScripting на DOTS. Это позволит художникам и дизайнерам уровней писать невероятно эффективный многопоточный игровой код, просто выражая реализуя свои идеи, а код будет генерироваться с учётом всех плюшек DOTS. Ориентированная на данные природа DOTS открывает много новых возможностей для визуальных сценариев и взаимодействия с другими основанными на коде системами.
— Joachim Ante
Демку можно скачать тут.
Фичи
Редактор компонентов/событий
Это окно позволит вам создавать и редактировать компоненты и события.
Отключение графов и узлов
Вы можете выбрать определенные разделы графика и отключить их, используя меню по правой кнопке мыши. Выключенный код не будет выполнен или скомпилирован. Вы также можете отключить весь этот граф с помощью инспектора на графе, там вы должны увидеть опции state. Для открытия этого инспектора просто дважды щёлкните на холсте выбранного графика.
Панель описания в поисковике
Будет показан выбранный узел на этой панели, прежде чем добавить его на свой холст.
Обнаружение неиспользуемых узлов и стилизация
Используя меню cog на графе, вы можете включить/отключить эту функцию. Это поможет вам увидеть, какие узлы не используются и не генерируют никакого кода.
Дебаг логи
Были перегруппированы все логи вместе, чтобы сформировать 1 большой узел. Вы можете просто переключить тип сообщения, которое хотите отправить, используя выпадающее меню.
Было поправлено куча багов:
- VSB-233 For All Entities variables does not exist in the current context
- VSB-232 Empty criteria create compilation error
- VSB-231 Equals node return multiple bools instead of only one
- VSB-230 Deleting a macro asset will break all graphs that are using it
- VSB-214 Set Time Scale ‘Time’ does not contain a definition for ‘time Scale’
- VSB-211 Multiple Errors when creating nodes
- VSB-208 Missing a refresh after deleting sticky note
- VSB-207 Color Constant Node is getting alpha to black
- VSB-203 Hover on «For each» nodes in searcher will create it
- VSB-201 Moving component fields in cs file break nodes port connection order
- VSB-200 Get Component Node not displaying its type list
- VSB-196 Cannot create node that takes a pointer as parameter
- VSB-193 Can’t find Color Constant node
- VSB-192 Renaming a graph don’t rename it’s cs script
- VSB-190 Can’t rename custom function
- VSB-188 Copy paste a macro will put it in a stack
- VSB-187 Styling of the searcher is broken
- VSB-186 Naming in blackboard, breadcrumb doesn’t follow selected graph
- VSB-185 «local to world» criteria cannot be selected
- VSB-184 Criteria section in function collapse in each refresh
- VSB-180 Functions don’t show return type
- VSB-179 “Rotate by” node deform object when two axis are selected
- VSB-178 Variable from events send error ‘graphData’ does not exist in the current context
- VSB-177 Node duplication break when going in play mode
- VSB-175 Creating a «Get input» breaks the visual scripting editor
- VSB-165 Renaming a graph isn’t showing up in toolbar when docked
- VSB-164 «Float 4» UI in criteria is broken
- VSB-35 Can’t add Macro input and output ports in the blackboard