Diese Funktion befindet sich in einem experimentellen Zustand. Du kannst sie ausprobieren, Feedback geben und sehen, was wir planen. Du kannst derzeit kein Projekt veröffentlichen, das benutzerdefinierte Inventare und Gegenstände verwendet.
Beachte, dass wir für Assets, die mit dem Status „Experimentell“ erstellt wurden, keine Abwärtskompatibilität garantieren können, dass die APIs für diese Funktionen Änderungen unterliegen und dass wir uns vorbehalten, ganze experimentelle Funktionen oder bestimmte Funktionalität nach unserem Ermessen zu entfernen. Sieh dir die Liste bekannter Probleme an, bevor du mit der Funktion arbeitest.
Gegenstände und Inventarsysteme sind ein wichtiger Bestandteil vieler Arten von Spielen. Mit den Entitäten und Komponenten von Scene Graph kannst du das Spieler-Inventar von Fortnite personalisieren und benutzerdefinierte Gegenstände erstellen, die für deine Insel einzigartig sind.
Gegenstände sind Objekte auf einer Insel, 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 Inventare und Gegenstände sind ein System zum Erstellen, Verwalten 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 in UEFN und Verse 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. Wiederverwendbare Anordnungen von Entitäten und Komponenten werden als Prefabs bezeichnet. Weitere Informationen zu Entitäten und Komponenten findest du unter Arbeiten mit Entitäten und Komponenten. Weitere Informationen über Prefabs in Scene Graph findest du unter Prefabs und Prefab-Instanzen.
Bekannte Probleme
Benutzerdefinierte Inventare und Gegenstände ist das erste System, das Scene Graph in UEFN nutzt. Daher gibt es eine Reihe von Bugs in der experimentellen Version, auf die du bei der Verwendung dieses Systems stoßen kannst. Hier findest du die Liste der bekannten Probleme. Wir arbeiten an vielen Korrekturen und Verbesserungen, die in einer zukünftigen Version enthalten sein werden.
Gegenstände
Ein Gegenstand ist eine Entität in Scene Graph, die eine item_component besitzt. Standardmäßig können Gegenstände zusammengeführt und gestapelt werden, haben Kategorien zum Vergleich und zum Sortieren und können ausgerüstet und nicht ausgerüstet werden.
Da das System für benutzerdefinierte Inventare und Gegenstände Scene Graph verwendet, kannst du Komponenten zu Gegenständen hinzufügen, um ihre Funktionalität zu erweitern. Das System wird mit mehreren grundlegenden Komponenten bereitgestellt, die in der folgenden Tabelle aufgeführt sind.
| Komponente | Beschreibung |
|---|---|
| Diese Komponente macht eine Entität zu einem Gegenstand. Sie verleiht der Entität auch die Fähigkeit, gestapelt zu werden und von einem Inventar besessen und kontrolliert zu werden. |
| Dies speichert ein Symbol für den Gegenstand, der in der Fortnite-Benutzeroberfläche angezeigt wird. |
| Diese enthält Textdaten wie den Namen und die Beschreibung des Gegenstands. |
| Diese speichert ein Mesh-Asset, das den Gegenstand im Spiel darstellt. |
| Mit dieser Komponente kann der Gegenstand genauso behandelt werden wie eine Fortnite-Gegenstandsaufnahme. Dies umfasst einen Interaktionsaufruf zum Aufheben, eine Benutzeroberfläche und Aufnahme-/Ablegen-Animationen. |
Ein Gegenstand kann nur eine Komponente jedes Typs haben. Dies umfasst Komponenten, die von anderen Komponenten erben, die bereits an den Gegenstand angehängt sind.
Wenn du also zum Beispiel eine benutzerdefinierte Komponente für einen bestimmten Gegenstand erstellst, der ein Children der item_component ist, wird deine benutzerdefinierte Gegenstandskomponente anstelle der generischen Gegenstandskomponente angezeigt.
Gegenstandsmodularität
Mit benutzerdefiniertem Inventar und Gegenständen können wir die richtige Modularität einführen. Das bedeutet, dass du Komponenten verwenden kannst, um Gegenstandsfunktionalität additiv zu bauen. Nachfolgend findest du Beispiele für Komponenten, die an eine Gegenstandsentität angehängt sind und Funktionalität gewähren.
Entität
item_component: Macht eine Entität zu einem Gegenstand.item_details_component: Speichert Textdaten wie den Namen und die Beschreibung des Gegenstands.item_icon_component: Speichert ein Symbol für den Gegenstand, das in der Fortnite-Benutzeroberfläche angezeigt wird.mesh_component: Speichert ein Mesh-Asset, das den Gegenstand im Spiel darstellt.
Inventare
Ein Inventar ist eine Entität, die eine inventory_component besitzt.
Inventare sind Container für Gegenstandsentitäten und das Inventar steuert, was mit diesen Gegenständen passiert.
Das System für benutzerdefinierte Inventare und Gegenstände verwendet Inventare und Unterinventare, um Gegenstände zu unterteilen. Dies erleichtert das Sortieren, Hinzufügen und Abrufen von Gegenständen innerhalb eines Inventars. Da ein Gegenstand jeweils nur in einem Inventar existieren kann, bestimmen Inventare auch den Besitz der Gegenstandsentitäten.
Standardmäßig können Inventare eine unendliche Anzahl Gegenstände enthalten. Du kannst jedoch Beschränkungen und Regeln erstellen, die bestimmen, welche Gegenstände hinzugefügt werden können. Einige Beispiele für diese Einschränkungen und Regeln:
Gegenstände zu einem Inventar nur hinzufügen, wenn sie der erforderlichen Typabfrage entsprechen.
Begrenze die Anzahl der Gegenstände in einem Inventar.
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.
Wenn eine AddItem()-Funktion nicht im Zielinventar aufgelöst werden kann, sucht sie nach anderen Inventaren, die möglicherweise den Gegenstand enthalten könnten. Die Funktion verwendet Scene-Graph-Hierarchien
– sie versucht zuerst, den Gegenstand zu gleichrangigen Inventaren hinzuzufügen (Inventaren, die einen gemeinsamen Parent mit dem anfänglichen Zielinventar haben), dann sieht sie sich die Child-Inventare an (Inventare, deren Parent das anfängliche Zielinventar ist). Die Funktion prüft alle Inventare in der Hierarchie, bevor sie einen Fehler zurückgibt.
Inventarfilterung mit Szenen-Events
Wenn ein Inventar mit einem AddItem()-Funktionsaufruf ausgewählt wird, erhält es ein Szenen-Event (add_item_event). Durch Überschreiben der OnReceive()-Funktion einer Komponente kann eine benutzerdefinierte Logik ausgelöst werden, die sich auf den Eintrag des Gegenstands auswirkt. Das ermöglicht Inventarregeln wie die Prüfung des Gegenstandstyps vor dem Zulassen, das Zulassen nur einer bestimmten Anzahl Gegenstände im Inventar usw. Das Event OnReceive() ist in der Basis-Komponentenklasse implementiert und ist für alle Scene-Graph-Komponenten verfügbar.
Das add_item_event sammelt Antworten von allen Inventaren, die es erreicht. Du kannst Inventarkomponenten das Event verändern lassen und kannst diese Inventarkomponenten sich anbieten lassen, um den hinzugefügten Gegenstand zu empfangen. Das Event enthält ein Array namens inventory_with_priority, das du festlegen und mit deinem Zielinventar aktualisieren kannst. Dies erlaubt es dir, das Zielinventar mit einer Priorität für den Empfang des Gegenstands zu benennen. Wenn das Szenen-Event gesendet wurde, können alle Inventare mit der festgelegten Priorität den Gegenstand empfangen. Das Inventar mit der höchsten Priorität erhält den Gegenstand.
In der experimentellen Version von benutzerdefinierten Inventaren und Gegenständen ist nur das add_item_event verfügbar. Weitere Events werden jedoch in zukünftigen Updates hinzugefügt.
Fortnite-Inventar
Benutzerdefinierte Inventare und Gegenstände enthalten eine Reihe von inventory_components-Subklassen, die als fort_inventory_components bezeichnet werden. Diese haben Gegenstandsfilter und Benutzeroberflächenelemente, die das Spielerinventar von Fortnite Battle Royale nachahmen.
| Komponente | Beschreibung |
|---|---|
| Dies entspricht dem Erntewerkzeug-Slot des Fortnite-Standardspielerinventars. |
| Dies entspricht dem Schnellzugriff des Fortnite-Standardspielerinventars. |
| Dies entspricht dem Bauwerkzeuge-Schnellzugriff des Fortnite-Standardspielerinventars. |
| Dies entspricht dem Fallen-Slot des Fortnite-Standardspielerinventars. |
| Dies entspricht dem Währungsabschnitt des Fortnite-Standardspielerinventars. |
| Dies entspricht dem Sammelgegenstand-Abschnitt des Fortnite-Standardspielerinventars. |
| Dies entspricht dem Munitionsabschnitt des Fortnite-Standardspielerinventars. |
Du kannst auch deine eigene Konfiguration von Unterinventaren erstellen, um das Standard-Spieler-Inventar hinzuzufügen, daraus zu entfernen oder es zu ersetzen.
Gegenstände und Inventare sind so einfach oder komplex wie die Anzahl der Komponenten, die dem Gegenstand- oder Inventarobjekt hinzugefügt werden. Im Laufe der Entwicklung des Systems für benutzerdefinierte Inventare und Gegenstände werden weitere Komponenten hinzugefügt, die noch mehr Funktionalität bieten.