Приветствую, друзья, с Вами Будуев Антон. В данной небольшой статье мы обсудим, в чём же заключается программирование Blueprint в Unreal Engine (UE4, UE5). Что именно мы должны делать и какие процессы при этом происходят.
Вскоре выйдет моя бесплатная книга по Blueprints для Unreal Engine в PDF формате. Как она выйдет, рекомендую её скачать, чтобы Вы детально изучили блюпринты Анрил Энджин.
Актор в игровом мире
Итак, первое с чего мы начнём разбираться, это объекты в игровом мире.
Любой объект, размещённый на игровом уровне в Unreal Engine является Актором (Actor). Это может быть как статичная 3D-модель, так и анимированный персонаж, камера, звуковой файл и многое другое. Таким образом, Актором является всё, что размещается на уровне. И не обязательно, чтобы этот объект отображался визуально.

Любой Актор содержит внутри себя данные:
- компоненты — это то, из чего состоит Актор: статичная 3D-модель, скелетная 3D-модель, свет, звук, а также его функциональность, например, вращение объекта или его передвижение. Причём каждый компонент заранее уже подготовлен в Unreal Engine, и его можно использовать для состава любого Актора. То есть, иначе говоря, Актор, как конструктор, собирается из готовых компонентов.
- свойства — это переменные, хранящие в себе определенные значения, характеризующие этот Актор и его компоненты. Например, координаты и поворот Актора в мире, его масштаб, скорость передвижения, если у Актора имеется компонент передвижения, и так далее.
Важно понимать, что такие простые Акторы не имеют в себе никакой логики. Да, они могут внутри себя иметь какую-то функциональность на основе готовых компонентов, например, передвижение или свет. Но интерактивной логики, которая бы позволяла реагировать этим объектам на различные игровые события, в них нет. То есть, такие объекты никак не программируются, и в игре они находятся статично.
Программируемая логика в Blueprint Class
Если к любому Актору добавить код логики, запрограммированный на языке C++ или в скриптах Blueprints, то он будет классифицироваться как Blueprint Class Actor. Добавление объекту логики позволяет создавать любой интерактивный объект, будь то открываемая дверь, машина или управляемый персонаж.
Таким образом, Blueprint-класс внутри себя уже имеет расширенные данные:
- компоненты;
- свойства;
- и программируемую логику.
Готовых Blueprint-классов в Unreal Engine огромное количество. Например, для версии UE5.4 — 737 классов, где каждый класс внутри себя имеет заранее подготовленный набор компонентов, свойств, а также может содержать в себе запрограммированную начальную логику.

Самый основополагающий Blueprint-класс в Анрил Энджин — это класс Actor, который, как и простой Актор, можно разместить в игровом мире. Он также может в себе содержать компоненты и свойства, но, в отличие от простого Актора, даёт возможность программировать внутри себя Blueprint-логику.
От класса Actor уже наследуются все остальные классы, объекты которых можно разместить в игровом мире. Но каждый последующий наследуемый класс содержит дополнительный готовый функционал.
Например, от класса Actor наследуется класс Pawn, который даёт возможность игроку управлять объектом этого класса в игре. В свою очередь, от Pawn наследуется класс Character, имеющий в своём составе функционал для двуногого персонажа (компоненты для 3D-модели персонажа, обработки столкновения, камеры и его передвижения). То есть объект класса Character описывает персонажа и его передвижение. Также игрок может управлять этим персонажем (так как Character наследуется от Pawn) и этот персонаж может быть размещён в игровом мире (так как Character наследуется от Pawn, а он в свою очередь наследуется от Actor).
Подробнее о блюпринт-классах Вы можете узнать в отдельной статье: Unreal Engine Blueprint class.
Программирование Blueprint в Unreal Engine
Программирование Blueprint в Unreal Engine заключается в том, что разработчик должен запрограммировать для объекта, размещенного в игровом мире, скрипт логики (сценарий), который будет отвечать на различные игровые события и менять данные (состояние) этого объекта. А именно, менять значение его свойств (координаты, масштаб, цвет, скорость, направление движения) и его состояние (отключать/включать, добавлять/удалять составляющие его компоненты, материалы и прочее).
Основное место, где программируется логика в Blueprints-классах, — это вкладка Event Graph, или граф событий. Именно в этой вкладке у каждого Blueprint-класса находятся все доступные в этом классе события (Events), возникающие при запущенной игре.

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

- Event Begin Play — вызывается в момент начала работы текущего объекта в игровом мире;
- Event Tick — вызывается каждый такт обновления экрана игры;
- Event Hit — вызывается при столкновении текущего объекта с другим объектом в игре;
- Event Begin Overlap — вызывается в момент пересечения текущего объекта с другим объектом;
- События нажатия клавиш и прочие события в Unreal Engine.
Таким образом, программируя Blueprint-логику при вызове событий внутри объекта, мы можем создать для него правила реакции на возникновение этих событий и изменять соответствующим образом его данные.
Рассмотрим небольшой пример на основе стандартного шаблона игры от третьего лица в Unreal Engine (UE5).
Если мы откроем Blueprint персонажа BP_ThirdPersonCharacter по пути /All/Game/ThirdPerson/Blueprints и перейдем во вкладку Event Graph, то увидим, что в этом персонаже запрограммирована обработка 4 игровых событий:
- Event Begin Play — событие, срабатывающее только 1 раз при старте работы объекта данного класса в игре. Конкретно в этом персонаже по данному событию программируется подключение сигналов ввода от игрока к контроллеру, который управляет персонажем в игре. То есть производится изменение свойств приёма входящих данных для объекта контроллера.

- Enhanced Input Action IA_Look — событие, срабатывающее при движении мышки. По вызову этого события, а именно при движении мыши, программируется поворот камеры (вверх/вниз, вправо/влево). То есть производится изменение свойств поворота для объекта контроллера.

- Enhanced Input Action IA_Move — событие, срабатывающее при нажатии клавиш WASD. По вызову этого события программируется движения персонажа. То есть производится изменение свойств компонента передвижения текущего объекта.

- Enhanced Input Action IA_Jump — событие, срабатывающее при нажатии клавиши пробела. По вызову этого события программируется прыжок персонажа. То есть производится изменение свойств состояния текущего объекта.

Таким образом, в персонаже BP_ThirdPersonCharacter имеются 4 события, которые наступают в то или иное время в игре, и по вызову каждого события запрограммирована своя логическая цепочка, отвечающая на это событие и изменяющая данные текущего Актора (персонажа) или связанного с текущим Актором контроллера.
Итак, ключевой идеей этой статьи является то, что программирование Blueprint представляет собой процесс создания логической цепочки, которая обрабатывает определённое событие, возникающее в Акторе в ходе игры. Эта логическая цепочка изменяет данные (свойства, состояние или компонентный состав) текущего Актора или любого другого связанного с ним объекта.
Далее рекомендую перейти к следующей статье, где мы разберём основы блюпринт-скриптов в Unreal Engine, их типы и из каких основных элементов они состоят: основы Blueprint Visual Scripting.
Совет. Вскоре выйдет моя бесплатная книга по Blueprints для Unreal Engine в PDF формате. Как она выйдет, рекомендую её скачать, чтобы Вы детально изучили блюпринты Анрил Энджин.