Esta función se encuentra en estado experimental para que puedas probarla, hacernos llegar tus comentarios y ver lo que estamos planeando. Actualmente no puedes publicar un proyecto que utilice itemización.
Recuerda que no garantizamos la compatibilidad con versiones anteriores en el caso de los recursos creados en la fase experimental. Es posible que realicemos cambios en las API de estas funciones y que eliminemos funciones experimentales completas o funcionalidades específicas según nuestro criterio. Consulta la lista de problemas conocidos antes de empezar a trabajar con la función.
El inventory_component es un componente de Scene Graph que se utiliza como contenedor de elementos. Si quieres saber cómo añadir un componente a tu entidad, consulta Cómo trabajar con entidades y componentes.
Las entidades solo se consideran elementos si tienen un item_component. Sin él, las entidades no se añadirán correctamente a los inventarios y es posible que las funciones de elemento personalizado e inventarios no funcionen correctamente.
Las referencias a un “elemento” se refieren a una entidad con un
item_component.Las referencias a “inventarios” se refieren a una entidad con un
inventory_component.
Descripción de clase
El inventory_component se utiliza como contenedor para guardar elementos. Los elementos añadidos al inventario se convierten en hijos de la entidad de inventory_component. Junto con la funcionalidad normal de jerarquía de grafos de escena, los inventarios pueden gestionarse a sí mismos y a los elementos de su propiedad con propiedades y métodos específicos:
Añade o elimina elementos utilizando
AddItem()yRemoveItem().Para recuperar elementos se puede utilizar
GetItem()yFindItems(). Las funciones de obtención devuelven los hijos inmediatos, mientras que las funciones de búsqueda devuelven todos los descendientes.Para encontrar otros inventarios, tienes las funciones
GetInventories()yFindInventories().Eventos a los que suscribirse, tales como
AddItemEventyRemoveItemEvent.Se puede utilizar
GetEquippedItems()para el equipamiento y los eventosEquipItemEventyUnequipItemEventpara rastrearlos.
Con un inventory_component, cualquier entidad podría convertirse en una bolsa o mochila, un cofre con botín o incluso en un equipamiento de personaje con armas y habilidades.
Los inventarios pueden controlar qué elementos se añaden o retiran de distintas formas. Un método útil son los eventos de escena. Cuando se llama a la función AddItem(), se emite un evento de escena al que pueden responder los componentes. Cuando un evento de escena llega a un componente, se activa el evento OnReceive(), que puede anularse para activar la lógica.
La versión experimental de los elementos e inventarios personalizados también incluye otro método para controlar la adición, eliminación y fusión de elementos. Al crear una subclase del tipo inventory_rule_interface, se pueden escribir nuevas anulaciones para CanAdd(), CanRemove() y CanMerge(). Estas reglas pueden añadirse a InventoryRuleList mediante AddRule(). Ten en cuenta que no se espera que esta función persista más allá de la versión experimental.
El componente aparece como inventory_component en la lista desplegable de componentes. Si quieres más información, consulta
la referencia de la API de inventory_component de la API de Verse.
Inventarios y Scene Graph
El sistema de elementos e inventarios personalizados ofrece una configuración básica que debes conocer para sacarle el máximo partido.
Todos los jugadores comenzarán con un inventario raíz, que es una entidad con un inventory_component adjunto a la entidad jugador. Este inventario raíz también tiene varios subinventarios fort_inventory_component. Son necesarios para preservar la funcionalidad de Fortnite. Consulta Componente de inventario de Fortnite si quieres más información sobre estos componentes.
Debido al método utilizado para recorrer el Scene Graph, el inventario raíz siempre será el primer inventario que se encuentre al buscar en el árbol de entidades una entidad que tenga un inventory_component.. Por esta razón, el inventario raíz es un objetivo sensato al que vincular nuevos inventarios.
# 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]El inventario raíz está vinculado al jugador, y todos los subinventarios están vinculados al inventario raíz. Los nuevos inventarios deben añadirse al inventario raíz para que otros sistemas solo tengan que encontrar el inventario raíz y la interfaz con él.
Ejemplo
Añadir un inventory_component a una entidad en el editor de prefabricados permite almacenar elementos como un inventario.
El cofre de abajo tiene un inventory_component. Ahora puede aprovechar toda la funcionalidad del componente.
Sin embargo, para sacar el máximo partido a los elementos e inventarios personalizados, tendrás que utilizar Verse:
using { /Fortnite.com/Devices }
using { /Fortnite.com/Itemization }
using { /Verse.org/SceneGraph }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Itemization }
# This device will give an inventory to all players
# It will then make a dummy item and give it to the inventory.
inventory_giver_device := class(creative_device) :
Un requisito habitual de los inventarios es aplicar reglas a los elementos que pueden contener. A continuación, se muestra una secuencia de comandos para un inventory_component personalizado que anula el método
de componente OnReceive(). Aquí se ha utilizado para crear una regla de tamaño máximo del inventario:
# This custom inventory component overrides the OnReceive function.
# This will allow us to determine whether or not we want an entity with this inventory component, to receive items.
custom_inventory_component := class(inventory_component) :
# What is the maximum number of items allowed in this inventory?
@editable
MaximumItemSlots:int = 5
Para ver ejemplos de juego de inventarios y cómo utilizar inventory_component, consulta los tutoriales en Objetos e inventarios personalizados con Scene Graph.