Эта функция находится на этапе экспериментальной версии. Вы можете опробовать её, оставить отзыв и узнать, что мы планируем делать с ней дальше. На данный момент нельзя публиковать проекты, в которых используется система предметов.
Обратите внимание: мы не можем гарантировать обратную совместимость ресурсов, созданных на экспериментальном этапе. API для этих функций могут меняться, и мы можем полностью удалить экспериментальные функции или отдельные их части по своему усмотрению. Прежде чем приступать к работе с этой функцией, ознакомьтесь со списком известных проблем.
В системе пользовательских предметов и инвентарей item_component становится классом, определяющим, чем предмет является и не является. О том, как добавить компонент к вашему модулю, см. в разделе Работа с модулями и компонентами.
Модули считаются предметами только в том случае, если у них есть item_component. Без него модули не будут добавляться в инвентарь, а многие функции пользовательских предметов и инвентарей могут не работать.
Под термином «предмет» подразумевается непосредственно модуль с
item_component.Под термином «инвентарь» подразумевается непосредственно модуль с
inventory_component.
Определение класса
Прикрепление item_component к модулю превращает этот модуль в предмет. Это означает, что его можно добавить в инвентарь и управлять им посредством инвентарей. item_component также содержит следующие основные функции:
Categories— массивitem_category, который можно использовать для сортировки и характеристики.Поведение при размещении предметов:
StackSize— целое число, определяющее, сколько из этих предметов находится в стопке.MaxStackSize— сколько предметов можно объединить или сложить в стопку, пока не потребуется создать новый стек. По умолчанию максимум не установлен (например, бесконечное размещение)Подпишитесь на
ChangeStackSizeEvent, чтобы отслеживать изменения в стеке.MergeableItemComponentClasses— это массив, который может содержать подклассыitem_component. Это позволит любому модулю с подклассом внутри массива объединяться с этим модулем для формирования стека.
Компонент также содержит вспомогательные функции, такие как
GetParentInventory()иIsEquipped().
Функциональность предмета можно расширить с помощью дополнительных компонентов, которые предоставляют различные функции и базовый игровой процесс Fortnite. Вы также можете писать собственные компоненты Verse. Для получения подробной информации ознакомьтесь со справочником по API item_component в API Verse.
Полный список компонентов пользовательских предметов и инвентарей см. в разделе Компоненты.
Пример
Компоненты предмета требуются модулям, чтобы функционировать в качестве предметов. Редактор заготовок ограничивает редактируемые свойства, поэтому, чтобы выжать из компонента максимум, используйте Verse.
using { /Fortnite.com/Devices }
using { /Verse.org/SceneGraph }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Itemization }
# Helper function that gets the first descendant inventory component from an agent.
# This will be the root inventory.
GetAgentInventory(Agent:agent)<decides><transacts>:inventory_component=
TargetInventory := (for (I : Agent.FindDescendantComponents(inventory_component)) { I })[0]
Функции можно легко добавить к предметам, создав подкласс item_component. Это может быть изменение базовых свойств или добавление новых функций и полей для вашего проекта.
custom_item_component := class(item_component) :
# We could populate the Categories array with Fortnite and/or custom item categories.
Categories<override>:[]item_category = array{}
# By adding itself to the MergeableItemComponentClasses, it allows entities with this item_component to merge in inventories.
MergeableItemComponentClasses<override>:[]castable_subtype(item_component) = array{custom_item_component}
Здесь представлена заготовка предмета, использующего custom_item_component, показанный выше. Предмет будет подобран и создан новый. За поведением при размещении можно наблюдать в инвентаре.