Полезное
Мы Вконтакте
Discord канал
Панель Details является контекстно-зависимой областью, которая обеспечивает доступ к изменению свойств выбранных элементов в редакторе блупринтов. Она состоит из панели поиска для быстрого доступа к конкретным свойствам, и, как правило, содержит один или несколько категорий для организации входящих в комплект свойств.
Панель Details также, место где вы будете обрабатывать множество задач редактирования блупринтов, в том числе:
Во Viewport, в редакторе блупринтов, вы можете просматривать и управлять компонентами вашего блупринта.
Выбор компонента в списке Components выбирает этот компонент во Viewport тоже, и заполнит его свойствами панель Deatils.
Вы можете использовать различные элементы упраления, чтобы настроить расположение, поворот и масштаб выбранных компонентов.
Вы можете перемещаться во Viewport одним из тех же способов, которыми вы ориентируетесь на уровне.
Viewport в левом верхнем углу имеет меню отображения с несколькими различными параметрами.
Свойство | Оисание |
Reset Camera | Перефокусирует камеру на компонентах. |
Realtime | Включает рндеринг в реальном времени в окне Viewport. |
Show Floor | Отображает пол, что бы помочь вам с рамещением компонентов. |
Show Grid | Отображение сетки. |
Использование Blueprint Interface предоставляет общий метод взаимодействия с несколькими различными типами объектов которые все разделяют некоторые специфические функциональные возможности. Это означает, что вы можете иметь совершенно разные типы объектов, таких как автомобиль и дерево и иметь схожие свойтва, так например они оба могут быть расстреляны из оружия и получить урон.
Создавая Blueprint Interface, который содержит функцию OnTakeWeaponFire, и используемый в этих объектах, вы можете определить свою функциональность для каждого из объетов, которая будет вызываться при вызове функции OnTakeWeaponFire.
Blueprint Interface, а также интерфейсы, определенные через C++, могут быть добавлены к любому типу блупринта.
Когда интерфейс добавлен к блупринту, блупринт должен реализовывать функции интерфейса для того, чтобы выполнять какие — либо действия при вызове. Это делается путем размещения нодов событий для функций интерфейса в EventGraph.
Функции интерфейса выполняются за счет использования интерфейса сообщений, которые выглядят и действуют как обычные функции.
Интерфейсы полезны для обеспечения возможности обмена данными между разными блупринтами. Функции из единого интерфейса можно вызвать из других блупринтов. Это может быть сделано, при двух критериях:
При создании узла интерфейсной функции в пределах Graph Event, вы часто будете видеть две версии функции, перечисленные в контекстном меню.
Важно отметить, что версия Call Function является локальной версией, предназначенной только для вызова в этом блупринте.
Версии перечисленные в разделе Interface Messages предназначены для вызова функции через интерфейс в других блупринтах, использующих один и тот же интерфейс.
При вызове функции интерфейса сообщений необходимо обязательно указать экземпляр соответствующего блупринта, на котором вы вызываете функцию.
Обратите внимание, в этом изображении мы посылаем другой блупринт в качестве входа Target. Если блупринт не использует интерфейс, то ничего не произойдет.
Интерфейсы также дают возможность для связи между подуровнями с помощью Get Streaming Level ноды. Если загружен уровень, то Interface Message будет вызывать функцию с блупринтом этого уровня в качестве цели.
Одним из наиболее важных аспектов функций интерфейса является то, что так как у них нет реализации своих собственных возможностей, они могут быть, независимо друг от друга, определены для каждого блупринта, который использует интерфейс.
После того, как интерфейс был определен с помощью блупринта, функции этого интерфейса будут видны в My Blueprint панели.
Если вы дважды щелкните эту функцию, она откроется в редакторе блупринтов, отобразив локальную реализацию этой функции. Независимая функциональность определённая здесь будет уникальна для этого блупринта. Таким образом, вы можете определить пользовательские функции для каждого блупринта, который использует интерфейс.
Например, на этом изображении мы видим основную функцию интерфейса, в открытом блупринте. На данный момент, функция ничего не делает.
Мы могли бы создать простую сеть, чтобы сделать сравнение чисел.
Теперь, когда функция вызывается локально, она будет принимать значение и сравнить его с номером 10, а затем выводит логический результат на экран.
Прямые коммуникации являются наиболее распространенным методом взаимодействия блупринтов и отлично подходят тогда, когда у вас есть два блупринта, и вы знаете что им необходимо обменяться некой информацией.
В этом типе связи, всегда один блупринт обращается к другому. Самый простой способ использования этого метода, получение ссылки на другой блупринт, через название класса, и указания какой экземпляр этого блупринта необходимо использовать.
Первое, что вам нужно сделать для того, чтобы использовать прямую коммуникаию, заключается в определении взаимодействующих блупринтов.
Здесь мы имеем персонажа и потолочный светильник, и хотим что бы персонаж мог его отключить.
В этом случае рабочий блупринт это наш персонаж, а целю является блупринт светильника. Используя прямые взаимодействия можно сказать, что, когда игрок нажимает кнопку, блупринт потолочного светильника должен выключить свет.
Для этого нам нужно создать открытую переменную внутри нашего блупринта персонажа.
Мы создали переменную типа блупринта потолочного светильника.
Теперь, выбрав нашего персонажа на уровне, мы можем увидеть, на панели Details новое поле для установки значения нашей переменной.
По умолчанию переменная установлена как None. Чтобы определить, какой экземпляр светильника вы хотите изменять, вы должны нажать на кнопку пипетки и выбрать этот объект на уровне.
Теперь благодаря этой переменной мы точно знаем к какому объекту мы хотим получить доступ через блупринт.
Когда вы работаете с функциями в блупринтах, вы все еще можете использовать прямые взаимодействия, указав тип целевого блупринта в качестве параметра для этой функции.
При использовании функции, вам нужно будет еще указать, экземпляр объекта к которому вы хотите обратиться. Это может быть сделано как и выше, с помощью публичной переменной, но уже подключаемой к специально созданному вами входу функции.
Наиболее часто ошибка возникает, когда экземпляр объекта не указан вообще в переменной. Если у вас возникли проблемы при получении доступа к нужному объекту, убедитесь,
что вы указали, какой именно экземпляр этого объекта вы хотите использовать.
Если вместо этого вы установите переменную из результата вызова функции, вы должны увидеть предупреждение в журнале, что переменная имеет «Access None» исключение. Если у вас открыто окно «Message Log», оно отобразит ссылку на узел вызывающий проблему.
Выше вы видите «Access None» исключение. Исключение указывает на ноду, которая вызывает проблемы. При нажатии откроется блупринт, в котором используется данная нода.
Комментарий может быть добавлен к конкретному блоку, или можно дать комментарий группе блоков, содержащий описание функциональности. Комментарии необходимы для организации, чтобы сделать Blueprint более читаемым, или просто давать описание, аналогично комментариям в коде.
Чтобы добавить комментарий блоке в Blueprint необходимо:
Ваш комментарий появится в небольшой пузырьке над узлом. Комментарий над узлом не будет масштабироваться при масштабировании всей области Graph.
Чтобы изменить комментарий щелкните правой кнопкой мыши по блоку блупринта, чтобы вызвать контекстное меню и изменить текст в поле Node Comment. Для удаления комментария — удалите текст из поля комментария и нажмете Enter.
Создать comment box (общий комментарий) довольно легко:
Или Вы можете нажать кнопку «C» для создания комментария.
Обратите внимание, что текст Comment Box масштабируется с изменением масштаба области Graph, поэтому можно увидеть весь функционал при уменьшении всей области.
Щелкните правой кнопкой мыши по полю заголовка комментария и измените текст в появившемся меню в текстовом поле Node Comment. Нажмите Enter, чтобы сохранить новый комментарий.
Или:
Выберите comment box и нажмите кнопку Delete или щелкните по comment box правой кнопкой мыши и в появившемся меню выберите Delete. Оба этих варианта удалят только поле комментария, и ничего не сделают с узлами.
Следующие свойства 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 выражением:
(1+x)*sin(myVar)-2.4/rand()
После обновления узел Math Expression будет иметь два float входа, X и MyVar, и один float выход.
Если дважды щелкнуть по узлу с этим выражением, Вы увидите следующую graph-подсистему:
Graph-подсистема создается при следующих условиях:
Имя переменной может быть любым, но важно помнить следующие моменты:
Приоритеты выполнения операций (сначала наивысший):
Простые функции 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
Ниже описаны поддерживаемые операторы. Логические и операторы сравнения можно комбинировать, чтобы создать сложные логические выражения.
Мультипликация:
*, /, %
Сложение:
+, -
Сравнение:
<,>, <=,>=
Равенство:
==, ! =
Логические:
||, &&, ^
Следующие операторы пока еще не поддерживаются.
Условние:
?:
Побитовые:
|, &, <<, >>
Унарные префиксы:
+, -, ++, --, ~, !, и т.п.
Постфиксы:
++, --, [], и т.п.