이 기능은 실험단계이므로, 사용해 보면서 피드백을 제공하고 에픽에서 구상 중인 부분을 살펴볼 수 있습니다. 현재 아이템 제작을 사용하는 프로젝트는 퍼블리싱할 수 없습니다.
실험단계에서 생성된 에셋은 이전 버전과의 호환성이 보장되지 않는다는 점에 유의하세요. 실험단계 기능의 API는 변경될 수 있으며, 에픽게임즈의 재량에 따라 전체 실험단계 기능 또는 특정 기능이 제거될 수도 있습니다. 이 기능으로 작업을 시작하기 전에 알려진 문제 목록을 확인해 보세요.
커스텀 아이템 및 인벤토리 시스템에서는 item_component가 무엇이 아이템이고 무엇이 아닌지를 정의하는 클래스가 됩니다. 엔티티에 컴포넌트를 추가하는 방법은 엔티티 및 컴포넌트 작업하기를 참고하세요.
item_component를 가지고 있는 엔티티만 아이템으로 간주됩니다. 이 컴포넌트가 없으면 인벤토리에 엔티티가 제대로 추가되지 않으며, 많은 커스텀 아이템 및 인벤토리 기능이 손상될 수 있습니다.
'아이템'이라고 언급하는 경우 이는 바로
item_component가 있는 엔티티를 의미합니다.'인벤토리'라고 언급하는 경우 이는 바로
inventory_component가 있는 엔티티를 의미합니다.
클래스 정의
엔티티에 item_component를 어태치하면 엔티티가 아이템으로 바뀝니다. 즉, 인벤토리에 추가할 수 있으며 인벤토리에서 이 엔티티를 조작할 수 있게 됩니다. item_component에는 다음과 같은 기본 기능도 있습니다.
Categories- 아이템을 정렬하고 특성을 부여하는 데 사용할 수 있는item_category의 배열입니다.아이템 스태킹 비헤이비어:
StackSize- 이러한 아이템 중 몇 개가 스태킹되는지 전달하는 인티저입니다.MaxStackSize- 새로운 스택을 생성하기 전에 몇 개까지 병합되거나 스태킹될 수 있는지입니다. 기본값은 '최댓값 없음'입니다(예: 무한 스태킹됨).ChangeStackSizeEvent에 등록하여 스택 변화를 모니터링합니다.MergeableItemComponentClasses는item_component입니다. 이 클래스는 배열 안에 서브 클래스를 가진 엔티티가 이 엔티티와 병합되어 하나의 스택을 형성할 수 있게 해 줍니다.
컴포넌트에는
GetParentInventory()와IsEquipped()등의 헬퍼 함수도 포함되어 있습니다.
다양한 기능과 기본 포트나이트 게임플레이를 사용할 수 있게 해 주는 추가 컴포넌트를 사용해 아이템에 더 많은 기능을 부여할 수 있으며, 자신만의 커스텀 Verse 컴포넌트를 작성할 수도 있습니다. 자세한 내용은 Verse API의 item_component API 레퍼런스를 확인하세요.
전체 커스텀 아이템 및 인벤토리 컴포넌트 목록은 컴포넌트를 참고하세요.
예시
아이템 컴포넌트는 엔티티가 아이템으로 기능하기 위해 필요합니다. 프리팹 에디터에서는 편집 가능한 속성이 제한되어 있으므로, 컴포넌트를 최대한 활용하려면 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를 사용하는 프리팹 아이템을 볼 수 있습니다. 아이템을 주으면 새로운 아이템이 재생성되며, 인벤토리에서 스태킹 비헤이비어를 볼 수 있습니다.