Diese Funktion befindet sich noch im experimentellen Zustand, sodass du sie ausprobieren, Feedback geben und sehen kannst, 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.
Dieses Tutorial zeigt dir, wie du das benutzerdefinierte Inventar- und Gegenstand-System mit Scene Graph und Verse verwendest, um einen benutzerdefinierten Schlüsselkartengegenstand zu erstellen.
Nachdem du dieses Beispiel erstellt hast, um zu lernen, wie du eine benutzerdefinierte Schlüsselkarte erstellst, kannst du eine benutzerdefinierte Schlüsselkarte dann in Spielen mit dem Ziel verwenden, Schlüsselkarten zu finden und mit Schlüsselkarten Zugang auf verschlossene Gebiete zu erhalten. Hier sind einige Beispiele:
Ein verschlossener Raum, der das Objekt für einen Raubzug enthält
Das nächste Gebiet in deinem Spiel
Schatz oder Belohnungen für den Sieg über einen Boss
Bevor du anfängst
Du solltest mit UEFN, Scene Graph und Verse-Code vertraut sein, um dieses Tutorial erfolgreich abzuschließen.
Dein Projekt einrichten
Befolge diese Schritte, um dein Projekt einzurichten und benutzerdefiniertes Inventar und Gegenstände zu aktivieren.
Öffne UEFN und erstelle ein Projekt aus einer beliebigen Inselvorlage. In Inselvorlagen kannst du das Leer-Projekt verwenden, wenn du mit einem flachen Gebiet arbeiten möchtest. Benenne dein neues Projekt und klicke auf Erstellen, um es im Editor zu öffnen.
Klicke in der Symbolleiste auf Projekt und wähle Projekt-Einstellungen.
Scrolle nach unten zum Abschnitt Experimenteller Zugriff und aktiviere das Kontrollkästchen für Inventarsystem. Dadurch werden benutzerdefiniertes Inventar und Gegenstände aktiviert.
Deinen Raum erstellen
Zuerst musst du den Raum für das Beispiel erstellen. Das Beispiel ist wie eine Demonstration aufgebaut, die zwei verschlossene Türen vergleicht:
Die erste demonstriert, wie eine Fortnite-Schlüsselkarte eine Tür öffnet, die ein Schloss-Gerät hat, unter Verwendung eines Bedingungsknopf-Geräts, um festzustellen, ob der Spieler die Schlüsselkarte hat.
Die zweite demonstriert, wie man eine benutzerdefinierte Schlüsselkarte anstelle des bestehenden Fortnite-Schlüsselkarten-Gegenstands verwendet, und verwendet Verse, um festzustellen, ob der Spieler die benutzerdefinierte Schlüsselkarte hat.
Um den Raum für das Beispiel zu erstellen, kannst du die folgenden Fortnite-Assets verwenden:
Raum: Navigiere im Inhaltsbrowser zu Fortnite > Graybox-Assets > Demo. Dieses Beispiel verwendet die DemoRoom-Assets.
Demo-Stand: Navigiere im Inhaltsbrowser zu Fortnite > Graybox-Assets > Demo. Verwende das DemoDisplay-Asset.
Türen:
Tür in der grünen Wand: Navigiere zu Fortnite > Galerien > Gebäude > Tilted Towers-Wand – Galerie N. Finde Suburban Interior Door C 02 a8a9d603 am Ende der ersten Reihe.
Tür in hellbrauner Wand mit dunkler Verkleidung oben: In derselben Galerie wie oben, direkt links befindet sich Suburban Interior Door C 02 a9577d9d.
Tisch: Navigieren zu Fortnite > Props > Super. Finde Academy Round Table A 13a04066.
Die Geräte einrichten
Benötigte Geräte:
1 x Spieler-Spawnpunkt
2 x Schloss-Gerät
1 x Bedingungsknopf-Gerät
2 x Volumen-Gerät
1 x Gegenstandsplatzierer (Authority-Schlüsselkartengegenstand)
Einrichten der Tür für eine Fortnite-Schlüsselkarte
Wähle eine Tür aus, um eine typische Fortnite-verschlossene Tür einzurichten. Folge diesen Schritten, um die Geräte für die erste Tür einzurichten.
Platziere ein Schloss-Gerät an der Wand neben der Tür. Passe im Details-Panel die Geräteoptionen wie unten beschrieben an. Nicht aufgeführte Optionen können auf ihren Standardwerten belassen werden.
Option
Wert
Erklärung
Im Spiel sichtbar
False (nicht aktiviert)
Dadurch wird das Schloss-Gerät ausgeblendet, wenn das Spiel läuft, sodass die Spieler es nicht sehen können.
Beginnt verschlossen
Gesperrt
Dadurch wird die Tür verschlossen, wenn das Spiel beginnt.
Interaktion verbergen, wenn verschlossen
True (aktiviert)
Dadurch wird der Interaktionsaufruf ausgeblendet, wenn die Tür verschlossen ist.
Anfängliche Türposition
Geschlossen
Dadurch ist die Standardstartposition für die Tür Geschlossen.
Lege unter Nutzeroptionen - Funktionen die folgenden Funktionen für das Schloss-Gerät fest.
Du kannst die Schloss-Funktion möglicherweise erst einstellen, nachdem du das Volumen-Gerät in SCHRITT 3 unten platziert hast.
Funktion
Zielgerät
Zu bindendes Ereignis
Erklärung
Entsperren
Bedingungsknopf
Bei Aktivierung
Die Tür wird entsperrt, wenn der Bedingungsknopf aktiviert wird.
Sperren
Lautstärke
Beim Verlassen
Die Tür wird verschlossen, wenn der Spieler das Volume für die Fortnite-Geräte-Tür verlässt.
Platziere ein Volumen-Gerät mittig auf der Tür. Passe im Details-Panel die Geräteoptionen wie unten beschrieben an. Nicht aufgeführte Optionen können auf ihren Standardwerten belassen werden.
Option
Wert
Erklärung
Bereichsform
Zylinder
Bestimmt die Form des Bereichs.
Bereichshöhe
0,25-fach
Damit wird bestimmt, wie hoch der Volumenzylinder geht.
Bereichsradius
0,9x
Damit wird der Radius des Volumenzylinders festgelegt, der bestimmt, wie nah oder weit er vom Standort des Geräts entfernt ist. Du möchtest den Radius relativ klein machen, sodass der Spieler nahe an die Tür kommen muss, um das Volumen zu betreten.
Platziere das Bedingungsknopf-Gerät neben der Tür, unter dem Schloss-Gerät. Passe die Optionen wie unten beschrieben an: Nicht aufgeführte Optionen können auf ihren Standardwerten belassen werden.
Option
Wert
Erklärung
Erforderliche Schlüsselgegenstände
True (Aktiviert), 1
Aktiviere dies, um anzuzeigen, dass ein Schlüsselgegenstand erforderlich ist, um die Bedingung zu bestehen. Gib 1 in das Feld ein, um anzuzeigen, dass nur eine Schlüsselkarte erforderlich ist.
Schlüsselgegenstand 1
Authority-Schlüsselkarte (In-Gegenstandame-Name) oder AGID_CP_Keycard_Agency (Gegenstands-ID)
Um den erforderlichen Gegenstand auszuwählen, klicke auf die Dropdown-Liste und suche nach „schlüsselkarte“. Es gibt mehrere Schlüsselkarten, aber dieses Beispiel verwendet den Gegenstand „Authority-Schlüsselkarte“.
Lege unter Nutzeroptionen - Funktionen die folgenden Funktionen für das Bedingungsknopf-Gerät fest.
Funktion
Zielgerät
Zu bindendes Ereignis
Erklärung
Aktivieren
Lautstärke
Beim Betreten
Wenn der Spieler das Volumen für die Fortnite-Gerätetür betritt, wird der Bedingungsknopf aktiviert. Es wird geprüft, ob der Spieler im Besitz der Authority-Schlüsselkarte ist.
Einrichten der Tür für die benutzerdefinierte Schlüsselkarte
Für die zweite Tür befolge diese Schritte, um die Geräte einzurichten.
Da die Optionen für beide Schloss-Geräte gleich sind, kannst du das erste Schloss-Gerät kopieren und die Kopie in dein Level einfügen. Vielleicht möchtest du das Gerät umbenennen, um es vom ersten zu unterscheiden.
Lege unter Nutzeroptionen - Funktionen die folgenden Funktionen für das Schloss-Gerät fest.
Du kannst diese Funktion möglicherweise erst festlegen, wenn du den Spieler-Spawnpunkt platziert hast (Link zu diesem Abschnitt hier).
Funktion
Zielgerät
Zu bindendes Ereignis
Erklärung
Sperren
Spieler 1 Spawnfläche
Bei gespawntem Spieler
Wenn ein Spieler von Spieler 1 Spawnfläche spawnt, wird das Schloss-Gerät aktiviert und verschließt die Tür.
Die Optionen für beide Volumen-Geräte sind gleich, du kannst also auch das erste Volumen kopieren und die Kopie in dein Level einfügen. Vielleicht möchtest du das Gerät umbenennen, um es vom ersten zu unterscheiden.
Einrichten des Tisches für die Schlüsselkarten
Befolge diese Schritte, um den Tisch mit der Fortnite-Schlüsselkarte und deiner benutzerdefinierten Schlüsselkarte einzurichten.
Platziere das Gegenstandsplatzierer-Gerät auf der Seite des Tisches, die neben der verschlossenen Tür liegt, die nur Geräte benutzt.
Passe im Details-Panel die Geräteoptionen für den Gegenstandsplatzierer wie unten gezeigt an.
Option
Wert
Erklärung
Gegenstandsliste
Authority-Schlüsselkarte
Klicke auf +, um ein Array-Element hinzuzufügen, klicke dann auf die Dropdown-Liste und suche nach „schlüsselkarte“. Wähle dann den Gegenstand Authority-Schlüsselkarte aus.
Suche deinen benutzerdefinierten Schlüsselkarten-Gegenstand im Inhaltsbrowser und ziehe ihn in das Level. Lege die benutzerdefinierte Schlüsselkarte auf den Tisch, so dass die Seite, die der verschlossenen Tür am nächsten ist, die dafür eingerichtet wurde.
Nachdem du das keycard_gameplay_device (hier Ankerlink hinzufügen) erstellt hast, suche das Verse-Gerät im Inhaltsbrowser und ziehe es in dein Level.
Einrichten des Spieler-Spawnpunkts
Zu guter Letzt musst du einen Spieler-Spawnpunkt platzieren. Für dieses Beispiel benötigst du nur einen Spieler-Spawnpunkt. Aber wenn du ein Spiel mit mehreren Spielern erstellst, kannst du diese Schritte befolgen, um weitere einzurichten. Oder du kannst sie basierend auf deinem besonderen Insel-Erlebnis unterschiedlich einrichten.
Platziere den Spieler-Spawnpunkt an einem Ort, wo der Spieler sofort den Tisch und die zwei Türen sieht.
Passe die Geräteoptionen wie unten beschrieben an.
Option
Wert
Erklärung
Im Spiel sichtbar
False (nicht aktiviert)
In diesem Beispiel ist der Spieler-Spawnpunkt unsichtbar.
Nachdem du jetzt deinen Raum und deine Geräte eingerichtet hast, kannst du die benutzerdefinierte Schlüsselkarte erstellen.
Benutzerdefiniertes Gegenstandsentität-Prefab erstellen
Klicke im Inhaltsbrowser mit der rechten Maustaste, um das Kontextmenü zu öffnen, und wähle Entität-Prefab-Definition. Dies fügt ein neues Scene-Graph-Entität-Prefab zum Inhaltsbrowser hinzu.
Benenne das Prefab in Item_Keycard um.
Ziehe eine Instanz des neuen Prefab in die Welt, indem du sie in den Viewport ziehst. Dadurch wird sie im Outliner auswählbar.
Klicke bei ausgewähltem Prefab Item_Keycard im Details-Panel auf +Komponente und wähle item_component aus. Du kannst durch die Liste scrollen, um es zu finden, oder „Gegenstand“ in die Suchleiste eingeben, um die Ergebnisse einzuschränken und schneller zu finden.
Klicke erneut auf +Komponente und wähle item_details_component aus. Diese Komponente speichert Textdaten zum Gegenstand.
Die Komponente item_details hat drei Eigenschaftsfelder, die im Details-Panel angezeigt werden: Name, Beschreibung und KurzeBeschreibung. Gib in diesen Feldern einen Namen, eine Beschreibung des Gegenstands und ein kurzes beschreibendes Label ein.
Klicke erneut auf +Komponente und wähle item_icon_component aus.
Erweitere im Details-Panel die item_icon_component. Du musst ein 2D-Bild auswählen, welches das Bild ist, das in der Benutzeroberfläche des Spiels (zum Beispiel im Spieler-Inventar) angezeigt wird, um den Gegenstand darzustellen.
Klicke auf die Dropdown-Liste neben der Kachel Keine, um ein Kontextmenü zu öffnen, und gib einen Teil des Namens deines Bildes in die Suchleiste ein. In diesem Beispiel verwenden wir ein PNG-Bild mit dem Namen T_Icon_Keycard.png.
Wähle das Bild in den Suchergebnissen aus.
Klicke erneut auf +Komponente und wähle mesh_component aus. Wähle für dieses Beispiel Ebene aus.
Dadurch wird deinem Gegenstand ein Ebenen-Mesh hinzugefügt. Je nach deinen Einstellungen kann diese Ebene zunächst sehr groß sein. Befolge diese Schritte, um die Größe der Ebene auf die Größe einer Schlüsselkarte zu ändern.
Wähle in der Werkzeugleiste oben im Viewport das Skalierungswerkzeug aus. Du kannst auch die R-Taste drücken, um zum Skalierungswerkzeug zu wechseln.
Klicke weiter Rechts neben dem Skalierungswerkzeug auf die Dropdown-Liste für die Voreinstellung Verhältnis für Maßstab. Setze dies auf 0,0625. Dadurch kannst du die Ebene auf eine sehr kleine Größe reduzieren, um eine Schlüsselkarte darzustellen.
Klicke erneut auf +Komponente und wähle fort_item_pickup_component aus. Durch das Hinzufügen dieser Komponente wird die gesamte Funktionalität von Fortnite-Gegenständen hinzugefügt:
Eine Animation für das Aufheben eines Gegenstands und eine Animation für das Droppen eines Gegenstands
Eine Interaktion, um einen Gegenstand zum Inventar hinzuzufügen
Ein Standard-Widget, das angezeigt wird, wenn ein Spieler den Gegenstand ansieht
Das Mesh des Gegenstands wird deaktiviert, wenn ein Gegenstand aufgehoben wird
Das Mesh des Gegenstands wird aktiviert, wenn ein Gegenstand gedroppt wird
Nachdem du nun ein grundlegendes benutzerdefiniertes Schlüsselkarten-Prefab hast, kannst du eine benutzerdefinierte Verse-Komponente erstellen, die diesen Gegenstand einzigartig macht, sodass er mit Verse-Code überprüft werden kann, um zu sehen, ob er eine bestimmte verschlossene Tür öffnet.
Benutzerdefinierte Verse-Komponente erstellen
Normalerweise solltest du bei einem großen Projekt, das sehr viele Verse-Code-Dateien enthält, eine neue Verse-Datei für eine benutzerdefinierte Komponente erstellen. Befolge dazu diese Schritte.
Da das Beispiel für dieses Tutorial klein ist, wurde die benutzerdefinierte keycard_item_component in der Verse-Datei für das benutzerdefinierte keycard_gameplay_device definiert. Diese Schritte findest du im Abschnitt Verse-Code für das Gameplay schreiben.
Klicke bei ausgewähltem neuen Schlüsselkartenelement im Details-Panel auf +Komponente und wähle Neue Verse-Komponente. Das Fenster Verse-Komponente erstellen wird geöffnet.
Du kannst auch eine Verse-Komponente erstellen, indem du eine neue Verse-Datei mit dem Verse-Explorer hinzufügst.
Wähle unter Vorlage auswählen die Option Scene-Graph-Komponente aus.
Gib unten im Feld Komponentenname keycard_item_component ein. Klicke dann auf Erstellen.
Klicke im Detailfenster auf +Komponente und gib „schlüsselkarte“ in die Suchleiste ein. Deine neue Verse-Komponente sollte aufgelistet sein. Wähle sie also aus, um sie deinem benutzerdefinierten Schlüsselkarten-Gegenstand hinzuzufügen.
Klicke in der Menüleiste auf Verse > Verse-Explorer. Suche deine neue Verse-Komponente, klicke mit der rechten Maustaste darauf und wähle In Visual Studio Code öffnen.
Verse-Code für das Gameplay schreiben
Da du einen benutzerdefinierten Gegenstand erstellst (die Schlüsselkarte) und ein Gerät auslösen möchtest, wenn der Spieler die benutzerdefinierte Schlüsselkarte in seinem Inventar hat, musst du ein Verse-Gerät erstellen, um dies zu erreichen.
Gehe in der Menüleiste zu Verse > Verse-Explorer. Der Verse-Explorer öffnet sich in einem Tab neben dem Outliner.
Klicke im Verse-Explorer mit der rechten Maustaste auf deinen Projektnamen und wähle Neue Verse-Datei zum Projekt hinzufügen aus, um das Fenster Verse-Script erstellen zu öffnen.
Klicke im Fenster „Verse-Script erstellen“ unter Vorlage auswählen auf Verse-Gerät, um es auszuwählen. Gib im Feld Gerätename keycard_gameplay_device ein. Klicke dann auf Erstellen , um die Verse-Datei zu erstellen.
Doppelklicke im Verse-Explorer auf dein neues Verse-Gerät, um die Datei in Visual Studio (VS) Code zu öffnen. Stelle sicher, dass alle folgenden Elemente in den ersten Zeilen des Codes stehen.
Verseusing { /Fortnite.com/Devices } using { /Fortnite.com/Itemization } using { /Verse.org/Simulation } using { /Verse.org/SceneGraph } using { /Verse.org/Random } using { /UnrealEngine.com/Itemization } using { /UnrealEngine.com/Temporary/Diagnostics }Füge als Nächstes den Code hinzu, der deine benutzerdefinierte Gegenstandskomponente definiert.
Verse# KEYCARD ITEM COMPONENT keycard_item_component := class(item_component) :Wir können eine Helferfunktion hinzufügen, mit der wir das Stamminventar des Ziel-Agenten finden können:
Verse# 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]Definiere als Nächstes dein benutzerdefiniertes Verse-Gerät als Subklasse von
creative_device. Richte darunter eine bearbeitbare Eigenschaft für die Volumen- und Schloss-Geräte ein. So kannst du eine bestimmte Instanzierung des Volumen- oder Schloss-Geräts im Editor auswählen (wichtig, da du zwei Volumen-Geräte und zwei Schloss-Geräte hast).Verse# DEVICE //// GAMEPLAY keycard_gameplay_device := class(creative_device) : # Use a volume_device to be able to check when a player approaches @editable VolumeDevice:?volume_device = false # The lock device is attached to a wall/door prop. This can be activated to lock/unlock the door it is attached to. @editable LockDevice:?lock_device = falseNun verwendest du die Abfrage, um zu prüfen, ob das Volumen-Gerät vorhanden ist, und die Events Bei Agent betritt und Bei Agent verlässt des Volumen-Geräts zu abonnieren.
Verse# Subscribe to the entry and exit events on the Volume to determine when a player/agent approaches. OnBegin<override>()<suspends>:void= if: TargetVolume := VolumeDevice? then: TargetVolume.AgentEntersEvent.Subscribe(OnAgentEntersEvent) TargetVolume.AgentExitsEvent.Subscribe(OnAgentExitsEvent)Du möchtest das Inventar des Spielers prüfen, um zu sehen, ob er die benutzerdefinierte Schlüsselkarte in seinem Inventar hat. Dazu führst du eine Prüfung auf alles mit der
keycard_item_componentdurch. Dieser Code erfordert auch, dasskeycard_item_componentvorhanden ist, um das Schloss-Gerät zu öffnen.VerseOnAgentEntersEvent(Agent:agent):void= # Get the inventory from the player that is entering. if(TargetInventory := GetAgentInventory[Agent]): # Check the item in the inventory, if it has the keycard_item_component, proceed for(item : TargetInventory.FindItems(), KeycardComponent := item.GetComponent[keycard_item_component]) # If there is a valid lock_device, then this opens the door. if(TargetDoorLock := LockDevice?):Wenn schließlich mehr als ein Spieler anwesend ist und ein Spieler die Schlüsselkarte hat, sorgt dieser Code dafür, dass das Schloss offen bleibt. Aber wenn der Spieler mit der Schlüsselkarte das Volumen verlässt, wird das Schloss wieder geschlossen.
VerseOnAgentExitsEvent(Agent:agent):void= # Start by assuming that no one has the required keycard_item_component. var AgentWithKeycardInVolume:logic = false if(TargetVolume := VolumeDevice?): # Get the Agents that are inside the volume_device as an array. for(TargetAgent:TargetVolume.GetAgentsInVolume()): # Use the same check to see if any of the agents in the volume_device have a keycard_item_component.
Hier ist das vollständige Verse-Code-Snippet.
using { /Fortnite.com/Devices }
using { /Fortnite.com/Itemization }
using { /Verse.org/Simulation }
using { /Verse.org/SceneGraph }
using { /UnrealEngine.com/Itemization }
using { /UnrealEngine.com/Temporary/Diagnostics }
# KEYCARD ITEM COMPONENT
keycard_item_component := class(item_component) :