Cette fonctionnalité est en phase expérimentale pour vous permettre de l'essayer, de nous faire part de vos commentaires et de prendre connaissance de ce que nous prévoyons pour l'avenir. À ce stade, il n'est pas possible de publier un projet qui utilise l'itémisation.
Nous attirons votre attention sur le fait que nous ne garantissons aucune compatibilité descendante pour les ressources créées en phase expérimentale, que les API de ces fonctionnalités sont susceptibles d'évoluer et que nous pouvons éventuellement supprimer des fonctionnalités expérimentales ou autres à notre discrétion. Consultez la [liste des problèmes connus](scene-graph-in-unreal-editor-for-fortnite#problèmesconnus) avant de commencer à utiliser cette fonctionnalité.
Dans le système d'inventaires et d'objets personnalisés, un composant item_component devient une classe qui définit ce qu'est un objet et ce qu'il n'est pas. Pour savoir comment ajouter un composant à votre entité, consultez la rubrique Utiliser des entités et des composants.
Les entités ne sont considérées comme des objets que si elles possèdent un composant item_component. Sans cela, les entités ne seront pas correctement ajoutées aux inventaires et de nombreuses fonctionnalités d'inventaire personnalisé et d'objet personnalisé risquent de ne pas fonctionner correctement.
Les références à un “objet” font directement référence à une entité disposant d'un composant
item_component.Les références aux "inventaires" font directement référence à une entité disposant d'un composant
inventory_component.
Définition de classe
L'ajout d'un composant item_component à une entité transforme cette dernière en objet. Cela signifie qu'ils peuvent être ajoutés à un inventaire et manipulés par les inventaires. Le composant item_component contient également les fonctionnalités de base suivantes :
Catégories- Une matrice deitem_categoryqui peut être utilisée pour trier et caractériser.Comportement d'empilement des objets :
StackSize- Un nombre entier qui indique combien de ces objets sont empilés.MaxStackSize- Le nombre d'objets pouvant être fusionnés ou empilés avant la création d'une nouvelle pile. Par défaut, il n'y a pas de valeur maximale (par exemple, empilement infini).Abonnez-vous à l'événement
ChangeStackSizeEventpour surveiller les modifications de la pile.MergeableItemComponentClassesest une matrice pouvant contenir des sous-classes du l'item_component. Cela permet à toute entité ayant une sous-classe à l'intérieur de la matrice de fusionner avec cette entité pour former une pile.
Ce composant contient également des fonctions d'aide telles que
GetParentInventory()etIsEquipped().
Vous pouvez ajouter des fonctionnalités à un objet à l'aide de composants supplémentaires qui exposent différentes fonctionnalités et le jeu de base de Fortnite. Vous pouvez également écrire vos propres composants Verse personnalisés. Pour plus d'informations, consultez la référence d'API du composant item_component dans l'API Verse.
Consultez la section Composants pour obtenir la liste complète des composants d'objet et d'inventaire personnalisés.
Exemple
Les composants d'objet sont requis par les entités pour fonctionner en tant qu'objets. L'éditeur de préfabriqué disposant de propriétés modifiables limitées, vous devez utiliser Verse pour tirer le meilleur parti de ce composant.
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]
Il est possible d'ajouter facilement des fonctionnalités aux objets en sous-classant le composant item_component. Il peut s'agir de modifier les propriétés de base ou d'ajouter de nouvelles fonctions et de nouveaux champs spécifiques à votre expérience.
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}
Ici, vous pouvez voir un élément de préfabriqué utilisant le custom_item_component présenté ci-dessus. L'objet est ramassé et un nouvel objet réapparaît. Vous pouvez observer le comportement d'empilement dans l'inventaire.