Les systèmes d'objets et d'inventaires sont des éléments essentiels dans de nombreux jeux. Vous pouvez personnaliser l'inventaire du joueur de Fortnite grâce aux entités et aux composants Scene Graph pour créer des objets personnalisés uniques à votre île.
Les objets sont des objets que les joueurs et les agents peuvent utiliser et posséder. Les inventaires incluent l'inventaire standard du joueur Fortnite, ainsi que les inventaires personnalisés que vous créez avec le inventory_component. Objets et inventaires personnalisés est un système qui permet de créer, contrôler et stocker des objets. Ce système est une fonctionnalité expérimentale que vous devez activer dans les paramètres du projet et utiliser avec Scene Graph et Verse dans l'Unreal Editor pour Fortnite (UEFN).
Principes de base de Scene Graph
Scene Graph est un système d'entités et de composants, basé sur Verse. Les entités sont des conteneurs de composants, et les composants fournissent des fonctionnalités aux entités. Vous pouvez lier des entités les unes aux autres dans une relation parent-enfant, ce qui crée des hiérarchies. Une disposition réutilisable d'entités et de composants est appelée préfabriqué.
Pour en savoir plus sur les entités et les composants, consultez la page Utiliser des entités et des composants. Pour en savoir plus sur les préfabriqués, consultez la page Préfabriqués et instances de préfabriqués.
objets
Les objets sont créés dans Scene Graph en plaçant un item_component sur une entité. Les inventaires traitent le composant comme un objet. Le item_component fournit des fonctionnalités telles que :
Équiper et déséquiper
Catégories nommées pour la comparaison et le tri
Fonctions et événements utiles
À lui seul, le item_component offre des options limitées à un objet. Des composants supplémentaires permettent de créer des éléments plus intéressants avec des fonctionnalités additionnelles.
Pour en savoir plus, consultez la page Composant Objet.
Inventaires
Les inventaires servent à regrouper des objets et permettent de gérer ce qu'il advient de ces objets. Un inventaire est une entité qui possède un inventory_component et fonctionne de la manière suivante :
Connaître tous les objets qui s'y trouvent.
Déterminer quels objets peuvent entrer ou sortir de l'inventaire.
Déterminer ce qui se passe lorsqu'un objet entrant souhaite fusionner avec un objet déjà présent dans l'inventaire.
Dans la mesure où un objet ne peut exister que dans un seul inventaire à la fois, les inventaires déterminent également la propriété des entités d'objets. Les sous-entités d'un inventaire ne sont considérées comme des objets dans l'inventaire que si elles possèdent également un item_component ; dans le cas contraire, ce sont des sous-entités enfants.
Par défaut, les inventaires peuvent contenir un nombre et une variété infinis d'objets. Avec Verse, vous pouvez créer des restrictions et des règles qui limitent l'ajout et la suppression d'objets. Par exemple :
Ajouter des objets à un inventaire uniquement s'ils appartiennent à la bonne catégorie.
Limiter le nombre d'objets dans un inventaire.
Empêcher la suppression du dernier objet d'un inventaire.
Permettre aux objets à priorité élevée d'éjecter des objets à priorité plus faible lorsque l'inventaire est plein.
Restreindre un inventaire à un seul objet.
Arborescences des inventaires
Les inventaires connaissent tous les inventaires qui se trouvent en dessous d'eux dans la hiérarchie de Scene Graph. Ces inventaires enfants sont appelés sous-inventaires. Vous pouvez utiliser l'arborescence des inventaires de nombreuses façons.
Par exemple, vous pouvez ajouter un objet à un inventaire parent, d'où il peut être transféré vers un inventaire enfant plus spécialisé. Imaginez par exemple que vous donniez une pièce au joueur et que celle-ci passe par le système d'inventaire jusqu'à un portefeuille (Inventaire du joueur > Inventaire du sac à dos > Inventaire du porte-monnaie).
Pour créer un comportement d'inventaire plus avancé, il est nécessaire d'utiliser le code Verse.
Verse : inventaires
Il existe deux façons d'ajouter un objet à un inventaire.
Appeler
AddItem()pour ajouter un objet à un inventaire spécifique.Appeler la fonction
AddItemDistribute()et utiliser la hiérarchie d'inventaires pour trouver l'inventaire ou le sous-inventaire le plus approprié.
Lorsque la fonction AddItemDistribute() est appelée, l'inventaire ciblé et tous ses sous-inventaires ont la possibilité d'évaluer et de revendiquer l'objet. Après avoir étudié chaque inventaire, l'inventaire le plus approprié tente d'ajouter l'objet.
Racine de l'inventaire du joueur
Les joueurs disposent d'un inventaire par défaut. C'est ce que l'on appelle la racine d'inventaire. Contrairement aux autres inventaires, la racine d'inventaire du joueur ne peut pas accepter d'objets. Il agit plutôt comme le parent des sous-inventaires qui lui sont rattachés. Cela vous permet de cibler la racine d'inventaire avec AddItemDistribute() et, pour un objet, de trouver un inventaire éligible, même si la cible initiale ne peut pas le recevoir.
Pour qu'un joueur puisse recevoir des objets, il doit avoir un ou plusieurs sous-inventaires sous la racine d'inventaire.
L'explication ci-dessus ne concerne pas les entités dont le inventory_component a été ajouté via Verse ou via l'éditeur de préfabriqué.