Esta función se encuentra en una fase experimental, de modo que puedes probarla, dejarnos tu feedback y conocer nuestros planes. En este momento, no puedes publicar proyectos que utilicen el equipamiento de elementos.
Ten en cuenta que no garantizamos la retrocompatibilidad de recursos que se hayan creado en una etapa experimental. Las API para estas funciones están sujetas a cambios, y podríamos retirar funciones experimentales completas o funcionalidades específicas a nuestra discreción. Consulta la lista de problemas conocidos antes de comenzar a trabajar con esta función.
El inventory_component es un componente de Scene Graph que se utiliza como contenedor de elementos. Para 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 uno, las entidades no se añadirán correctamente a los inventarios, y la funcionalidad de inventarios y elementos personalizados es posible que no funcione.
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 un contenedor para guardar elementos. Los elementos que se agregan al inventario se convierten en elementos derivados de la entidad del inventory_component. Junto con la funcionalidad normal de jerarquía de Scene Graph, los inventarios pueden administrarse a sí mismos y a los elementos que poseen con propiedades y métodos específicos:
Añadir o eliminar elementos mediante
AddItem()yRemoveItem().Para recuperar elementos, se pueden utilizar
GetItem()yFindItems(). Las funciones Obtener devuelven elementos derivados inmediatos, mientras que las funciones Buscar devuelven todos los descendientes.Para encontrar otros inventarios, utiliza
GetInventories()yFindInventories().Eventos a los que suscribirse, como
AddItemEventyRemoveItemEvent.GetEquippedItems()se puede usar para el equipamiento, y los eventosEquipItemEventyUnequipItemEventse pueden usar para rastrearlos.
Con un inventory_component, cualquier entidad podría convertirse en una bolsa o una mochila, en un cofre que contenga botín o incluso en un arsenal de personajes con armas y habilidades.
Los inventarios pueden controlar qué elementos se añaden o eliminan de diferentes maneras. Un método útil involucra eventos de escena. Cuando se llama a la función AddItem(), se transmite un evento de escena al que los componentes pueden responder. Cuando un evento de escena llega a un componente, se dispara el evento OnReceive(), que puede anularse para activar la lógica.
La versión experimental de los inventarios y los elementos personalizados también incluye otro método para controlar la adición, la eliminación y la 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 se pueden añadir 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. Para obtener más información, consulta
la referencia de la API inventory_component de la API de Verse.
Inventarios y Scene Graph
El sistema de inventarios y elementos personalizados ofrece una configuración básica que debe entenderse para aprovecharla al máximo.
Todos los jugadores comenzarán con un inventario raíz, que es una entidad con un inventory_component adjunto a la entidad del jugador. Este inventario raíz también tiene varios subinventarios fort_inventory_component. Estos son necesarios para preservar la funcionalidad de Fortnite. Consulta Inventory Component de Fort para obtener más información sobre estos componentes.
Debido al método de recorrer el Scene Graph, el inventario raíz siempre será el primer inventario que se encuentre al buscar en un árbol de entidades una entidad con un inventory_component. Por esta razón, el inventario raíz es un objetivo razonable para adjuntar 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 se adjunta al jugador, y todos los subinventarios se adjuntan al inventario raíz. Los nuevos inventarios deben añadirse al inventario raíz para que otros sistemas solo tengan que encontrar e interactuar con el inventario raíz.
Ejemplo
Añadir un inventory_component a una entidad en el editor de prefabricados le permite almacenar elementos como inventario.
El siguiente cofre tiene un inventory_component. Ahora puede aprovechar toda la funcionalidad dentro del componente.
Sin embargo, para aprovechar al máximo los inventarios y elementos 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 común de los inventarios es aplicar reglas a los elementos que podrán existir en su interior. A continuación, se muestra una secuencia de comandos para un inventory_component personalizado que anula el método
del componente OnReceive(). Aquí se utilizó para hacer una regla de tamaño máximo de 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 usar el inventory_component, consulta los tutoriales en Inventarios y elementos personalizados con Scene Graph.