Друзья, приветствую, с Вами Будуев Антон. В данной статье мы обсудим Blueprint-функции Get Attach Parent, Get Attach Socket Name и Get Parent Components, доступные в классе компонента сцены Unreal Engine (UE4, UE5).
При разборе данных функций мы будем использовать шаблон проекта игры от первого лица игрового движка Анрил Энджин (UE5), а конкретно компонент оружия BP_Weapon_Component по пути /All/Game/FirstPerson/Blueprints.
Также, так как разбираемые функции доступны в классе компонента сцены, то предварительно в отдельной статье можете изучить саму концепцию компонентов — Unreal Engine Components.
Вскоре выйдет моя бесплатная книга по Blueprints для Unreal Engine в PDF формате. Как она выйдет, рекомендую её скачать, чтобы Вы детально изучили блюпринты Анрил Энджин.
Get Attach Parent
Blueprint-функция Get Attach Parent в Unreal Engine используется для получения компонента, к которому прикреплён текущий компонент. Доступна она только для компонентов класса Scene Component и выше.
Get Attach Parent используют тогда, когда необходимо узнать, к какому родительскому компоненту прикреплен конкретный компонент.
Параметры:
- Target (scene component, по умолчанию Self) — текущий компонент.
- Return Value (scene component) — возвращаемый параметр. Возвращается компонент сцены, к которому присоединён компонент из параметра Target.
Итак, для примера использования функции откроем компонент оружия BP_Weapon_Component и по событию Event Tick запустим нижеследующий код. Когда персонаж подберёт оружие, данный компонент активируется и функция Get Attach Parent вернёт нам родительский компонент First Person Mesh (SK_Mannequin_Arms) блюпринта BP_FirstPersonCharacter, к которому и прикреплен текущий компонент оружия BP_Weapon_Component.
Скриншот
Код на BlueprintUE
Get Attach Socket Name
В Unreal Engine функция Get Attach Socket Name используется для получения имени сокета (точки привязки) родительского компонента, к которому прикреплен текущий компонент. Функция доступна только для компонентов класса Scene Component (и выше), а также предназначена для работы с родительскими Skeletal Mesh Component и другими компонентами, имеющими сокеты.
Ключевым моментом здесь является то, что Get Attach Socket Name возвращает имя только в том случае, если компонент прикреплен к сокету, а не просто к другому компоненту напрямую.
* Сокеты позволяют прикреплять компоненты к конкретным точкам привязки на родительском Акторе или компоненте, что особенно полезно для создания сложных иерархий объектов с точным прикреплением объектов. Сами сокеты создаются в Skeletal Mesh ассетах, непосредственно на самих косточках скелета.
Параметры:
- Target (scene component, по умолчанию Self) — текущий компонент.
- Return Value (name) — возвращаемый параметр. Если компонент из параметра Target присоединён к сокету родительского компонента, возвращается имя этого сокета, в противном случае — пустое значение None.
Важно! Если присутствует вариант, что компонент будет присоединён не через сокет, а напрямую с компонентом, то результат возвращения функции Get Attach Socket Name необходимо всегда проверять на валидность (Is Valid). Чтобы возвращённое значение не было равно None, иначе в игре может возникнуть ошибка.
Для примера использования функции, как и выше, откроем компонент оружия BP_Weapon_Component и по событию Event Tick запустим нижеследующий код. Когда персонаж подберёт оружие, данный компонент активируется и функция Get Attach Socket Name возвратит имя сокета GripPoint, к которому присоединился компонент оружия.
Также в данном примере результат выполнения функции на валидность (Is Valid) можно не проверять, так как именно в данном шаблоне игры априори компонент оружия всегда прикрепляется к родительскому Mesh компоненту через сокет.
Скриншот
Код на BlueprintUE
Get Parent Components
Функция Get Parent Components в Unreal Engine Blueprints возвращает для текущего компонента массив всей иерархии родительских компонентов, включая Root Component (корневой компонент Актора). Функция используется только для компонентов класса Scene Component и выше.
Параметры:
- Target (scene component, по умолчанию Self) — текущий компонент.
- Parents (array scene component) — возвращаемый параметр. Возвращается массив всего дерева родительских компонентов, к которым присоединён компонент из параметра Target.
Для примера использования функции, опять же, как и выше, откроем компонент оружия BP_Weapon_Component и по событию Event Tick запустим нижеследующий код. Когда персонаж подберёт оружие, данный компонент активируется и функция Get Parent Components возвратит массив всего дерева иерархии родительских компонентов, к которым присоединился компонент оружия (включая Root Component): First Person Mesh -> First Person Camera -> Collision Cylinder (корневой компонент, коллизия).
Скриншот
Код на BlueprintUE
Совет. Вскоре выйдет моя бесплатная книга по Blueprints для Unreal Engine в PDF формате. Как она выйдет, рекомендую её скачать, чтобы Вы детально изучили блюпринты Анрил Энджин.