これは現在、実験的機能です。したがって、それらを試したり、フィードバックを提供したり、計画を確認したりできます。 現時点で、アイテム化を使用するプロジェクトを公開することはできません。
実験段階でアセットを作成した場合、下位互換性は保証されません。これらの機能の API は変更される場合があります。実験的機能のすべて、または特定の機能を独自の裁量で削除する場合があります。 この機能を使い始める前に、既知の問題のリストを確認してください。
カスタム アイテムおよびインベントリ システムでは、item_component は、どのアイテムであるのか、どのアイテムでないのかを定義するクラスになります。 エンティティにコンポーネントを追加する方法については、「エンティティとコンポーネントを操作する」を参照してください。
エンティティは、item_component がある場合にのみアイテムと見なされます。 これがないと、エンティティはインベントリに適切に追加されないだけでなく、多くのカスタム アイテムやインベントリの機能が壊れる可能性があります。
「アイテム」への参照は、
item_componentを持つエンティティを直接参照します。「インベントリ」への参照は、
inventory_componentを持つエンティティを直接参照します。
クラス定義
item_component をエンティティにアタッチすると、エンティティはアイテムに変わります。 そのため、インベントリに追加し、インベントリによってできます。 item_component には、次の基本的な機能も含まれています。
カテゴリー- ソートと特性化に使用できる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 を使ったプレハブ アイテムを見てみましょう。 アイテムがピックアップされ、新しいアイテムがリスポーンされます。 インベントリでのスタッキング動作を確認できます。