← Все проекты

Инструмент разработки

Behavior Graph

Собственный инструмент Behavior Tree для Unity: графовый редактор и runtime для настройки поведения противников.

UnityC#Unity EditorGraphViewBehavior TreeScriptableObject
Behavior Graph

О проекте

Behavior Graph — собственный инструмент для создания и настройки деревьев поведения в Unity. Он объединяет графовый редактор в Unity Editor и runtime-исполнение дерева, чтобы поведение противников можно было собирать из наглядных узлов и хранить вместе с игровыми ассетами.

Что реализовано

  • Граф поведения хранится в ScriptableObject: в ассете сохраняются узлы, их связи, корневой узел и позиции на рабочем поле.
  • Редактор построен на GraphView: можно добавлять узлы через поиск, соединять и отсоединять их, перемещать по холсту и назначать корневой узел.
  • Поддерживаются составные узлы Selector, Sequence и Parallel, а также декораторы Invert, Force Success и Timeout.
  • В библиотеку действий входят ожидание, проверка условий, выполнение стратегии движения, атака цели и нанесение урона по области.
  • Runtime управляет жизненным циклом каждого узла: входом, выполнением, завершением и принудительной остановкой. Результаты узлов передаются через состояния Success, Failure и Running.

Отладка поведения

Во время Play Mode редактор связывается с выбранным игровым объектом, использующим открытый граф, и подсвечивает состояние его runtime-узлов. Это помогает видеть, какая ветка дерева выполняется в данный момент, и быстрее разбирать логику поведения противника.

Техническая основа

Данные графа отделены от runtime-узлов: сериализуемые описания узлов преобразуются в исполняемые объекты через фабрики. Связи между узлами контролируются по допустимой ёмкости дочерних элементов, а порядок дочерних узлов в составных элементах определяется их положением в графе. Такой подход позволяет редактировать поведение визуально и сохранять его как часть Unity-проекта.