Questa funzionalità è in stato sperimentale, quindi puoi provarla, fornire un feedback e vedere cosa stiamo pianificando. Al momento non puoi pubblicare un progetto che utilizza Oggettizzazione.
Ricorda che non garantiamo la retrocompatibilità per gli asset creati in fase sperimentale; le API per queste funzioni sono soggette a modifiche e che potremmo rimuovere intere funzioni sperimentali o funzionalità specifiche a nostra discrezione. Prima di iniziare a usare questa funzionalità, consulta l'elenco dei problemi noti.
Nel sistema inventari e oggetti personalizzati, un item_component diventa una classe che definisce cosa è un oggetto e cosa non lo è. Per informazioni su come aggiungere un componente alla tua entità, vedi Utilizzo di entità e componenti.
Le entità sono considerate oggetti solo se hanno un item_component. In sua assenza, le entità non verranno aggiunte correttamente agli inventari e molte funzionalità degli oggetti personalizzati e degli inventari potrebbero non funzionare.
I riferimenti a un "oggetto" indicano direttamente un'entità con un
item_component.I riferimenti agli "inventari" indicano direttamente un'entità con un
inventory_component.
Definizione classe
Il collegamento di un item_component a un'entità trasforma l'entità in un oggetto. Ciò significa che può essere aggiunto a un inventario e manipolato dagli inventari. Il componente item_component contiene anche le seguenti funzionalità di base:
Categorie- Un array diitem_categoryche può essere utilizzato per ordinare e caratterizzare.Comportamento impilamento oggetti:
StackSize- Un numero intero che indica quanti di questi oggetti sono impilati.MaxStackSize- Quanti oggetti si possono unire o impilare prima di creare un nuovo stack. L'impostazione predefinita non rappresenta il massimo (come nel caso di un impilamento infinito).Registrati a
ChangeStackSizeEventper monitorare le modifiche allo stack.MergeableItemComponentClassesè un array che può contenere sottoclassi diitem_component. Ciò permette a qualsiasi entità con una sottoclasse all'interno dell'array di fondersi con questa entità per formare uno stack.
Il componente contiene anche funzioni di supporto come
GetParentInventory()eIsEquipped().
È possibile aggiungere altre funzionalità a un oggetto con componenti aggiuntivi che espongono diverse funzioni e il gameplay di base di Fortnite. Puoi anche scrivere i tuoi componenti Verse personalizzati. Per maggiori informazioni, consulta il riferimento API item_component dall'API Verse.
Vedi Componenti se cerchi un elenco completo dei componenti di inventari e oggetti personalizzati.
Esempio
I componenti di oggetti sono richiesti dalle entità per funzionare come oggetti. L'editor di prefab ha proprietà modificabili limitate, quindi per ottenere il massimo dal componente dovrai utilizzare 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]
È possibile aggiungere facilmente funzionalità agli oggetti creando sottoclassi di item_component. Ad esempio, si potrebbero modificare le proprietà di base o aggiungere nuove funzioni e campi specifici all'esperienza.
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}
Qui puoi vedere un elemento prefab che utilizza il custom_item_component mostrato sopra. L'oggetto viene raccolto e viene rigenerato un nuovo oggetto di conseguenza. Puoi vedere il comportamento di impilamento nell'inventario.