что такое блюпринт в ue4
UEngine.Ru
Русскоязычное сообщество Unreal Engine 4
Обзор Блупринтов
Блупринты являются типом ассетов, которые предоставляют пользователям интуитивную систему для создания специальных типов объектов, которые вследствии можно поставить на сцену. Так же Блупринты используются для создания игровой логики уровня или логики уровня, при этом не написав ни строчки кода, что облегчит написание логики не только программистам, но и дизайнерам, кто не силен в программировании.
Типы Блупринтов
Class Blueprint
Level Blueprint
Level Blueprint так же предоставляют контроль над подгрузкой уровней и сценами Matinee.
Блупринты с Данными (Data-Only)
Дата блупринты редактируются в компактном редакторе свойств, однако могут быть конвертированы в полноценные Блупринты, путем добавления кода, переменных и компонентов в полном редакторе Блупринтов.
Blueprint Interface
Работа в Blueprint Interface может быть примерно такой же, что и в остальных типах, однако они имеют некоторые ограничения, которые не позволяют:
Придание какой либо логики функциям из Blueprint Interface возможны только внутри конкретных Блупринтов, где добавлен BI.
Blueprint Macro Library
Макро Блупринты не требуют компиляции. Изменения в Макро Блупринте повлечет изменения за собой во всех блупринтах, где используется блок данного Макро.
Blueprint Utilities
Анатомия Блупринтов
Вся функциональность Блупринтов использует различного рода элементы, которые и составляют окончательный вариант вашего Блупринта.
Компоненты
Компоненты — объекты, которые могут быть добавлены в Блупринт. Этим объектами могут быть СтатикМеши, источники света, СкелеталМеши и т.п. Компоненты можно добавть через меню Components во вкладке с таким же именем. Использовать компоненты в логике блупринта можно с момощью панели переменных.
Construction Script
Construction Script представляет собой систему скриптов, использующихся исключительно в целях настойки Блупринта. Данный элемент не играет никакой роли на игровой процесс и служит лишь для изменения параметров или взаимодействия с блупринтом из редактора. Вся логика Construction Script’а активна только в самом редакторе. Данная система может быть невероятно полезна при настойке блупринта, уже находящегося на уровне. К примеру у вас есть блупринт, в компонентах которого есть источник освещения. Construction Script позволяет ещё на стадии проектирования уровня выставить цвет данного источника света в конкретной копии данного блупринта на сцене.
График (EventGraph)
EventGraph — Самый главный элемент редактора Блупринтов. Это место, где вы строите логику вашего Блупринта, используя события и функции, соеденяя это все в последовательность действий.
Функции (Functions)
Функции могут принадлежать только конкретному Блупринту и используются подобно Макро функциям, однако различие в том, что в функции позволяют создавать внутри себя логические последовательности, состоящие из исполняемых блоков.
Переменные(Variables)
Переменные — Специальный тип данных, который хранит в себе какое либо значение(Текстовое, числовое, векторное и т.д), а так же может ссылаться на какой либо объект. Переменные используются для назначения значений и последующего доступа в Блупринтах.
Режимы Блупринта
Работа с Блупринтами подрузомевает под собой три основных режима, которые создают окончательный вариант со всеми свойствами и объектами.
Level Blueprint имеет только режим Graph, так как вместо режимов Components и Defaults используется сам редактор уровня и World Settings.
UEngine.Ru
Русскоязычное сообщество Unreal Engine 4
Введение в Блупринты
Блупринты являются типом ассетов, которые предоставляют пользователям интуитивную систему для создания специальных типов объектов, которые вследствии можно поставить на сцену. Так же Блупринты используются для создания игровой логики уровня или логики уровня, при этом не написав ни строчки кода, что облегчит написание логики не только программистам, но и дизайнерам, кто не силен в программировании.
В качестве облегчения перевода и узнаваемости, все типы, кнопки, блоки, переменные и так далее, будут написаны на Английском языке.
Как работают Блупринты
Блупринты используют встроенную в редактор систему для визуального построения логических последовательностей. Соеденяя блоки, события, функции и переменные, возможно создать достаточно сложные логические элементы, которые будут создавать геймплей вашей игры.
Основные типы Блупринтов
Два самых используемых типов блупринтов — Level Blueprint и Class Blueprint.
Level Blueprint
Level Blueprint исполняет такую же роль, как и Kismet в UDK, и имеет почти теже возможности. Каждый уровень имеет свой Блупринт уровня. Сам Level Blueprint используется для манипулирования объектами на сцене в процессе игры, так же контролировать Matinee, стриминг уровней, чекпоинты и остальные системы, которые относятся к уровням. Level Blueprint’ы так же могут взаимодействовать с Class блупринтами, которые имеются на сцене.
Class Blueprint
Class Blueprint позволяют создать сложные объекты для последующего размещения на сцене, такие как открывающиеся двери, ящики с предметами, кнопки и т.п. На изображении сверху напольная кнопка и дверь являются разными блупринтами и содержат определенный скрипт для взаимодействия с игроком, проигрывания анимации и звука, открытии дверей и так далее.
В данном случае, нажатие кнопки активирует событие внутри Блупринта дверей, открывая их. С тем же успехом можно сделать взаимодействие любых блупринтов, а так же срабатывания событий не только на игрока, но и на другие объекты или на Level Blueprint. Class Blueprint могут быть полностью индивидуальными, а значит, для их работы не обязательно воздействовать из вне и они могут работать и производить какие-либо действия сами по себе.
Что ещё могут делать Blueprint’ы?
Создавать игрового персонажа
Игровые персонажи тоже являются Классовыми Блупринтами, с помощью которых вы можете создавать все нужные вам элементы и логику вашего будущего персонажа. Вы можете устанавливать параметры камеры, устанавливать управление персонажем, включая мышь и даже сенсорные экраны и создавать вещи, на которые ваш персонаж способен.
При создании Блупринта Персонажа(Character Blueprint), у вас будут уже заготовленные настраевымые свойства для передвижения, прижка, плаванья и падения. Все, что нужно, это добавить управление и определить, как ваш персонаж будет вести себя.
Создавать интерфейс
Интерфейс создается так же с помощью блупринта, похожего на классовый, однако он привязывается к геймплею, что не требует размещения его на уровне.
Вы можете установить Блупринт интерфейса так, что бы он читал переменные из других Блупринтов и отображал с помощью этой информации какие либо вещи, например очки, показатель жизней персонажа, количество имеющихся патронов в запасе и так далее. С помощью HUD(интерфейс) блупринта можно так же создавать кнопки, что бы создавать различного рода меню.
Редактор Блупринтов
Создавая любую логику с помощью Блупринтов, вы будете работать с Редактором Блупринтов. Редакторы бывают различных типов, в зависимости от редактируемого Блупринта. Основной функционал редактора остается везде(Графики, переменные и т.д.), однако некоторые Блупринты, в особенности Level Blueprint не имеют своих свойств или компонентов.
UEngine.Ru
Русскоязычное сообщество Unreal Engine 4
Blueprint’ы
Панель Details редактора Блупринтов
Панель Details является контекстно-зависимой областью, которая обеспечивает доступ к изменению свойств выбранных элементов в редакторе блупринтов. Она состоит из панели поиска для быстрого доступа к конкретным свойствам, и, как правило, содержит один или несколько категорий для организации входящих в комплект свойств.
Панель Details также, место где вы будете обрабатывать множество задач редактирования блупринтов, в том числе:
Интерфейс
Viewport редактора Блупринтов
Во Viewport, в редакторе блупринтов, вы можете просматривать и управлять компонентами вашего блупринта.
Выбор компонента в списке Components выбирает этот компонент во Viewport тоже, и заполнит его свойствами панель Deatils.
Вы можете использовать различные элементы упраления, чтобы настроить расположение, поворот и масштаб выбранных компонентов.
Вы можете перемещаться во Viewport одним из тех же способов, которыми вы ориентируетесь на уровне.
View меню
Viewport в левом верхнем углу имеет меню отображения с несколькими различными параметрами.
Свойство | Оисание |
Reset Camera | Перефокусирует камеру на компонентах. |
Realtime | Включает рндеринг в реальном времени в окне Viewport. |
Show Floor | Отображает пол, что бы помочь вам с рамещением компонентов. |
Show Grid | Отображение сетки. |
Использование Интерфейсов
Добавление интерфейса
Blueprint Interface, а также интерфейсы, определенные через C++, могут быть добавлены к любому типу блупринта.
Реализация компонентов интерфейса
Когда интерфейс добавлен к блупринту, блупринт должен реализовывать функции интерфейса для того, чтобы выполнять какие — либо действия при вызове. Это делается путем размещения нодов событий для функций интерфейса в EventGraph.
Добавление функций к интерфейсу
Функции интерфейса выполняются за счет использования интерфейса сообщений, которые выглядят и действуют как обычные функции.
Вызов функций интерфейса из других блупринтов
Интерфейсы полезны для обеспечения возможности обмена данными между разными блупринтами. Функции из единого интерфейса можно вызвать из других блупринтов. Это может быть сделано, при двух критериях:
При создании узла интерфейсной функции в пределах Graph Event, вы часто будете видеть две версии функции, перечисленные в контекстном меню.
Важно отметить, что версия Call Function является локальной версией, предназначенной только для вызова в этом блупринте.
Версии перечисленные в разделе Interface Messages предназначены для вызова функции через интерфейс в других блупринтах, использующих один и тот же интерфейс.
При вызове функции интерфейса сообщений необходимо обязательно указать экземпляр соответствующего блупринта, на котором вы вызываете функцию.
Обратите внимание, в этом изображении мы посылаем другой блупринт в качестве входа Target. Если блупринт не использует интерфейс, то ничего не произойдет.
Вызов функций интерфейса из Level Blueprint
Интерфейсы также дают возможность для связи между подуровнями с помощью Get Streaming Level ноды. Если загружен уровень, то Interface Message будет вызывать функцию с блупринтом этого уровня в качестве цели.
Определение функций интерфейса
Одним из наиболее важных аспектов функций интерфейса является то, что так как у них нет реализации своих собственных возможностей, они могут быть, независимо друг от друга, определены для каждого блупринта, который использует интерфейс.
После того, как интерфейс был определен с помощью блупринта, функции этого интерфейса будут видны в My Blueprint панели.
Если вы дважды щелкните эту функцию, она откроется в редакторе блупринтов, отобразив локальную реализацию этой функции. Независимая функциональность определённая здесь будет уникальна для этого блупринта. Таким образом, вы можете определить пользовательские функции для каждого блупринта, который использует интерфейс.
Например, на этом изображении мы видим основную функцию интерфейса, в открытом блупринте. На данный момент, функция ничего не делает.
Мы могли бы создать простую сеть, чтобы сделать сравнение чисел.
Теперь, когда функция вызывается локально, она будет принимать значение и сравнить его с номером 10, а затем выводит логический результат на экран.
Прямые коммуникации
Прямые коммуникации являются наиболее распространенным методом взаимодействия блупринтов и отлично подходят тогда, когда у вас есть два блупринта, и вы знаете что им необходимо обменяться некой информацией.
В этом типе связи, всегда один блупринт обращается к другому. Самый простой способ использования этого метода, получение ссылки на другой блупринт, через название класса, и указания какой экземпляр этого блупринта необходимо использовать.
Основы работы
Первое, что вам нужно сделать для того, чтобы использовать прямую коммуникаию, заключается в определении взаимодействующих блупринтов.
Здесь мы имеем персонажа и потолочный светильник, и хотим что бы персонаж мог его отключить.
В этом случае рабочий блупринт это наш персонаж, а целю является блупринт светильника. Используя прямые взаимодействия можно сказать, что, когда игрок нажимает кнопку, блупринт потолочного светильника должен выключить свет.
Для этого нам нужно создать открытую переменную внутри нашего блупринта персонажа.
Мы создали переменную типа блупринта потолочного светильника.
Теперь, выбрав нашего персонажа на уровне, мы можем увидеть, на панели Details новое поле для установки значения нашей переменной.
По умолчанию переменная установлена как None. Чтобы определить, какой экземпляр светильника вы хотите изменять, вы должны нажать на кнопку пипетки и выбрать этот объект на уровне.
Теперь благодаря этой переменной мы точно знаем к какому объекту мы хотим получить доступ через блупринт.
Использование прямых коммуникаций в функциях
Когда вы работаете с функциями в блупринтах, вы все еще можете использовать прямые взаимодействия, указав тип целевого блупринта в качестве параметра для этой функции.
При использовании функции, вам нужно будет еще указать, экземпляр объекта к которому вы хотите обратиться. Это может быть сделано как и выше, с помощью публичной переменной, но уже подключаемой к специально созданному вами входу функции.
Исправление проблем
Наиболее часто ошибка возникает, когда экземпляр объекта не указан вообще в переменной. Если у вас возникли проблемы при получении доступа к нужному объекту, убедитесь,
что вы указали, какой именно экземпляр этого объекта вы хотите использовать.
Если вместо этого вы установите переменную из результата вызова функции, вы должны увидеть предупреждение в журнале, что переменная имеет «Access None» исключение. Если у вас открыто окно «Message Log», оно отобразит ссылку на узел вызывающий проблему.
Выше вы видите «Access None» исключение. Исключение указывает на ноду, которая вызывает проблемы. При нажатии откроется блупринт, в котором используется данная нода.
Комментарии Блупринтов
Комментарий может быть добавлен к конкретному блоку, или можно дать комментарий группе блоков, содержащий описание функциональности. Комментарии необходимы для организации, чтобы сделать Blueprint более читаемым, или просто давать описание, аналогично комментариям в коде.
Комментарии блоков функций
Создание комментария на блоке
Чтобы добавить комментарий блоке в Blueprint необходимо:
Ваш комментарий появится в небольшой пузырьке над узлом. Комментарий над узлом не будет масштабироваться при масштабировании всей области Graph.
Редактирование и удаление комментария у блока
Чтобы изменить комментарий щелкните правой кнопкой мыши по блоку блупринта, чтобы вызвать контекстное меню и изменить текст в поле Node Comment. Для удаления комментария — удалите текст из поля комментария и нажмете Enter.
Comment Box
Создание общего комментария — Comment Box
Создать comment box (общий комментарий) довольно легко:
Обратите внимание, что текст Comment Box масштабируется с изменением масштаба области Graph, поэтому можно увидеть весь функционал при уменьшении всей области.
Редактирование комментария в Comment Box
Щелкните правой кнопкой мыши по полю заголовка комментария и измените текст в появившемся меню в текстовом поле Node Comment. Нажмите Enter, чтобы сохранить новый комментарий.
Или:
Удаление Comment Box
Выберите comment box и нажмите кнопку Delete или щелкните по comment box правой кнопкой мыши и в появившемся меню выберите Delete. Оба этих варианта удалят только поле комментария, и ничего не сделают с узлами.
Свойства Comment Box
Следующие свойства comment box можно найти и изменить на панели Details.
Пункт | Описание |
Comment Color | Изменение цвета фона поля комментария. Не забывайте использовать альфа-канал для прозрачности фона. |
Color Comment Bubble | Если отмечено, то Comment Color применяется к «пузырьку» комментария. |
Move Mode | При перемещении комментария перемещает и узлы внутри комментария (Group Movement) или комментарий будет перемещаться независимо, без узлов внутри него (Comment). |
Блок мат. выражения
Блок Math. Expression позволяет записать в себя математическую формулу, после чего будет автоматически сгенерирован Blueprint график. Преимущество данного функционала не только в том, что можно быстро создать математическое выражение, но и в производительности. Блоки Mat Expression будут обрабатываться в процессе игры быстрее, чем вручную собранное выражение из обычных математических блоков в Blueprint.
Создание
Чтобы создать узел Math Expression, щелкните правой кнопкой мыши на поле graph и выберите Add Math Expression…из контекстного меню.
Узел Math Expression представляет собой автоматически собираемую graph-подсистему. Чтобы раскрыть его щелкните по нему дважды ЛКМ, чтобы увидеть внутренние функции. По умолчанию название/выражение пустое. Каждый раз, когда Вы переименовываете узел, создается новое выражение с узлами в подсистеме.
Чтобы переименовать узел и обновить подсистему, щелкните правой кнопкой мыши по узлу и выберите Rename.
Например, задайте имя узлу Math Expression выражением:
После обновления узел Math Expression будет иметь два float входа, X и MyVar, и один float выход.
Если дважды щелкнуть по узлу с этим выражением, Вы увидите следующую graph-подсистему:
Graph-подсистема создается при следующих условиях:
Поддержка выражений
Переменные
Имя переменной может быть любым, но важно помнить следующие моменты:
Порядок операций
Приоритеты выполнения операций (сначала наивысший):
Доступные функции Blueprint
Простые функции Blueprint, которые находятся в библиотеке функций, должны быть доступны. К ним относятся:
Тригонометрические функции (sin/cos/tan, asin, acos и т.п.):
sin(x)
Ограничивающие функции (min, max, clamp и т.п.):
clamp(y,0,20)
Функции округления (floor, fceil, round и т.п.):
round(z)
Показательные функции (square, power, sqrt, loge, e/exp и т.п.)
Некоторые, обычно использующиеся функции или узлы имеют несколько названий. Вот некоторые примеры:
Функция Power: power, pow
Тригонометрические функции (asin/arcsin, acos/arccos и т.п.)
Основные виды структур
Есть некоторые основные структуры, которые мы довольно часто используем в математике, такие как векторы, преобразования и т.п.. Вы можете создать и работать с этими типами в своих выражениях.
Ключевое слово vector создаст узел MakeVector:
vector(x,y,z)
Ключевое слово rotator создаст узел MakeRotator:
rotator(x,y,z)
Ключевое слово transform создаст узел MakeTransform:
transform(vec(x,y,z), rot(p,y,r), vec(6,5,4))
Так же, имеется несколько имен у некоторых функций, например у вектора и ротатора.
Ключевые слова для вектора
vector, vec, vect
Ключевые слова для ротатора
rotator, rot