Gegenstands- und Inventarsysteme sind ein wichtiger Bestandteil vieler Arten von Spielen. Du kannst das Spieler-Inventar von Fortnite mithilfe der Entitäten und Komponenten des Scene Graph anpassen, um Gegenstände zu erstellen, die einzigartig für deine Insel sind.
Gegenstände sind Objekte, die Spieler und Agenten verwenden und besitzen können. Zu den Inventaren gehören das vorhandene Spieler-Inventar von Fortnite sowie alle benutzerdefinierten Inventare, die du mit inventory_component erstellst. Benutzerdefinierte Gegenstände und Inventare ist ein System zum Erstellen, Steuern und Speichern von Gegenständen. Dieses System ist eine experimentelle Funktion, die du in den Projekt-Einstellungen aktivieren musst und die du mit Scene Graph und Verse in Unreal Editor für Fortnite (UEFN) verwendest.
Grundlagen des Scene Graph
Scene Graph ist ein Entitäten- und Komponentensystem, das auf Verse aufbaut. Entitäten sind Container für Komponenten, und Komponenten verleihen einer Entität Funktionalität. Du kannst Entitäten in einer Beziehung aus Parent- und Child-Objekten aneinander anhängen, wodurch Hierarchien entstehen. Eine wiederverwendbare Anordnung von Entitäten und Komponenten wird als Prefab bezeichnet.
Weitere Informationen zu Entitäten und Komponenten findest du unter Arbeiten mit Entitäten und Komponenten. Weitere Informationen zu Prefabs findest du unter Prefabs und Prefab-Instanzen.
Gegenstände
Gegenstände werden im Scene Graph erstellt, indem eine item_component auf einer Entität platziert wird. Inventare behandeln die Komponente wie ein Objekt. Die item_component bietet Funktionalität, wie zum Beispiel:
Ausrüsten und Ablegen.
Benannte Kategorien für Vergleich und Sortierung.
Hilfreiche Funktionen und Events.
Für sich genommen bietet die item_component nur begrenzte Optionen für einen Gegenstand. Zusätzliche Komponenten schaffen etwas Interessanteres mit erhöhter Funktionalität.
Weitere Informationen findest du unter Gegenstandskomponente.
Inventare
Inventare sind Container für Gegenstände und steuern, was mit diesen Gegenständen passiert. Ein Inventar ist eine Entität, die eine inventory_component besitzt und auf folgende Weise funktioniert:
Es ermöglicht, alle darin vorhandenen Gegenstände zu überblicken.
Es regelt, welche Gegenstände in das Inventar gelangen oder es verlassen können.
Es bestimmt, was passiert, wenn ein eingehender Gegenstand mit einem Gegenstand zusammengeführt werden soll, der sich bereits im Inventar befindet.
Da ein Gegenstand jeweils nur in einem Inventar existieren kann, bestimmen Inventare auch den Besitz der Gegenstandsentitäten. Unterobjekte eines Inventars gelten nur dann als Gegenstände innerhalb des Inventars, wenn sie auch eine item_component haben, andernfalls sind sie Child-Unterobjekte.
Standardmäßig können Inventare eine unendliche Anzahl und Vielfalt von Gegenständen enthalten. Mit Verse kannst du Beschränkungen und Regeln erstellen, die das Hinzufügen und Entfernen von Gegenständen beeinflussen. Zum Beispiel:
Füge Gegenstände nur dann zu einem Inventar hinzu, wenn sie die richtige Kategorie haben.
Begrenze die Anzahl der Gegenstände in einem Inventar.
Verhindert, dass der letzte Gegenstand jemals aus einem Inventar entfernt wird.
Gegenstände mit höherer Priorität erlauben, um Gegenstände mit niedrigerer Priorität auszuwerfen, wenn das Inventar voll ist.
Beschränke ein Inventar auf einen einzelnen Gegenstand.
Inventarbäume
Inventare kennen alle Inventare, die in der Scene Graph-Hierarchie unter ihnen liegen. Diese Child-Inventare werden als Unterinventare bezeichnet. Du kannst den Baum der Inventare auf viele Arten nutzen.
Zum Beispiel kannst du einen Gegenstand zu einem Parent-Inventar hinzufügen, von wo aus er seinen Weg zu einem spezialisierteren Child-Inventar finden kann. Du kannst dir das so vorstellen, als würdest du dem Spieler eine Münze geben und sie durch das Inventarsystem zu einer Brieftasche schicken (Spielerinventar > Rucksackinventar > Geldbeutel-Inventar).
Um ein fortschrittlicheres Inventarverhalten zu erstellen, ist es notwendig, Verse zu schreiben.
Verse: Inventare
Es gibt zwei Möglichkeiten, einen Gegenstand zu einem Inventar hinzuzufügen.
Führe den
AddItem()-Aufruf aus, um einen Gegenstand speziell zu einem Inventar hinzuzufügen.Aufrufen der Funktion
AddItemDistribute()und Verwendung der Inventarhierarchie, um das am besten geeignete Inventar oder Unterinventar zu finden.
Wenn die Funktion addItemDistribute () aufgerufen wird, erhalten das Zielinventar und all seine Unterinventare die Möglichkeit, den Gegenstand auszuwerten und zu beanspruchen. Nachdem jedes Inventar geprüft wurde, versucht das am besten geeignete Inventar, den Gegenstand hinzuzufügen.
Spieler-Stamm-Inventar
Spieler haben standardmäßig ein Inventar. Dies wird als Stamm-Inventar bezeichnet. Anders als andere Inventare kann das Stamm-Inventar des Spielers keine Gegenstände aufnehmen. Stattdessen fungiert es als Parent für die darunter liegenden Unterinventare. Das bietet dir die Möglichkeit, mit AddItemDistribute() das Ziel hierhin auf das Stamm-Inventar anzusteuern und für einen Artikel ein geeignetes Inventar zu finden, auch wenn das ursprüngliche Ziel es nicht erhalten kann.
Damit ein Spieler Gegenstände erhalten kann, benötigt er ein oder mehrere Unterinventare unter dem Stamm-Inventar.
Die obige Erklärung betrifft keine Entitäten, die eine inventory_component durch Verse oder über den Prefab-Editor hinzugefügt haben.