Unreal Engine 5: Mehrspieler-RPG-Inventar (2023) | Pixel Helmet | Skillshare
Suchen

Playback Speed


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Unreal Engine 5: Mehrspieler-RPG-Inventar (2023)

teacher avatar Pixel Helmet, Game Developer & Publisher

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Einheiten dieses Kurses

    • 1.

      1.01 Introduction

      1:20

    • 2.

      1.02 Downloading the Project

      2:13

    • 3.

      1.03 Unreal Engine 5 Overview

      14:59

    • 4.

      1.04 What the Project Already Contains

      3:33

    • 5.

      2.01 Introduction to Widget Blueprints

      5:03

    • 6.

      2.02 Designing the Main UI

      10:55

    • 7.

      2.03 Designing the Inventory Category Buttons

      7:06

    • 8.

      2.04 Designing the Inventory Slots

      6:17

    • 9.

      2.05 Designing the Inventory

      8:38

    • 10.

      3.01 Displaying the Main UI

      7:11

    • 11.

      3.02 What is Event Replication

      4:50

    • 12.

      3.03 Binding Key to Open Inventory

      3:52

    • 13.

      3.04 Introduction to Enumeration

      2:18

    • 14.

      3.05 Creating the Open and Close Widget Event

      12:38

    • 15.

      3.06 Introduction to Blueprint Communication

      3:30

    • 16.

      3.07 Blueprint Interfaces

      6:52

    • 17.

      3.08 Displaying the Inventory

      3:00

    • 18.

      4.01 Creating the Base Item Blueprint

      5:09

    • 19.

      4.02 Introduction to Child Blueprints

      3:43

    • 20.

      4.03 Creating the Items

      5:20

    • 21.

      4.04 Introduction to Structures

      3:16

    • 22.

      4.05 Item Info Structure

      3:52

    • 23.

      4.06 Introduction to Data Tables

      2:40

    • 24.

      4.07 Item Info Data Table

      9:55

    • 25.

      4.08 Item Info Library Function

      7:14

    • 26.

      5.01 Creating the Inventory Component

      1:19

    • 27.

      5.02 Inventory Slot Structure

      1:58

    • 28.

      5.03 Inventory Category Structure & Data Table

      5:58

    • 29.

      5.04 Creating the Inventory Variables

      4:01

    • 30.

      5.05 Resizing the Inventory Category Variables

      3:25

    • 31.

      5.06 Displaying the Inventory Categories

      11:20

    • 32.

      5.07 Displaying the Inventory Slots

      8:39

    • 33.

      5.08 Set Selected Inventory Category

      14:22

    • 34.

      5.09 Re-adding Existing Items to Array

      7:51

    • 35.

      5.10 Displaying Item in Inventory

      7:51

    • 36.

      6.01 Interacting With the Items

      5:36

    • 37.

      6.02 Initial Add to Inventory Logic

      6:39

    • 38.

      6.03 Adding Item to Inventory

      6:25

    • 39.

      6.04 Creating a New Item Stack

      37:16

    • 40.

      6.05 Finding a Partial Stack

      17:48

    • 41.

      6.06 Optimizing the Inventory

      13:05

    • 42.

      7.01 Adding Drag and Drop Operation

      5:37

    • 43.

      7.02 Dropping Item From Inventory

      14:37

    • 44.

      7.03 Enabling Weapon Physics

      3:37

    • 45.

      8.01 Getting Slot Information

      4:10

    • 46.

      8.02 Update Slot Information

      3:49

    • 47.

      8.03 Dropping Item on Inventory Slot

      5:46

    • 48.

      8.04 Updating the Inventory Slots

      9:10

    • 49.

      8.05 Adding Sound Effects

      6:45

    • 50.

      8.06 Testing Out the Final Product

      3:24

  • --
  • Beginner level
  • Intermediate level
  • Advanced level
  • All levels

Community Generated

The level is determined by a majority opinion of students who have reviewed this class. The teacher's recommendation is shown until at least 5 student responses are collected.

148

Students

1

Projects

Über diesen Kurs

Über diesen Kurs

Wenn du dir nicht sicher bist, wie du ein Multiplayer-Inventarsystem für dein Spiel erstellen kannst, ist dieser Kurs genau das Richtige für dich. Du wirst lernen, wie du ein mehrspielerfähiges Inventarsystem von Grund auf erstellen kannst, ohne eine einzige Zeile Code zu schreiben, indem du Unreal Engine 5 Blueprints verwendest. Keine Erfahrung erforderlich! Du wirst sehen, wie einfach es ist, ein Inventarsystem ähnlich dem in beliebten Spielen zu erstellen.

Du wirst lernen, wie du das Inventar entwirfst und die Funktionen desselben programmierst, einschließlich stapelbarer Gegenstände, Verbrauchsmaterialien, Menge und mehr. Du wirst in der Lage sein, Inventurkategorien zu erstellen und die Artikel entsprechend zu sortieren. Zu guter Letzt wirst du lernen, wie du plünderbare Gegenstände erstellen kannst, die deinem Inventar hinzugefügt werden, und wie du sie anderen Spielern gibst.

All das oben Genannte wird anhand der besten Programmierpraxis in ausführlichen Follow-Away-Videos vermittelt. Ich werde dir auch das fertige Projekt zeigen, damit du es während des Kurses nach Belieben überprüfen kannst.

Trete unserer unterstützenden Community bei

Die Entwicklung von Spielen kann von Zeit zu Zeit frustrierend sein. Du könntest irgendwo ein nicht markiertes Kästchen übersehen, das dich für Stunden im Wald lässt. Oder du brauchst moralische Unterstützung und Ideen von aufstrebenden Entwicklern wie dir. Wir sind für dich da, wann immer du es brauchst. Trete unserer Discord-Community, unserer Website und unseren sozialen Medien bei, die in der Profilbeschreibung aufgeführt sind.

Ich wünsche dir das Beste,

Moustafa Nafei

Meet Your Teacher

Teacher Profile Image

Pixel Helmet

Game Developer & Publisher

Teacher

Pixel Helmet is a video game developer and publisher based in Denmark. We have recently released our first game Farmtale on the Steam platform.

We decided to get on Skillshare to create high-quality courses and share our knowledge with the game development community. Learning can be tedious at times and we aim to create a fun learning experience.

We offer to create courses within Modeling, Texturing, Unreal Engine, Blueprints, C++, Game Design, and much more. If you need any help during a course, please let us know through Skillshare or connect with us on Discord, Twitter, or LinkedIn.

See full profile

Level: All Levels

Kursbewertung

Erwartungen erfüllt?
    Voll und ganz!
  • 0%
  • Ja
  • 0%
  • Teils teils
  • 0%
  • Eher nicht
  • 0%

Warum lohnt sich eine Mitgliedschaft bei Skillshare?

Nimm an prämierten Skillshare Original-Kursen teil

Jeder Kurs setzt sich aus kurzen Einheiten und praktischen Übungsprojekten zusammen

Mit deiner Mitgliedschaft unterstützt du die Kursleiter:innen auf Skillshare

Lerne von überall aus

Ob auf dem Weg zur Arbeit, zur Uni oder im Flieger - streame oder lade Kurse herunter mit der Skillshare-App und lerne, wo auch immer du möchtest.

Transkripte

1. 1.01 Einführung: In diesem Kurs lernen wir , wie man ein Multiplayer-RPG-Inventarsystem mithilfe von Bauplänen in der Unreal Engine-Datei entwickelt ein Multiplayer-RPG-Inventarsystem mithilfe von Bauplänen in der Unreal Engine-Datei Wir werden bei Null anfangen und sowohl das UI-Design als auch die Programmierung des Inventars behandeln . In diesem Kurs wird behandelt, wie Sie die Benutzeroberfläche für das Inventar entwerfen. Wie man Inventarkategorien erstellt, wie man Inventarplätze erstellt, wie man Gegenstände in das Inventar plündert, wie man den angedeuteten Artikel in Ihrem Inventar mit Symbol und Text anzeigt . Wie man Gegenstände aus dem Inventar herauswirft, um Gegenstände im Inventar hin und her zu ziehen , um die Inventarplätze zu wechseln, zwei Gegenstände, und wie man dem Inventar Soundeffekte hinzufügt. Am Ende dieses Kurses wirst du in der Lage sein, selbstbewusst dein eigenes Multiplayer-RPG-Inventarsystem zu erstellen dein eigenes Multiplayer-RPG-Inventarsystem zu in deinen aktuellen oder zukünftigen Spielprojekten implementieren kannst. Ich habe diesen Kurs für alle konzipiert, die daran interessiert sind ein Inventarsystem für ihr Spiel und Unreal Engine Five zu erstellen und die besten Codierungspraktiken und optimierten Code zu verwenden. Ich hoffe, du nimmst an diesem Kurs teil . Und denken Sie daran, dass ich während des gesamten Kurses immer für Sie da bin, um Ihnen zu helfen. Und ich hoffe, dich bald zu sehen. 2. 1.02 Herunterladen des Projekts: Lassen Sie uns nun die Kursmaterialien herunterladen. Sie finden die Kostenmaterialien entweder auf der Website oder in der E-Mail, wenn Sie den Kurs kaufen. Schauen Sie also entweder auf der Website oder in der E-Mail nach. Öffnen wir die Kursmaterialien. Und hier haben wir dieses Projekt namens RPG Inventory. Wenn Sie meine vorherigen Kurse besucht haben, beginne ich normalerweise gerne mit einem leeren Unreal Engine-Projekt, weil ich Ihnen alles von Grund auf beibringen und Sie mit der Spieleentwicklung vertraut machen möchte Ihnen alles von Grund auf beibringen und . Da wir jedoch eine Bestandsaufnahme machen, benötigen wir ein bereits funktionierendes Spiel. Das ist nur ein sehr, sehr einfaches Spiel. Ich habe nicht viel gemacht. Lassen Sie uns diesen RPG-Inventarordner auf den Desktop ziehen diesen RPG-Inventarordner auf , da wir ihn extrahieren müssen. Dies ist ein Zip-Ordner, also müssen wir den Inhalt extrahieren. Das wird einige Zeit dauern. Ich werde warten, bis es hier fertig ist. In Ordnung, jetzt wo es fertig ist, kann ich darauf doppelklicken. Und in diesem Ordner können Sie sehen, dass dies das Unreal Engine-Projekt ist , mit dem wir arbeiten werden. Lassen Sie uns nun fortfahren und es schließen und zu Dokumenten gehen. Und statt Dokumenten haben wir einen sogenannten Ordner für unwirkliche Projekte. Und hier befinden sich all Ihre früheren Unreal Engine-Projekte. Wenn Sie noch keine Projekte gemacht haben, ist dies leer. Also klicken wir in Documents, Unreal Engine oder Unreal Projects auf unseren RPG-Inventarordner und ziehen ihn hinein. Und wenn du das tust, wenn du jetzt den Epic Games Launcher öffnest und in die Bibliothek gehst, kannst du hier sehen, dass das RPG-Inventarprojekt, das wir gerade extrahiert haben, im Ordner Unreal Projects erscheint das RPG-Inventarprojekt, das wir . Jetzt verwende ich Unreal Engine 5.1, 0.1. Aber wenn Sie 5.1, 0.2 oder drei oder 5.2 und so weiter haben. Bei den neueren Versionen ist das nicht wirklich wichtig. Du kannst auch mitmachen. Doppelklicken wir auf dieses RPG-Inventarprojekt und öffnen es. Dies ist das Projekt, mit dem wir arbeiten werden. Und bevor wir mit der nächsten Lektion beginnen, werfen wir einen kurzen Überblick über Unreal Engine Five. 3. 1.03 Unreal Engine 5 Übersicht: Bevor wir mit der Entwicklung des Inventars beginnen, werfen wir einen kurzen Überblick über Unreal Engine Five. Wenn Sie meine vorherigen Kurse besucht haben und Unreal Engine Five bereits kennen, können Sie diese Lektion einfach überspringen und mit der nächsten fortfahren. Aber wenn du neu hier bist, lass uns einfach einen kurzen Blick darauf werfen, wie Unreal Engine Five aufgebaut ist. Hier in der Mitte ist das Wichtigste. Meiner Meinung nach ist dies der Viewport. Und im Viewport kannst du sehen, wie das Spiel aussieht. Innerhalb von hier können Sie also die rechte Maustaste gedrückt halten und sich im Viewport umschauen und sehen, wie es aussieht. Das ist also die Ebene der einfachen Ebene, die dafür gebaut wurde. Für diese Lektion hier können Sie sich auch bewegen, indem Sie die rechte Maustaste gedrückt halten und auf W klicken, um vorwärts zu gehen, auf S klicken, um rückwärts zu gehen, auf D klicken, um nach rechts zu gehen, und auf A klicken, um nach links zu gehen. Denken Sie auch jetzt daran, die rechte Maustaste gedrückt zu halten , während Sie auf W, D, S und a klicken , um sich zu bewegen. Und so navigiere ich hauptsächlich innerhalb des Viewports. Ich halte einfach die rechte Maustaste gedrückt und drücke diese Tasten hier, um mich zu bewegen. Sie können auch die rechte Maustaste gedrückt halten und auf e klicken , um nach oben zu gehen, oder auf ein Cue klicken, um nach unten zu gelangen. Sie können aber auch die linke Maustaste gedrückt halten. Und wenn du das tust, kannst du dich so bewegen. Normalerweise benutze ich das nicht und vielleicht manchmal auf meinem Laptop, aber normalerweise nicht. Sie können auch die linke Maustaste und die rechte Maustaste gleichzeitig gedrückt halten . Und du kannst dich auch so bewegen. Das Letzte ist, dass Sie mit dem Scrollrad Ihrer Maus ein- und auszoomen können . Also reinzoomen und rauszoomen. Sie können auch wieder einfach die rechte Maustaste gedrückt halten, auf W klicken, um zu diesem Objekt zu gelangen, oder auf S klicken, um sich vom Objekt zu entfernen. Also nochmal, so navigiere ich hauptsächlich innerhalb des Viewports, aber Sie können sich einfach an der Seite dieser Ebenen umschauen. Verschaffen Sie sich den Dreh, sich hier drinnen zu bewegen und sehen Sie, was sich für Sie am besten anfühlt. Anstelle des Viewports haben wir verschiedene Schaltflächen. Also hier oben, nicht wirklich wichtig für diesen Kurs. ZB haben wir gerade die perspektivische Ansicht , wir befinden uns in der perspektivischen Ansicht. Sie können das Spiel von oben betrachten. Wenn du also mit dem Mausrad herauszoomst, hinein- und herauszoomst, kannst du sehen, wie das Spiel von oben aussieht. Auch hier können Sie einfach hier nach oben klicken, um in den Perspektivmodus zurückzukehren. Wirklich zu wichtig für diesen Kurs, aber es ist gut zu wissen, dass wir diese Schaltflächen haben, mit denen wir das Spiel in verschiedenen Anzeigemodi betrachten können , z. B. wenn ich diese Karte nicht beleuchtet hätte, wäre es sehr dunkel. Und deshalb klicke ich manchmal hier hoch und gehe in den unbeleuchteten Modus. Jetzt kann ich mein Level sehen, obwohl ich keine Beleuchtung habe. Und wenn ich mein Spiel anzünde, klicke ich hier hoch und gehe zurück in den Live-Modus. Sehr, sehr wichtig. Wir haben verschiedene Tools hier oben. Das erste ist also das Auswahlwerkzeug. darauf klicken, können Sie verschiedene Elemente innerhalb des Viewports auswählen . Hier daneben haben wir das Move Tool, das darauf klickt. Wenn Sie jetzt auf ein Element klicken, können Sie diese Drehpunkte sehen. Die rote ist die X-Achse. Und wenn Sie darauf klicken, können Sie dieses Element in der X-Achse verschieben. Die grüne ist die Y-Achse und die blaue ist die Z-Achse. Dies sind die Drehpunkte. Sie können die Elemente verschieben, wenn Sie das Verschiebenwerkzeug ausgewählt haben. Du kannst sie auch in zwei Richtungen bewegen, indem sie hier nahe der Mitte hältst. Und dieses und dieses Feld hier, indem ich es gleichzeitig in die Achse verschiebe, wenn ich nur auf Control Z klicke, um meine Bewegung hier rückgängig zu machen, und nur damit ich hierher zurückkehren kann, haben wir auch das Rotationswerkzeug, das darauf klickt. Sie können ein Objekt auf diese Weise in drei verschiedenen Graden drehen . Sie können sie auch skalieren, indem Sie auf das Skalierungswerkzeug klicken. Und du kannst es skalieren. Ich klicke, klicke auf Control Z, um es wieder hier oben zu haben, damit es klar ist. Sie können es in diesen drei verschiedenen Achsen skalieren. Wenn Sie es nun einheitlich skalieren möchten, können Sie auf dieses weiße Feld in der Mitte klicken. Und wenn Sie skalieren, wird dies gleichmäßig skaliert. Ok, klicken Sie erneut auf Control Z. Nun ist es sehr wichtig zu wissen , dass wir Abkürzungen für diese Tools haben , da es sehr lange dauern würde , wenn Sie hier nach oben klicken, dieses Element verschieben, erneut hier klicken müssten, um es zu drehen und so weiter. Wenn Sie also auf Ihrer Tastatur auf Q klicken, haben Sie das Auswahlwerkzeug. Wenn Sie auf W klicken, haben Sie das Move Tool. Wenn Sie auf E klicken, haben Sie das Drehwerkzeug. Und wenn du auf sind klickst, hast du das Skalierungstool, z.B. für dieses Protokoll hier drüben, ich kann auf W klicken, um es zu verschieben. Ich kann auf E klicken, um es zu drehen. Und vielleicht will ich es so, wie hier. Und ich kann auf W klicken, um es nach oben zu verschieben, wie bei R2, vielleicht so skalieren, nach oben verschieben und so weiter. Sie können also sehen, dass es viel schneller ist, auf diese Weise zu arbeiten, anstatt die ganze Zeit hier oben zu klicken und an Control Z zu arbeiten . Um das wieder rückgängig zu machen, haben wir auch Schnappwerkzeuge. Hier kannst du also sehen, wann ich meinen Gegenstand bewege, ob ich nur diesen Stift bewege, z.B. du kannst sehen, dass er an einem Raster einrastet. Und das liegt daran, dass Sie das hier oben aktiviert haben. Wenn Sie also darauf klicken und es bewegen, können Sie sehen, dass es sich reibungslos bewegt. Und wenn ich noch einmal darauf klicke, kannst du jetzt sehen, dass es wieder Schnappschüsse sind. Sie können auch auf diese Zahl klicken und den Fangwert erhöhen. Jetzt können Sie sehen, wenn ich es ziehe, es rastet an einem viel größeren Raster und Sie können es wieder verkleinern, wenn Sie möchten. Das sind also die Fangwerkzeuge für die Bewegung oder die Skalierung oder die Drehung und auch für die Skalierung. Sie können also sehen, ob ich zu meinem Drehwerkzeug gehe , indem Sie auf der Tastatur auf E klicken. Ich kann es drehen und es rastet alle zehn Grad ein. Ich kann hier darauf klicken, um es zu deaktivieren. Und jetzt kann ich es, ich kann es einfach so reibungslos drehen. Und erneut auf Control Z klicken. Das sind also die Fangwerkzeuge für das Verschiebewerkzeug, das Rotationswerkzeug und das Skalierungswerkzeug. Das Letzte, was wir haben, ist die Kamerageschwindigkeit, und das ist die Geschwindigkeit dieser Kamera im Moment . In diesem Viewport können Sie darauf klicken und die Geschwindigkeit verringern. Und jetzt kannst du sehen, dass es sehr langsam ist. Dies wird normalerweise verwendet, wenn Sie auf sehr kleine Objekte innerhalb des Levels fokussieren möchten sehr kleine Objekte innerhalb des , damit sich die Kamera nicht zu schnell bewegt. Wenn Sie ein großes Level haben und herumreisen möchten, können Sie die Kamerageschwindigkeit erhöhen. Und jetzt kannst du sehen, dass ich in meinem Level viel schneller vorankomme. Ich setze es wieder auf die Kamerageschwinde von vier zurück. Hier oben haben wir die Werkzeugleiste. Im Moment nicht wirklich wichtig. Aber das Wichtigste ist, dass wir auf diesen Play-Button klicken können , um unser Spiel zu spielen, oder wenn wir hier auf Spielen klicken, können Sie sehen, dass ich jetzt mein Spiel spiele. Ich kann mich mit den Tasten W, S, A und D bewegen . So kann ich mich bewegen und mich mit meiner Maus umschauen. Das ist das Wichtigste, was du jetzt wissen musst, hier oben. Wenn Sie auf Escape klicken, um das Spiel zu beenden , und wenn Sie auf diese drei Schaltflächen klicken, können Sie wählen, wie Sie Ihr Spiel spielen möchten. Normalerweise beginnt es also mit diesem ausgewählten Viewport. Also, wenn ich mein Spiel so spiele, habe ich im Viewport gespielt. Was ich im Mehrspielermodus mag. Ich spiele gerne im neuen Editorfenster weil ich zwei Fenster für den Mehrspielermodus geöffnet habe, also habe ich es gerne so. Lass es uns vorerst schließen. Und das Multiplayer-Zeug ist hier unten. Machen wir uns also später in den späteren Lektionen Gedanken darüber, manchmal sieht Ihre Engine vielleicht schlecht aus und Sie können versuchen, damit zu beginnen, schauen Sie hier oben in den Einstellungen nach, Sie haben etwas, das Skalierbarkeitseinstellungen für Engines bezeichnet wird. Im Moment sind meine auf Epic eingestellt , weil mein Computer schnell ist. Wenn Sie jedoch einen langsameren Computer haben, können Sie ihn auf niedrige oder mittlere Qualität usw. umstellen . also wirklich gut zu wissen, dass es da rechts ist, hier haben wir den Outliner und der Outliner besteht einfach aus Objekten, die du in deinen Levels hast. Alle diese Gegenstände, die Sie hier sehen, befinden sich also innerhalb dieses aktuellen Levels. Und wenn ich hier z.B. diesen Hocker auswähle , wenn ich ihn anklicke, siehst du, dass er auch ausgewählt wird ihn hier im Outliner auswählst. Was auch immer Sie im Level auswählen, Sie können es hier im Outliner sehen. Du kannst auch Dinge auswählen, indem sie hier oben anklickst. Jetzt kannst du sehen, wenn ich sie hier anklicke, es wählt sie auch innerhalb meines Levels aus. Das ist nützlich , wenn Sie etwas Bestimmtes suchen möchten , z. B. können Sie hier oben suchen. Ich will meinen Stuhl finden, z.B. und es ist dieser hier unten. Für dieses Tool habe ich es hier gefunden, ich kann darauf klicken. Und das ist der eine. Wenn du ein sehr großes Level hast und keine Artikel finden kannst, kannst du hier danach suchen. Nehmen wir an, Sie wussten nicht, wo es war. Als ob Sie ein sehr großes Level ausgewählt haben und es nicht wirklich sehen können. Sie können auf Ihrer Tastatur auf F klicken und Sie werden automatisch dorthin weitergeleitet. Außerdem habe ich vergessen zu sagen, ob Sie dieses Element verdoppeln oder duplizieren möchten, können Sie die Alt-Taste auf Ihrer Tastatur gedrückt halten und dann hierher ziehen. Wenn Sie also die Alt-Taste auf der Tastatur gedrückt halten und ziehen, wird das Element kopiert. Also manchmal sehr nützlich , wenn man das Level gestalten möchte. Sie müssen dieses Element also nicht immer wieder ziehen, indem Sie darauf klicken, indem Sie auf Löschen klicken, um diese zu entfernen Ich klicke hier oben auf das X , damit ich alle Elemente wieder sehen kann. Wenn Sie Ihre Elemente hier im Outliner organisieren möchten, können Sie jederzeit auf dieses Ordnersymbol klicken. Dadurch werden Ordner erstellt und Sie können diese Elemente einfach anklicken und in Ordner ziehen und dort ablegen. Und du kannst deinen, deinen Outliner organisieren. Ich werde es einfach wieder herausziehen und das hier entfernen. Als nächstes haben wir das Detail-Panel. Und in den Detailfeldern werden einfach Details zum ausgewählten Element im Viewport angezeigt . Wenn ich also diesen Stift hier auswähle, können Sie sehen, ich kann verschiedene Details zu diesem Stift sehen. Ich kann den Standort und die Welt sehen. Ich kann die Drehung sehen, die Skala. Ich kann sehen, welches Static Mesh es verwendet. Ein Gefühl z.B. klicken Sie hier auf dieses Icon. Sie finden es im Inhaltsbrowser. Und ich sehe, es ist dieser. Ich kann sehen, welche Materialien es verwendet. Informationen über die Physik, die Kollision und so weiter. Und es ist für jeden Artikel, den Sie auswählen, anders. Wenn ich also diesen auswähle, kann ich verschiedene Details zu diesem Artikel, verschiedene Details zu diesem Artikel usw. einsehen . Also sehr wichtig, das Detailfenster ist etwas, das Sie ständig in der Engine verwenden. Wenn ich das anklicke, hey, z.B. ich kann die Position dafür festlegen wenn ich einfach hier klicke und ziehe. Anstatt also das Verschiebe-Tool so zu verwenden, kann ich auch einfach auf diese Felder klicken und ziehen , wenn Sie möchten. Also manchmal willst du dich einfach so bewegen und manchmal willst du bestimmte Zahlen. Du kannst also einfach hier klicken und z.B. 1.400 schreiben , die X-Position. Und du kannst sehen, dass es hier rübergegangen ist. Und auch richtig, ich glaube, es sind -1.400. Es wird hier drüben sein. Also -1.400. Du kannst sehen, dass es wieder hierher zurückgegangen ist. Wenn Sie nun bestimmte Zahlen haben, die Sie schreiben möchten, können Sie sie hier schreiben, anstatt zu versuchen, sie hier im Auge zu behalten. Und schließlich haben wir den Content Browser. Normalerweise ist dies nicht verfügbar oder wird nicht angezeigt, wenn Sie Unreal Engine Five zum ersten Mal öffnen . Also kann ich mit der rechten Maustaste klicken und wir können schließen. Und so sieht es normalerweise aus , wenn Sie Unreal Engine five zum ersten Mal öffnen , Sie haben den Inhalt gezeichnet statt des Inhaltsbrowsers. darauf klicken, können Sie sehen, dass Sie dieselbe Registerkarte sehen, die wir zuvor gesehen haben, aber die Inhaltszeile verschwindet jedes Mal, wenn Sie in dieses Ansichtsfenster klicken. Also wenn ich auf den Inhalt ROA klicke, wenn ich hier etwas anklicken will, siehst du verschwindet und ich finde es etwas nervig, weil ich Unreal Engine four gewohnt bin, wo es ständig läuft. Was Sie also tun können, ist auf diesen Inhalt ROA klicken und im Layout auf Duck zu klicken. Und das wird die ganze Zeit so bleiben . Und sehr, sehr einfach. Der Inhaltsbrowser enthält nur alle Dateien, die Sie für das Spiel haben. Also zB für die Assets sind das eigentlich die Ordner, die ich erstellt habe, um dieses Level zu erreichen. Also zum Beispiel hier bei Artikeln, wir werden das später verwenden um Artikel für das Inventar zu erstellen. Und du kannst es einfach anklicken und in das Level ziehen. Und du kannst sehen, wie sie aussehen. Abgebrochen, doppelklicken Sie darauf und sehen Sie sie auch in diesem Viewer. Das sind also alle Dateien, die Sie haben, das sind alle Animationen. Lassen Sie uns einfach alle löschen, die Ordner hier erstellen. Wir können mit der rechten Maustaste klicken und einen neuen Ordner erstellen. Sie können die Farbe eines Ordners auch ändern , indem Sie darauf klicken, mit der rechten Maustaste klicken und zu Farbe festlegen wechseln. Das ist sehr cool , wenn Sie Ihre Dateien organisieren und sie schnell sehen möchten. Du kannst ihnen einfach Farben geben. Ich werde diesen vorerst löschen. Um Elemente im Inhaltsbrowser hinzuzufügen, können Sie hier mit der rechten Maustaste klicken, oder Sie können auf die Schaltfläche Hinzufügen klicken. Normalerweise klicke ich hier, klicke mit der rechten Maustaste und du kannst Blueprints hinzufügen. Wir werden das oft tun, um unser Inventar zu programmieren. Wir werden die Benutzeroberfläche auch verwenden, um die Benutzeroberfläche für das Inventar zu erstellen. Und du hast z.B. Animationen, du kannst ein neues Level erstellen, auch einen neuen Ordner lesen. Hier können Sie sehen, dass wir viele Dinge schaffen können und es sieht überwältigend aus. Aber Sie werden wahrscheinlich zunächst nicht viele dieser Dinge verwenden . Sie müssen hier also nicht wirklich alles wissen. Konzentrieren Sie sich auf das, was sehr wichtig ist. In diesem Kurs konzentrieren wir uns vorerst nur darauf, ein Inventar zu erstellen. Bei der Erstellung des Inventars werden wir viele dieser Dinge verwenden. Wir werden viele der Blueprints, Blue, Blueprint-Knoten verwenden . Und wir werden die Benutzeroberfläche verwenden. Wir werden die Sounds für Soundeffekte und so weiter verwenden . In diesem Kurs werden Sie also viele dieser Dinge hier lernen. Also mach dir erstmal keine Sorgen und schau dich hier einfach kurz um. In dieser Engine kannst du dich einfach bewegen, auf Dinge klicken, sie bewegen. Nicht wirklich wichtig, wenn du Dinge in diesem Level zerstörst . Und manchmal, wenn es dir sagt, dass du eine Beleuchtung hast, die repariert werden muss , kannst du darauf klicken, alle Level bauen und dann wird automatisch die gesamte Beleuchtung für dich gebaut. Jetzt kann es einige Zeit dauern, wenn Ihr Computer sehr langsam ist, aber Sie können den Fortschritt hier unten sehen. Und wenn es mit dem Bau der Beleuchtung fertig ist, können Sie weitermachen und es ausschalten. Und lassen Sie uns weitermachen und auf Datei und Alle speichern klicken. Und lassen Sie uns mit der nächsten Lektion fortfahren. 4. 1.04 Was das Projekt bereits enthält: Bevor wir beginnen, schauen wir uns an, was dieses Projekt bereits enthält. Jetzt habe ich dieses schnelle Spiel für dich entworfen und dieses schnelle Spiel für es enthält nicht wirklich viel, aber wir brauchten etwas, um mit der Programmierung des Inventars zu beginnen. Also hier im Assets-Ordner habe ich einige Elemente. Diese Gegenstände werden wir verwenden, um Gegenstände herzustellen, bei denen wir unser Inventar verlieren und sie in unser Inventar legen können unser Inventar verlieren und . Jetzt löschen wir es vorerst. Ich werde dir beibringen, wie man Gegenstände herstellt und sie auch aussieht. Und der Spieler, wir haben die verschiedenen Animationen und du kannst sehen, wenn du für das Spiel auf Play klickst, und wir haben bereits ein Animations-Blueprint-Set. Und für das Terrain habe ich einfach die Texturen für dieses Terrain. Ich habe auch Soundeffekte für euch eingebaut, die wir verwenden können, wenn wir Gegenstände anspielen, das Inventar öffnen und so weiter. Und in den Bauplänen sehr einfach. Ich habe einen Spielmodus erstellt. Der Modus ist leer, und normalerweise wird diese Ansicht angezeigt, wenn Sie nichts in der Blueprint-Klasse haben . Sie müssen also hier klicken, um den vollständigen Blueprint-Editor zu öffnen. Und so sieht es aus. Leer, ich habe wirklich nichts angefasst. Ich habe nur den Spielercontroller und die Standardbauerklasse genommen und den Spielercontroller geöffnet, ist ebenfalls leer. Wir haben den Spieler, den Spieler hier anstelle des Spielers. Sehr einfach. Ich habe gerade das neue Bewegungssystem für diesen Spieler hinzugefügt. Also einfach hin und her gehen und uns mit der Maus umschauen. Also ist hier nicht wirklich etwas Verrücktes los. Dann haben wir den Animationsentwurf für die Animation für den Spieler. Und wieder haben wir hier die Bewegung für vorwärts, rückwärts, links und rechts. Und wir haben die Karten. Dies ist die Karte, auf der wir uns gerade befinden. Wir haben einige Marketplace-Artikel. Ich benutze dieses fantastische Village Pack. Sie können es kostenlos auf dem Marktplatz finden. Und das wird nur verwendet , um dieses Level zu gestalten. Wir haben den Goods Sky, und das ist dieser Typ hier oben. Ich habe nur Nebel hinzugefügt, damit wir ihn nicht wirklich sehen können , nur um dieses Level etwas interessanter zu machen. Und dann haben wir diese Charaktere. Sie finden sie auch auf dem Marktplatz. Sehr, sehr cooles Zeug. Ich verwende sie manchmal auch , um einige meiner anderen Spiele zu prototypisieren. Also, wenn ich ein Shooter-Spiel mache und so weiter, dann lass uns dieses vorerst löschen. Also das ist es, was ich hier drinnen habe. Und die letzte ist die Benutzeroberfläche. Wir werden dies verwenden, um unser Inventar zu gestalten. Wir haben hier ein paar Knöpfe. Übrigens, wenn Sie eine sehr große Ansicht wie diese haben, habe ich eine Gabel, eine Nebenansicht, also wird eine sehr große Ansicht wie diese angezeigt. Sie können auf Einstellungen und Größe der Miniaturansicht klicken. Ich kann es klein machen, z.B. und es wird so aussehen. Ich werde das Medium nur verwenden damit Sie es für diesen Kurs besser sehen können. Ich habe hier auch eine Schrift hinzugefügt, sodass Sie diese für die Benutzeroberfläche verwenden können. Ich habe ein paar Icons, die wir verwenden können , wenn wir die Banane eluieren, zum Beispiel können wir dieses Symbol dem Inventar hinzufügen. Und dann haben wir die Bilder, die im Grunde der Inventarplatz sind. Das sind also alle Artikel. Sehr einfaches Spiel, wir können einfach herumlaufen, das ist das einzige, was wir momentan tun können. Und sieh dich um. Und du kannst dir vorstellen, ob du dieses Spiel von einem Freund oder jemandem hast , den du auf Reddit oder woanders gefunden hast . Und er bittet dich nur, ein Inventar in sein Spiel aufzunehmen. Das werden wir also tun. 5. 2.01 Einführung in die Widget: Bevor wir mit dem Entwerfen der Benutzeroberfläche beginnen, schauen wir uns an, was ein Widget-Blueprint ist. Gehen wir also zum UI-Ordner. Klicken wir hier mit der rechten Maustaste. Und lass uns zur Benutzeroberfläche gehen. Dies sind alle Elemente der Benutzeroberfläche. Hier können wir den Widget-Blueprint auswählen. Lass uns hier eins erstellen. Wählen Sie Benutzer-Widgets aus und nennen Sie es Normalerweise nenne ich es wb oder würden Sie Blueprint als Präfix verwenden? Und dann nennen wir das eine Hauptperson. Also die Haupt-Benutzeroberfläche, diese wird als unsere Haupt-Benutzeroberfläche angezeigt. Später. Doppelklicken wir darauf. Und hier sehen Sie, wie ein Widget-Blueprint aussieht. Also Widget Blueprint, Sie können die Benutzeroberfläche hier gestalten. Sie haben einen Designer und dann haben Sie ein Diagramm. Im Designer entwirfst du also die Benutzeroberfläche. Und in der Grafik programmieren Sie die Funktionalität der Benutzeroberfläche, die Sie entworfen haben. Darin siehst du , dass du ein Pellet hast und anstelle der Palette kannst du deinem Blueprint verschiedene Dinge hinzufügen, z. B. kannst du einen Button hinzufügen. Sie können es entweder hier anklicken und herausziehen. Moment können Sie sehen, dass die Schaltfläche riesig ist, und das liegt daran, dass ich auf Control Sets klicken werde . Und das liegt daran, dass wir normalerweise zunächst eine Leinwand hinzufügen. Wenn Sie also nach Canvas suchen und dieses hinzufügen wir tatsächlich, bevor wir etwas Canvas hinzufügen, können Sie es entweder hier hineinziehen oder Sie können es hier klicken und ziehen und dort ablegen. Wenn ich also diesen hier einfach lösche, kann ich ihn stattdessen anklicken und hierher ziehen. Sie können sie also entweder hierher ziehen, hierher. Gehen wir also zurück und nehmen wir die Schaltfläche, z. B. können Sie sie zur Leinwand hinzufügen, oder Sie können die Schaltfläche erneut hinzufügen, Sie sie hier in der Hierarchie nach unten ziehen , ungefähr so. Und Sie können hier sehen, dass es zusammengezählt wurde. Und du kannst jederzeit darauf klicken und es auf der Leinwand ziehen. Sie können die Position auch ändern, genau wie zuvor, wir haben ein Detailfenster. Denken Sie daran, dass ich Ihnen bereits gesagt habe, Sie ein Detailfenster haben, wenn Sie in Ihrem Viewport auf Elemente klicken . Das haben Sie auch im Widget-Blueprint. Sie haben also Details zu dieser Schaltfläche. Sie können die Position sehen. Sie können die Position auch hier ändern. Oder du kannst es herumschleppen. Wenn du es ziehen willst, möchtest du vielleicht etwas eingeben, eine bestimmte Zahl, z. B. wir können 1800er schreiben und vielleicht gefällt uns das. Sie können auch darauf klicken und die Größe ändern. Schon wieder. Sie können die Größe auch hier ändern, wenn Sie möchten. Alle Details für die Schaltfläche. Auch hier gilt: Wenn Sie einfach weitere Elemente hinzufügen, können Sie sehen, dass sie unterschiedliche Details haben. Also wenn ich z.B. den Text hier nehme, kannst du im Text sehen, dass ich die Farbe des Textes bearbeiten kann. Ich kann die Schrift bearbeiten. Also, welche Schrift werde ich verwenden? Ich habe eine Schrift für dich beigefügt. Denken Sie daran, dass ich im UI-Ordner Schriftarten diese Schriftart für Sie eingefügt habe. Sie können es also auch hier in der Schriftfamilie auswählen . Hier unten haben wir eine UI-Animation. Wir könnten uns darauf einlassen. Ich bin mir nicht sicher, aber momentan nicht wirklich wichtig. Also werde ich hier mit der rechten Maustaste klicken und auf Schließen klicken, weil wir es nicht wirklich brauchen. Und das Letzte , was hier wichtig ist, ist, dass Sie hier oben auf Kompilieren klicken können. Es heißt, Dirty muss neu kompiliert werden. Und das überprüft nur , ob Sie Fehler in Ihrem Code haben. Und im Moment haben wir keinen wirklichen Code, also wird es hier sauber. Aber wenn wir das tun würden, würde es Sie warnen und Ihnen sagen , dass etwas nicht stimmt. Sie können also versuchen, hier herumzuspielen und ein Bild aufzunehmen, z. B. hier platzieren, Sie können es neu skalieren. Sie können sehen, welche Details Sie für ein Bild haben, z. B. den Pinsel. Sie können auf dem Bild hören, Sie können das Bild ändern, z. B. diesen Burger hier. Und jetzt können Sie sehen, dass Sie die Größe ändern können. Und Sie können die Größe hier auch ändern. Wenn Sie auf diese kleinen Pfeile klicken, bedeutet dies nur, dass Sie auf den Standardwert zurücksetzen wollten . Also klicke darauf. Und der Standardwert ist 15150. Und du kannst sehen, wenn ich die Größe hier ändere, wird das nicht wirklich beeinträchtigt. Und das liegt daran, dass Sie das gesamte Bild auf diese Weise neu skalieren. Sie müssen auf Zum Inhalt hinzufügen klicken, wenn Sie möchten, dass dies hier in Kraft tritt . Wenn wir uns also unseren Standardwert ansehen, ist dies die Standardwertgröße für diesen Burger. Ja, und das war's. Das ist sehr, sehr einfach. Also in der nächsten Lektion wird der Designer die Benutzeroberfläche entwerfen. Und in der Grafik codieren wir die Funktionalität der Benutzeroberfläche. Aber konzentrieren wir uns vorerst auf die Gestaltung der Benutzeroberfläche. Bevor wir diese Lektion beenden, werde ich all diese Dinge löschen , einschließlich der Leinwand. Lass uns kompilieren, lass uns speichern, alles hier speichern und es schließen. Und lassen Sie uns mit der nächsten Lektion fortfahren. 6. 2.02 Entwerfen der Main: Ordnung, wir sind jetzt bereit, die Haupt-Benutzeroberfläche zu entwerfen , falls Sie die Anweisungen in der vorherigen Lektion nicht befolgt haben . Mach weiter. Im UI-Ordner können Sie mit der rechten Maustaste auf die Benutzeroberfläche klicken und einen Widget-Blueprint erstellen. Und das ist der Widget-Blueprint für die Haupt-UI, den wir bereits erstellt haben. Doppelklicken wir darauf. Und bevor wir anfangen, möchte ich Ihnen zeigen, was wir machen werden. Es ist also immer schön zu sehen, was wir machen werden, bevor Sie es machen. Damit wir es visualisieren können. Hier im Menü I. Wir werden nur diesen Button haben. Dies ist die Inventarschaltfläche, auf die geklickt werden kann und Sie öffnen das Inventar. So sehr, sehr einfach. Das versuchen wir zu machen. Kehren wir also zu unserer Ansicht hier zurück. Und wie ich dir bereits sagte, müssen wir eine Leinwand hinzufügen, bevor wir etwas hinzufügen. Wenn Sie also hier oben nach dem Canvas-Panel suchen, können Sie es in die Hierarchie hier unten ziehen. Und jetzt haben wir das Canvas-Panel für die Schaltfläche hinzugefügt , für die Inventarschaltfläche. Offensichtlich brauchen wir die Button-UI hier, damit wir sie hierher ziehen können. Aber wie Sie bereits gesehen haben, benötigen wir ein Symbol oben auf der Schaltfläche. Und deshalb verwenden wir ein sogenanntes Overlay. Wenn du nach Overlay suchst oder du findest sie auch hier unten. Sie können also auf diese Pfeile klicken, um Elemente zu finden , die Sie zu Ihrem Canvas hinzufügen können. Das ist also das Overlay, das wir jetzt hinzufügen möchten, oder Sie können hier oben danach suchen. Wenn Sie also all diese Dinge nicht wissen, ist es vielleicht schwierig zu verstehen, aber tun Sie es einfach ein, zweimal oder dreimal. Und es ist sehr einfach, weil du das die ganze Zeit machst. Da wir also eine Schaltfläche und ein Symbol darüber benötigen, benötigen wir ein sogenanntes Overlay. Lassen Sie mich diesen Button also erneut löschen. Und ich werde dieses Overlay auf die Leinwand ziehen. Und normalerweise werden sie hier zusammengezählt. Und für diesen fügen wir jetzt eine Schaltfläche hinzu. Und dann fügen wir ein Bild hinzu. Dies ist das Symbol, das oben auf der Schaltfläche angezeigt wird. Lassen Sie mich es jetzt hierher ziehen, damit wir sehen können, wie es aussieht. Also klicken wir jetzt auf die Schaltfläche und lassen Sie uns sie entwerfen. Wenn du willst. Sie können das Bild vorerst deaktivieren. Sie können also hier auf dieses Auge klicken. Dadurch wird das Bild vorerst nur hervorgehoben. Lass uns hier auf die Schaltfläche und den Stil klicken, lass uns ändern, wie er aussieht. Ich habe für Sie am Ende die Schaltflächen in den UI-Buttons-Ordner aufgenommen . Ich habe Knöpfe für dich beigefügt, die wir verwenden können. Im Normalen. Lass uns weitermachen und das Bild auf diese eine Schaltfläche ändern, die Quadratwurzel blau. Für die Größe können wir auf diesen Pfeil klicken, um die Größe an die normale Größe anzupassen. Im Moment kannst du sehen, dass ich gezoomt bin plus sieben. Das ist also sehr wichtig zu wissen. Ich habe gezoomt plus sieben, also wird es nicht so aussehen, wenn ich das Spiel spiele. Es wird so aussehen. Also, wenn ich rauszoome , wird es so aussehen. Also eins zu eins hier. Wenn Sie nun eine Schaltfläche erstellen, ist die Farbe normalerweise aus irgendeinem Grund grau. Ich weiß nicht warum. Klicken Sie also hier auf diesen Farbton und ändern wir ihn auf Weiß. Die wahre Farbe erscheint also hier. Und anstatt eine runde Schachtel um Dollar zu machen, bekommst du einen komischen Vorteil um deinen Knopf und das will ich nicht. Ich möchte hierher gehen, stattdessen auf Bucks klicken. Und Sie können sehen, wenn Sie das Bild neu skalieren, es sieht sehr seltsam aus. Wenn Sie jedoch ein Feld verwenden und den Rand auf 0,5 setzen, können Sie es tatsächlich neu skalieren ohne die Details dieser Schaltfläche zu verlieren. Sie können also sehen, dass ich es neu skalieren kann. Und es sieht gut aus. Wenn Sie den Rand von 0,5 nicht verwendet haben, sieht es so aus. Also Marge 0,5 und es sieht gut aus. Okay, also wenn wir hier darauf klicken, gehen wir zum Hubbard und wählen wir die Schaltfläche aus, über der das blaue Quadrat schwebt. Und für diesen, was man eigentlich sehr schnell machen kann. Ich verwende das, wenn ich mein Spiel entwickle. Ich kann hier die Maustaste verschieben und mit der rechten Maustaste klicken, oder Sie können einfach mit der rechten Maustaste klicken und auf Kopieren klicken. Normalerweise drücke ich einfach Shift und rechte Maustaste. Also bei gedrückter rechter Maustaste das kopieren. Und Sie können die linke Maustaste bewegen, um es hier oben einzufügen. Und hier oben können Sie sehen, dass es sehr schnell geht. Sie haben also alle Informationen. Und dann denk einfach daran, diese beiden umzustellen. Hier. Es sind noch 12 übrig. Denken Sie auch hier daran, die Größe zu ändern. Ich denke, für diesen werde ich etwa 90 verwenden. Dieser ist genauso standardmäßig, also standardmäßig auf 68 und dieser auf 190 eingestellt. Ich klicke erneut mit der rechten Maustaste. Ich halte die Umschalttaste gedrückt und klicke erneut mit der rechten Maustaste hier, um es zu kopieren, und halte die Umschalttaste gedrückt und klicke mit der linken Maustaste, um es über diese Bildgrößen einzufügen. Jetzt wundern Sie sich vielleicht, warum Sie es nicht hier im x skalieren. Und das liegt daran, dass es automatisch ein bisschen skaliert , wenn wir das Bild hinzufügen. Lassen Sie uns vorerst einfach kompilieren und verlassen Sie diese Schaltfläche. Gehen wir zum Bild. Klicken Sie also auf das Bild und klicken Sie auf dieses Symbol , um das Bild anzusehen. Und für das Bild müssen wir das Rucksacksymbol finden. Also das hier, oder du kannst hier oben danach suchen, indem du das Rucksacksymbol auswählst. Und als ich die Benutzeroberfläche entworfen habe, habe ich festgestellt, dass 100 mal 100 dafür eine großartige Größe ist. Ich ändere das einfach auf 100 mal 100 und die Bildgröße. Sie können sehen, wenn ich auf diese Standardschaltfläche klicke, die Standardeinstellung ist 150. Ich werde es auf 100 mal 100 herunterskalieren. Und anstatt dieses Overlay so zu erstellen, anstatt es so neu zu skalieren, klicke ich auf An Inhalt anpassen. Dieses Overlay passt sich jetzt also an den Inhalt an, der sich darin befindet. Also diese Schaltfläche hier, anstatt sie hier oben in dieser Ecke zu haben, werde ich sie horizontal ausrichten. Es wird also das gesamte Overlay füllen. Diese Schaltfläche füllt jetzt das gesamte Overlay aus. Das ist es, was es bedeutet. Und ich werde es hier unten vertikal ausrichten . Es ist also am unteren Rand des Bildes. Ich richte es einfach an der Mitte des Buttons aus. Klicken Sie auf das Bild, klicken Sie auf Mittelausrichtung für die Vertikale und die Horizontale. Es ist also genau in der Mitte dieses Overlays. Jetzt müssen wir dieses Bild nach oben verschieben. Sie können entweder die Übersetzung hier unten in der Transformation verwenden , oder ich verwende einfach das Padding hier oben. Für die Polsterung an der Unterseite bedeutet das also, dass Sie das Bild von unten nach oben schieben. Also werde ich es um 15 Pixel erhöhen. Und du kannst sehen, dass ich das Bild hier hochschiebe und es sieht gerade großartig aus. Ich schiebe es um den 12. nach links und um den 12. nach rechts. Deshalb geben wir hier mehr Platz für diesen Button, damit es jetzt viel besser aussieht. Nun, das letzte, was wir tun müssen, also anstatt diesen Knopf hier in der Mitte zu haben, können wir ihn hier unten platzieren. Was Sie hier tun können, ist zu sehen, wenn Sie die Position hier auf 00 setzen , Sie sehen, dass es an dieser Ecke hier oben einrastet, aber ich möchte, dass es hier unten auf meinem Bildschirm ist. Ich möchte nicht, dass meine Buttons hier oben erscheinen. Ich will, dass mein Knopf hier unten ist. Was Sie hier tun können, ist, den Ankerpunkt zu ändern. Wenn Sie also auf Ihr Overlay klicken, haben Sie etwas, das Anker genannt wird. Klicken Sie hier. Und Sie können den Ankerpunkt auf hier unten ändern. Der Ankerpunkt bedeutet, nehmen wir an, Sie haben diesen Button hier so nach unten gezogen, und es sieht gut aus. Und du änderst den Ankerpunkt nicht. Das bedeutet also, wenn dein Spielfenster kleiner wird. Also lass uns das hier nehmen. Und nehmen wir an, der Button ist da. Wenn dein Spielfenster so kleiner wird, wenn jemand die Größe deines Spiels ändert, fliegt die Schaltfläche nach oben in diese Ecke. Wenn Ihr Bildschirm also so klein ist, befindet sich die Schaltfläche tatsächlich hier oben und nicht hier unten. Es sieht also nicht richtig aus. Und das ist es, was Verankerung bedeutet. Du sagst dem Spiel nur wo sich dein Button ursprünglich befindet. Ich werde es hier unten verankern anstatt eine Position auf 00 zu setzen. Sie können sehen, dass es jetzt vom Bildschirm entfernt ist. Und um es innerhalb des Bildschirms zu platzieren, müssen Sie das sogenannte Alignment verwenden. Und du kannst sehen, dass es entweder Null oder Eins ist. Du kannst sehen, ob ich hier eins schreibe, 0,5, es ist die Mitte. Das ist das x, das ist das Y. Und 0,2 und so weiter. Damit du sehen kannst, ob ich einen schreibe, schiebe ich ihn hier ein. Und nochmal, Ausrichtung für das Y, du musst es auch auf eins setzen, um es in dieses Fenster zu schieben in dieses Fenster damit du mit der Ausrichtung herumspielen kannst. Normalerweise verwenden wir 00,5, um es in die Mitte oder eins zu legen. Wir haben es so hierher gestellt. Okay, also anstatt es direkt hier auf dem Bildschirm zu haben, möchte ich ihm etwas mehr Platz geben. Also klicke ich auf die Overlay-Position für x -35 und positioniere für y -35. Jetzt haben wir hier an der Seite etwas mehr Platz, also sind die Muttern hier direkt am Bildschirm festgeklemmt. In Ordnung, lass uns kompilieren. Und das Letzte, was Sie tun können, ist eine sehr gute Übung. Sie können sehen, wenn Sie zur Grafik gehen, Sie können sehen, dass sie Schaltfläche und Bild heißt. Dies sind die Variablen , die erstellt wurden , weil Sie diese Benutzeroberfläche hier entworfen haben. Und Sie können sehen, dass dies die Namen für sie sind. Sie erscheinen auch als Variablen in Ihrem Code. Es ist jedoch eine sehr schlechte Praxis, sie so zu belassen denn wenn Sie mehrere solche Schaltflächen haben, wissen Sie z. B. nicht wirklich, welcher welcher ist. Wenn du zum Beispiel einen Button für Inventar, einen Button für deine Fähigkeiten, Statistiken und was auch immer hast, weißt du nicht wirklich, was es ist, wenn sie so heißen. Lassen Sie mich also alle löschen. Übrigens, wenn Sie wissen möchten, wie ich es dupliziert habe, können Sie einfach mit der rechten Maustaste klicken und Duplizieren klicken oder auf Control D Okay, lassen Sie uns den Namen hier ändern. Sie können auf Ihrer Tastatur auf F2 klicken, indem Sie auf dieses aussehende F2 klicken. Und ich nenne es BTN für Button. Und nennen wir es Inventar. Gleiche gilt für das Bild, das Bildinventar und für das Overlay. Ove für Overlay und nenne es Inventar. Okay, jetzt sind wir mit der Haupt-UI fertig. Ich werde bei den anderen Widget-Blueprints etwas schneller vorgehen. Aber jetzt kennst du die Grundlagen und weißt , wie man etwas sehr Einfaches erstellt. Lassen Sie uns alles speichern, das schließen und mit der nächsten Lektion fortfahren. 7. 2.03 Entwirf die Schaltflächen für die Inventory: Lassen Sie uns nun die Schaltfläche für die Inventarkategorie hier im UI-Ordner entwerfen . Lassen Sie uns erneut mit der rechten Maustaste auf die Benutzeroberfläche klicken. Erstellen Sie einen neuen Widget-Blueprint. Verwenden Sie das Benutzer-Widget oder wählen Sie das Benutzer-Widget aus. Und nennen wir das eine Inventarkategorie, so. Lassen Sie uns jetzt hier hineingehen. Und denken Sie wie zuvor daran, dass wir eine Leinwand hinzufügen müssen bevor wir hier etwas tun. Ziehen wir also dieses Leinwand-Panel und bearbeiten es. Und jetzt können wir mit der Gestaltung der Kategorie beginnen. Also für die Kategorie möchte ich Ihnen noch einmal zeigen, was wir tun werden. Wir werden das machen. Wir werden diesen Button hier entwerfen. Dieses Symbol wird je nachdem, welche Kategorie wir haben, geändert , aber so sieht es aus. Sehr, sehr einfach. Gehen wir noch einmal hierher zurück. Fügen wir ein Overlay hinzu. Genau wie zuvor benötigen wir eine Schaltfläche mit einem Symbol darüber. Und ich füge einfach ein Overlay in dieses ein. Und ich werde dir gleich zeigen, warum. Es ist gerade ein bisschen verwirrend. Suchen wir also erneut nach dem Button und fügen ihn hier zu diesem Overlay hinzu. Und lassen Sie uns nach einem Bild suchen und es dem Overlay hinzufügen. Genau wie zuvor. Das Besondere ist, dass wir nur dieses Overlay hier oben haben und ich zeige Ihnen, warum. Für die Kategorieschaltflächen benötigen wir also nicht wirklich die gesamte Leinwand, genau wie wir es für die Haupt-Benutzeroberfläche getan haben. Denkt also daran, dass ich für das Menü diese ganze Leinwand verwendet habe und wir fügen diesen Button hier unten hinzu, wer das Menü oder die Haupt-UI spielt. Sie können sich also vorstellen, wenn Sie das Spiel spielen würden, der Button ist hier unten, aber in welcher Kategorie wir brauchen nicht wirklich den ganzen Canvas. Wir können also hier auf die Leinwand klicken oder einfach hier nach oben gehen und den Füllbildschirm auswählen und diesen gewünschten auswählen. Wir brauchen nicht wirklich den ganzen Raum. Wir brauchen nur das, was wir hier unten entworfen haben. Wenn Sie also erneut auf die Schaltfläche klicken, ändern wir diese Einstellungen. Sie können jedoch zur Hauptoberfläche gehen , wenn Sie auf diese Schaltfläche klicken möchten . Halten Sie erneut die Umschalttaste gedrückt und klicken Sie mit der rechten Maustaste, um zu kopieren. Halten Sie die Umschalttaste gedrückt und klicken Sie mit der linken Maustaste, um einzufügen. Also füge ich einfach diese Informationen ein. Und für diese Größe hier werde ich es einfach eins zu eins machen. Sehen Sie bei ein-zwanzig, das ist die Größe, die ich haben möchte. Und Sie können hier sehen, dass es sich im Y nicht wirklich ändert. Das ist, denken Sie daran, bevor ich Ihnen gesagt habe, dass Sie auf dieses Overlay klicken und auf An Inhalt anpassen klicken können , also die Größe an die Größe des Inhalts anpassen. Und für diesen mache ich einfach 12120. Achte einfach nochmal auf den Zoom hier. So sieht es eins nach dem anderen aus. So werden wir aussehen, nicht so. Okay, lassen Sie uns weitermachen und die hier eingefügte Bildgröße kopieren. Und wenn ich auf dieses Bild klicke, möchte ich es in der Mitte dieser Schaltfläche ausrichten. Klicken Sie also auf diese zentrierte, horizontale und vertikale Ausrichtung. Und für das Bild werde ich den Rucksack wieder benutzen. Es spielt keine Rolle was Sie hier verwenden, da Sie dieses Bild ändern werden je nachdem, welche Kategorie Sie haben. Später werden wir z. B. eine Kategorie für lebensmitteltaugliche Konsumgüter und eine Kategorie für Waffen erstellen. Je nachdem, um welche Kategorie es sich handelt, werden wir dieses Bild ändern, sodass es nicht wirklich wichtig ist, was Sie hier ausgewählt haben. Ich mache das Bild einfach in der Größe 85, 80. Genau wie zuvor. Denken Sie daran, dass wir das Symbol hier im Menü nach oben gedrückt haben. Also werden wir dasselbe für den Boden tun. Ich schreibe hier einfach sechs. Du kannst es einfach testen. Du kannst 1018 schreiben. Schau, was für dich funktioniert, aber sechs haben für mich funktioniert und für links und rechts, ich werde einfach wieder 12 mal 12 schreiben, einfach so. Also nur für den Fall, dass der Button irgendwie sehr klein wird, habe ich hier noch etwas Platz. Also ich denke, das war es. Also nehmen wir es einfach, denn wir haben alles und alles sieht gut aus. Lass uns alles kompilieren und speichern. Das Letzte, was Sie ändern müssen, bevor wir es vergessen, ist hier in der Sichtbarkeit, der Sichtbarkeit. Was das ist. Wenn du nun das Spiel spielst und auf diese Schaltfläche hinter diesem Bild klicken möchtest, blockiert dieses Bild deine Schaltfläche und du wirst sie nicht drücken können. Dies liegt daran, dass die Sichtbarkeit für dieses Bild auf Sichtbar gesetzt ist . Worauf Sie es also ändern müssen, ist nicht testbar. Was hier in der Tooltip-Beschreibung steht, ist sichtbar aber nicht trefferbar, was bedeutet, dass mit dem Cursor nicht interagiert werden kann. Und das ist was wir wollen, ist nur ein Bild, um euch zu zeigen, dass dies der Button für die Kategorie ist , oder in diesem Fall für das Inventar hier im Menü I. Also müssen wir hier dasselbe tun. Klicken Sie also auf die Haupt-Benutzeroberfläche und ändern Sie die Teilbarkeit auf Non-Hit Festival. Jetzt können wir uns durch dieses Bild klicken und auf die Schaltfläche klicken, obwohl sich dieses Bild davor befindet. Also lasst uns kompilieren. Denken Sie daran, alles zu speichern. Genau wie zuvor. Lass uns die Namen hier ändern, Button, Kategorie und Bildkategorie und Overlay hier, Kategorie. Okay, der Grund, warum ich dieses Overlay hier hinzugefügt habe, ist zunächst, den Ankerpunkt in die Mitte zu ändern. Also ändere ich den Ankerpunkt in die Mitte. Und denken Sie daran, wenn Sie Nullen und Null für die Position schreiben , können Sie sehen, dass die Anker so aussehen. Wenn Sie sich an die vorherige Lektion erinnern, müssen Sie die Ausrichtung ändern. Also habe ich dir gesagt, bevor wir entweder 0,05 oder 1,0 verwenden. 0,5 ist die richtige , wenn wir wollen, dass es in der Mitte bleibt. Also 0,50, 0,5, und du kannst meine Position 00 sehen. Jetzt ist der Button hier in der Mitte für dieses Overlay. Ich habe zwei davon erstellt weil ich jetzt hier im zweiten Overlay dieses Padding verwenden kann, wenn du keine Overlays brauchst. Stellen Sie sich vor, Sie haben nur diesen, Sie haben wahrscheinlich keine Polsterung. Wenn das nicht wie ein Kind ist. Sie können sehen, dass dieses Overlay ein untergeordnetes Element dieses Overlays ist. Und für Kinder können wir diese Polsterung hier verwenden. Und wir stellen diese Polsterung her. Schreiben wir vorerst einfach fünf, ich werde fünf schreiben. Und das ergibt nur fünf links, oben, rechts und unten. Der Grund, warum ich das mache, ist später, wenn wir die Kategorien dynamisch erstellen , ein gewisser Abstand zwischen den Kategorien. Stellen Sie sich vor, Sie hätten hier unten fünf Kategorien. Hier gibt es einige Abstände zwischen den Schaltflächen. Wenn Sie den Abstand nicht hätten, würden sie übereinander liegen. Wenn du diese gestrichelten Linien entfernen möchtest, übrigens ein schneller Trick, kannst du einfach hier oben klicken und du kannst sehen, wie es ohne all diese Linien aussieht. Okay, speichern wir alles , was es war, für hier. Schließen wir es , speichern wir alles und fahren wir mit der nächsten Lektion fort. 8. 2.04 Entwirf die Inventory: Lassen Sie uns nun die Inventarplätze entwerfen. Also klicken wir auf die Benutzeroberfläche. wir mit der rechten Maustaste auf die Benutzeroberfläche und erstellen Sie einen Widget-Blueprints wie das Benutzer-Widget. Also das Gleiche wie das, was wir bisher gemacht haben. Nun, dieser hier, Inventarplätze. Das sind also die Felder, an denen die Artikel angezeigt werden , wenn Sie auf diesen Inventarplatz klicken. Genau wie zuvor müssen Sie eine Leinwand haben, bevor wir etwas tun können. Also fügen Sie hier eine Leinwand hinzu und den Füllbildschirm wählen Sie das gewünschte aus, genau wie wir es für die Kategorie getan haben. Also hier können wir jetzt ein Overlay hinzufügen, und ich werde ein weiteres Overlay hinzufügen damit wir etwas Polsterung hinzufügen können, genau wie wir es für die Kategorie getan haben. Und ich füge eine Schaltfläche hinzu, eigentlich nur ein Bild. Wir brauchen hier nicht wirklich einen Button. Ich werde ein Bild in dieses Overlay einfügen. Und dieses Bild wird der Schlamm sein. Also, wenn wir einfach hier runter gehen, haben wir diesen, der Inventar-Slots heißt, oder diesen Inventar-Slot. Ich werde bei der Auslosung das Geld auswählen und den Spielraum auf 0,5 schreiben, damit wir ihn vergrößern können und es nicht komisch aussieht. Wenn Sie es also standardmäßig auf Bild einstellen, können Sie sehen, dass Sie an Qualität verlieren werden. Wir ändern es auf Bachs Schreibweise mit einem Abstand von 0,5, wir können es neu skalieren, ohne an Qualität zu verlieren. Ich werde hier oben auf dieses Overlay klicken und erneut Größe zum Inhalt auswählen. Und für dieses Bild hier, für den Inventarplatz, werde ich es einfach 90 mal 90 in der Größe machen. Es sieht also so aus. Und für die Ausrichtung statt für die Ausrichtung ist das in diesem Fall nicht wirklich wichtig, aber nur damit es sauberer ist, werde ich horizontal und vertikal ausrichten. Also die ganze Sache hier für dieses Overlay, ich möchte, dass es im Mittelpunkt bleibt. Also wieder der Ankerpunkt für den Mittelpunkt, Ausrichtung 0,50, 0,5 und die Größe oder Position auf Null. Um Null. Es bleibt in der Mitte. Und ich gehe wieder hier in das Overlay, polstere es ein wenig. Und genau wie zuvor gebe ich ihm einfach eine Fünferpaarung. Wir haben also Leerzeichen zwischen den Inventarplätzen. Und das wird viel klarer sein, wenn wir das Gesamtinventar tatsächlich erstellen. Und Sie können den Abstand zwischen den Schlitzen sehen. Jetzt müssen wir einen Gegenstand in diesen Inventarplätzen haben. Ich werde diesem Overlay ein weiteres Bild hinzufügen. Ich werde es hier zentrieren. Wählen wir einfach ein zufälliges Symbol aus. Es ist nicht wirklich wichtig. Wir ändern das dynamisch im Spiel. Also wähle ich einfach dieses Symbol aus, lass uns das 160 mal 60 machen. Und wir müssen es nicht wirklich in eine Box verwandeln , weil es nur ein Bild ist, ein Symbol. Und das Letzte, was wir wollen, ist, dass wir Text hier unten haben wollen, wie eine Zahl. Wenn du hast, dass ich mich getroffen habe, muss eine Zahl von fünf angezeigt werden. Suchen wir also hier oben nach Text und ziehen ihn in das Overlay, wie diesen Text. Richten Sie es hier vertikal nach unten und horizontal nach rechts aus, sodass es hier unten ist. Und lass mich einfach eine Zahl schreiben, z.B. 23, nur vorerst als Platzhalter für die Schriftfamilie, ich wähle, mal sehen, vielleicht die fette, die spiegelnde und die fett. Ich nehme die Größe auf 18. Und ich werde es nur kurz skizzieren. also hier klicken, können Sie eine Gliederung erstellen und sehen, wie die Gliederung hier erscheint, wenn Sie 23456 usw. schreiben. Also schreibe vielleicht zwei, und hier für die Umrissfarbe. Klicken Sie also auf die Umrissfarbe und wählen Sie hier einfach eine zufällige Farbe aus. Vielleicht so etwas, etwas, das zum Hintergrund passt. Sie können auch den Farbwähler verwenden. Wählen Sie diese Hintergrundfarbe, klicken Sie hier erneut darauf und kehren Sie zur Konturfarbe zurück und machen Sie sie einfach ein bisschen dunkler, etwa so Das sieht gut aus. Wenn Sie auf Okay klicken, gibt es einen kleinen Effekt, der cool aussieht. Also hier im Schatten, wenn du nur das machst, gib ihm einen kleinen Schatten, z. B. 1,2 im Y. Im Moment erscheint es nicht, weil dein Alpha nicht auf Null gesetzt ist, also setze es auf eins und du kannst sehen, wie die Schatten tatsächlich hinter dem Text erscheinen. Ich setze diesen auf 1.2. Und ein cooler Effekt ist, wenn Sie diese Farbschattenfarbe mit Ihrer Konturfarbe identisch machen , was einen coolen 3D-Effekt ergibt. Also klicken Sie einfach darauf, kopieren Sie die lineare Hexadezimalfarbe, gehen Sie zur Schattenfarbe und fügen Sie sie hier ein. Sie können sehen , dass es diesen 3D-Schatteneffekt gibt , der sehr cool aussieht. Nun zur Position. Sie können sehen, dass es sich hier am Rand befindet. Ich werde einfach, anstatt die Polsterung zu benutzen, einfach hier runter und die Übersetzung, falls ich sie hier unten finden kann. Und beim X schiebe ich es einfach , etwa so. Vielleicht, wenn ich hier einfach auf 11 rauszoome , damit ich sehen kann, wie es tatsächlich aussieht. Vielleicht ist so etwas in Ordnung. Wenn ich nur fünf schreibe, z. B. wenn wir fünf Treffen haben, sieht das so aus. Auch hier können Sie auf diese Schaltfläche klicken, um die Bindestriche zu entfernen , damit Sie sehen können, wie sie aussehen. Und ich finde es sieht cool aus. Also können wir das benutzen. Lass uns kompilieren, alles speichern. Denken Sie auch hier daran, Ihre Artikel umzubenennen. Das sind also Image Inventory Slots. Dieser Artikel ist ein Bildinventarartikel. Und das ist, du kannst es Punkt Eins nennen. Vielleicht kann ich es, anstatt Inventarartikel zu nennen, einfach Artikel wie auch immer nennen. Und für dieses Overlay lasse ich sie einfach in einem nicht wirklich wichtigen Moment sein . Okay. Das war es also. Und denken Sie noch einmal daran, vielleicht müssen wir das ändern, um die Sichtbarkeit so zu ändern, dass sie nicht erneut getestet werden kann, um nicht beeinträchtigt zu werden. Aber ich bin mir im Moment nicht wirklich sicher. Lassen wir es einfach sein und wir können es später ändern. Gehe zu Datei, speichere alles und lass uns mit der nächsten Lektion fortfahren. 9. 2.05 Das Inventar entwerfen: Lassen Sie uns nun das Inventar entwerfen. Was das Inventar angeht, so wird es ungefähr so aussehen. Also haben wir den Inventarplatz entworfen, und das meinte ich mit dem Abstand zwischen den Inventarplätzen. Aus diesem Grund haben wir dem Overlay Polsterung hinzugefügt. Wir haben also einen gewissen Abstand zwischen diesen Inventarplätzen. So wird es also aussehen. Die Kategorien sind hier an der Seite. Also werden wir das entwerfen. Machen wir also weiter und klicken Sie erneut mit der rechten Maustaste auf Benutzeroberfläche, Widget-Blueprint. Nennen wir das eine Inventar. Also fügen wir hier wieder, genau wie zuvor, eine Leinwand hinzu. Und für das Inventar müssen Sie sich vorstellen, was Sie zu tun versuchen. Also für jede Benutzeroberfläche, die Sie versuchen zu tun. Also hier versuchen wir, die Kategorien hier an der Seite zu haben, und dann haben wir das Inventar. Wir brauchen also eine sogenannte horizontale Box. Also müssen die Kategorien neben dem Inventar stehen. Und hier verwenden wir etwas , das als horizontale Box bezeichnet wird. Und Sie können einfach Elemente hinzufügen , um zu sehen, was es tut. Also wenn du einfach nach einem Button suchst, z.B. und du fügst ihn dem horizontalen Feld hinzu. Wenn Sie nur D drücken, um es zu duplizieren, können Sie sehen, welche Elemente horizontal zueinander stehen. Also lasst uns diese Schaltflächen löschen. Das horizontale Feld wird ein vertikales Feld enthalten , in dem die Kategorieschaltflächen vertikal ausgerichtet sind. Und dann werden wir ein Overlay haben, in dem wir unser Inventar haben. Einfach so. Wir haben in der horizontalen Box die vertikalen Bugs für die Kategorien. Benennen wir es vorerst einfach um. Ich lasse vb für Vertical Box und nenne es x Anfragen. Und für das Overlay nennen wir es einfach Inventar wie folgt. Das Inventar-Overlay besteht also aus einem Bild. Wir brauchen den Hintergrund für das Inventar. Wenn Sie also ein Bild hinzufügen und dieses Bild hinzufügen, anstatt eine Größe dafür festzulegen, wird es einfach horizontal und vertikal gefüllt. Sie können sehen, dass es sich nicht horizontal füllt. Und das liegt daran, dass dieses Overlay, das dem Bild übergeordnet ist, auch nicht füllend ist. Also klicken wir hier statt auf Auto, klicken wir auf Füllen und das Ganze wird gefüllt. Was auch immer ich entscheide, um die horizontale Boxgröße um zwei zu ändern , es wird diesen Raum hier füllen. nun zurück zum Bild klicken, ändern wir dieses in die quadratische blaue Schaltfläche. Ich verwende das auch als Hintergrund. Es sieht nett aus. Also jetzt wirklich nur für die Knöpfe und zeichne als Box, fünf am Rand, damit wir nicht an Qualität verlieren. Jetzt haben wir also den Hintergrund für das Inventar. Und jetzt müssen wir hier oben einen Text mit der Aufschrift Inventar haben . Und dann brauchen wir die Inventarfaultiere hier unten. Sie können sich also vorstellen, dass wir eine vertikale Box brauchen. Suchen wir nach einem vertikalen Feld, das dem Overlay hinzugefügt wurde. Lassen Sie mich einfach dieses vertikale Feld ausrichten das Ganze füllen. Und wir brauchen etwas Abstand, denn anstatt an den Rändern dieses Inventars zu zeichnen, werde ich etwas Polsterung hinzufügen. Also vielleicht so etwas wie 30. Wir werden hier nur Dinge hinzufügen, damit wir nicht die Ränder des Hintergrunds für die Oberseite treffen. Und vielleicht schreibe ich einfach 25, einfach so. Und lassen Sie uns jetzt einen Text hinzufügen. In diesem Text wird nur Inventar stehen. Richten wir diesen Text an der Mitte aus. Lass uns hier die Schrift ändern. Und ich wähle einfach diesen extra fett aus. Und lass uns die Größe ändern. Lass es vielleicht einfach so sein. Es ist wirklich nett. Wenn Sie nur diesen Zoom nacheinander haben. Du kannst sehen, wie es aussieht. Lassen wir es für diesen Fall einfach Inventar, Inventar sagen , und wir können etwas Schatten hinzufügen. Ich werde es einfach 23,4 machen, das Alpha 0,3. Jetzt können Sie sehen, dass wir unter diesem Text einen subtilen Schatten haben , wodurch er viel besser und nicht so flach aussieht. Als Nächstes fügen wir die Inventarplätze hinzu. Dazu benötigen wir also ein sogenanntes Grid-Panel. Wenn wir also nur nach Grid suchen, haben wir dieses großartige Panel. Fügen wir es zu diesem vertikalen Feld hier im großen Panel hinzu. Wenn du einfach hier rauf gehst und nach Inventar suchst. Jetzt können Sie die Widget-Blueprints, die Sie erstellt haben, hier sehen . Wir haben also die Kategorie und wir haben die Slots. also diesen Slot nehmen und zum Rasterfeld hinzufügen, können Sie sehen, wie er aussieht. Klicken Sie auf dieses und klicken Sie auf Control D, um es zu duplizieren. Dann ändere die Zeile in eins. Und jetzt können wir sehen , wie es aussieht. Also duplizieren Sie diesen noch einmal und schreiben Sie einfach einen hier in die Spalte. Ich wollte nur sehen, wie es aussieht. Ich kopiere das nochmal, richtig, zwei in der Spalte. Und so sieht es aus. Du kannst es sehen. Offensichtlich sieht es nicht richtig aus. Also müssen wir herausfinden, was falsch ist. Jetzt können wir hier auf dieses Overlay klicken und alles sieht richtig aus. Wir müssen auf dieses horizontale Feld klicken und Sie können sehen, dass es richtig aussieht, wenn ich die Größe ändere. Und anstatt dass sich das links befindet, können wir auf diese mittlere Ausrichtung klicken. Es ist also immer der Geschmack in der Mitte. Diese horizontale Box ist jedoch in Ordnung, sie sieht jetzt gut aus. Und stattdessen können wir auf Zum Inhalt anpassen klicken. Die Inventargröße geht also einfach an, oder der Hintergrund des Inventars. Es wird die gleiche Größe haben wie der Inhalt des Inventars. In Ordnung, also das Gleiche gilt für die Vertical Bucks. Wenn Sie also hier nach Inventar suchen, nehmen Sie diese Kategorie und ziehen Sie sie nach unten in dieses vertikale Feld, das wir zuvor erstellt haben. Ich klicke einfach auf Control D, um es zu kopieren, damit ich sehen kann, wie es aussieht. Sie können es entweder so haben oder Sie können es an der Mitte ausrichten. Also, wenn ich das einfach dupliziere und es einfach größer mache, damit ich sehen kann, wie es aussieht. werden wir übrigens löschen , Diese werden wir übrigens löschen , wir werden sie alle dynamisch hinzufügen, je nachdem welche Gegenstände wir geplündert haben und nicht diesen hier, wir haben nur drei Kategorien. Anstatt es so zu haben, klicke ich auf das vertikale Feld und richte es hier in der Mitte aus und richte es vielleicht horizontal hier nach links aus. Und für das Padding werde ich rechts etwas Polsterung hinzufügen, weil ich etwas mehr Abstand zwischen diesen beiden haben möchte. Klicken Sie auf das vertikale Feld, fügen Sie hinzu, fügen Sie rechts hinzu, vielleicht zehn, so. Und ich finde, es sieht wieder gut aus und wir können auf dieses Inventar klicken. Es gibt wirklich keinen Grund, warum wir es nicht wirklich mit Knöpfen versehen haben. Aber nur für den Fall, dass Sie hier irgendwo eine Schaltfläche hatten, ändern Sie die Sichtbarkeit für den Text auf „Kein Treffer testbar da wir nicht wirklich mit dem Mauszeiger damit interagieren müssen . Okay, jetzt kompilieren und speichern wir alles. Und so wird es tatsächlich aussehen. Wir können also alle diese Inventarplätze löschen. Wir können vorerst alle Kategorien löschen, da wir sie alle dynamisch während des Spiels hinzufügen werden. Was Sie jetzt tun können, ist einfach den Namen all dieser Elemente zu ändern . Es sieht also wirklich gut aus und weißt du was, ist es auch. Tolles Panel. Das sind die Gitter, das Inventar. Einfach so. Lass uns alles umbenennen. Und manchmal sind einige Dinge nicht so wichtig , um den Namen zu ändern, dafür ist das Bildinventar, vielleicht Hintergrundbild oder Hintergrund. Dies ist nur die horizontale Box. Jetzt müssen wir es hier ausrichten. Der Anker ist also, ich werde das Inventar hier unten aufzeichnen. Also auf den Anker klicken und ihn hier unten ausleihen. Und wenn Sie die Position wieder auf Null schreiben, genau wie zuvor, befindet sie sich tatsächlich außerhalb des Bildschirms. Also müssen Sie wie zuvor die Ausrichtung nacheinander anpassen . Und ich werde den Websites etwas mehr Platz geben . Also schreibe ich die Position auf -35 -35. Jetzt haben wir etwas mehr Platz. Das war es also für das Inventar. Speichern wir alles, schließen wir es und fahren wir mit der nächsten Lektion fort. 10. 3.01 Anzeigen der Main: Es ist jetzt an der Zeit, die Haupt-Benutzeroberfläche auf dem Bildschirm anzuzeigen. Dies ist die Haupt-Benutzeroberfläche, die wir erstellt haben. Und es besteht nur aus einer Schaltfläche , der Schaltfläche zum Öffnen des Inventars. Jetzt wollen wir normalerweise mit der Benutzeroberfläche innerhalb des Player-Controllers arbeiten. Wir haben bereits einen Player-Controller in diesem Spiel. Wenn Sie zu Blueprints gehen, haben wir diesen, der PC heißt. Das ist der Player-Controller. Doppelklicken wir darauf und diese Ansicht wird geöffnet, wenn der Blueprint-Verlust leer ist. Also müssen wir auf Öffnen klicken vollständigen Blueprint-Editor öffnen. Also ich habe hier drinnen nichts gemacht, obwohl es völlig leer und neu ist. Und was wir hier tun können ist vorerst alles zu löschen. Aber wir versuchen, dieses zu verwenden, das heißt, wenn Sie in diesem Editor mit der rechten Maustaste hier klicken und schreiben erstellt Widgets. Denken Sie daran, dass wir mit Widget-Blueprints arbeiten. Also das haben wir hier erstellt, einen Widget-Blueprint. Wenn Sie also einfach hier klicken, rechts, erstellt Widgets, Sie finden diesen Knoten hier. Diese Funktion hier wird unser Widget erstellen. Wählen wir also aus, was wir erstellen möchten. Wir wollen die Haupt-UI erstellen, diese, WB Main. Lass uns darauf klicken. Und jetzt klicken wir mit der rechten Maustaste darauf und stufen dies zu einer Variablen hoch, die ich schreibe . Ich möchte meine Benutzeroberfläche in Variablen umwandeln, werde dies zu einer Variablen hochstufen. Und nennen wir es einfach, es wäre nicht wieder Main. Okay, jetzt haben wir es und um es auf dem Bildschirm anzuzeigen, können Sie jetzt auf Kompilieren klicken. Normalerweise mache ich das, wenn du mich das die ganze Zeit machen siehst. Es prüft nur, ob Sie irgendwelche Fehler in Ihrem Code haben. Wenn es das tut, gibt es dir ein Ticket, was bedeutet, dass es sauber ist. Bisher ist also alles in Ordnung. Okay, was wir hier tun können, ist aus dieser Variablen ziehen. Und wenn Sie keine Variable erstellt haben, können Sie stattdessen einfach von hier aus ziehen. Ziehen Sie also von hier aus und sagen Sie Zu Viewport hinzufügen. Das zu tun. Okay, jetzt haben wir das Hinzufügen zum Viewport gemacht. Und wenn Sie auf Jetzt spielen klicken, wenn Sie die Baupläne bereits kennen, wird dies nicht passieren. Wenn du also auf Play klickst und siehst, passiert wirklich nichts. Nichts geht über keinen Button auf unserem Bildschirm, oder? Jetzt. Wenn Sie bereits Blueprints kennen, wissen Sie, dass wir ein Ereignis benötigen, um den Code auszuführen. In Blueprint benötigen Sie also immer ein Ereignis, um den Code auszuführen. Sie können Code ohne Ereignisse nicht ausführen. Wenn Sie also hier mit der rechten Maustaste klicken und nach Begin Play suchen, haben wir ein sogenanntes Schweine-kann-Play-Event. Klicken Sie auf diesen. Wenn Sie andere Ereignisse sehen möchten, können Sie jederzeit mit der rechten Maustaste klicken und suchen. Sie können einfach nach Ereignissen suchen und alle Ereignisse sehen , aus denen Sie wählen können. ZB ist kein zerstörtes Ereignis bei einem Tick, das 60 Mal pro Sekunde ausgeführt wird. Und vielleicht jeder Schaden , der verwendet wird, wenn die Schicht beschädigt wurde und so weiter. Also lass uns das vorerst löschen. Warum brauchen wir jetzt ein sehr einfaches namens Begin Play. Dieses Ereignis zeigt also nur, was passiert, wenn Sie anfangen, das Spiel zu spielen. Und lass es uns hier verbinden. Okay? Wenn wir also anfangen, das Spiel zu spielen, möchten wir dieses Widget erstellen und es dem Viewport hinzufügen. Aber lasst uns kompilieren, lasst uns alles speichern, was sie spielen können. Und jetzt können Sie sehen dass die Schaltfläche hier auf dem Bildschirm erscheint. Okay? Also funktioniert alles. Und wenn ich diesen Punkt vorerst minimiere, auf diese drei Punkte klicke, Anzahl der Spieler, ändere ich ihn auf zwei. Und für den Netzmodus klicke ich vorerst einfach auf Play as Listened Server. Ich klicke auf Play. Und es ist tatsächlich auf meinem zweiten Monitor, der hier ist. Jetzt haben wir also zwei Spieler. Und du kannst sehen, dass beide diesen Button haben. Okay, nett. Und jetzt kannst du sehen, dass wir hier einen, einen Bug haben. Und es heißt, X versucht nicht, die Eigenschaft zu lesen, die WB erstellt hat, und das ist diese. Es weiß nicht, was das wirklich ist. Das, was x ist, bedeutet nicht, dass diese Variable leer ist. Ich weiß nicht, was es ist. Und das liegt daran, dass wir im Mehrspielermodus arbeiten. Das kannst du nicht tun. Das ist gut für Einzelspieler, aber für Mehrspieler kannst du das nicht direkt tun. Im Mehrspielermodus haben wir etwas, das als Client bezeichnet wird, und wir haben etwas, das als Server bezeichnet wird. Ein paar klicken auf Play. Sie können hier oben sehen, dass Server steht. Und hier steht, dass Kunde den Client und den Server hat. Okay, normalerweise wird die Benutzeroberfläche nur auf dem Client ausgeführt, sie wird niemals auf dem Server ausgeführt. In der nächsten Lektion erkläre ich Ihnen den Server und den Client genauer. Aber vorerst sollten Sie wissen, dass die Benutzeroberfläche über den Client ausgeführt werden muss. Sie können die Benutzeroberfläche nicht über den Server ausführen. Was wir also tun müssen, ist das einfach zu trennen. Und um die Verbindung schnell zu trennen, können Sie auf der Tastatur auf Alt klicken und darauf klicken. Dadurch werden die Pins getrennt. Und was Sie tun möchten, ist hier mit der rechten Maustaste zu klicken und benutzerdefinierte Ereignisse zu schreiben. Schneller Trick, um das auch zu tun. Sie können einen Punkt schreiben und das wird schnell angezeigt. also diese benutzerdefinierten Ereignisse erstellen, nennen wir dieses Initialisierungs-Widgets. Einfach so. Und denken Sie daran, bei den Replikaten auf dieses Ereignis zu klicken, klicken Sie auf „Besitzer“, „ Kunde“ und „Zuverlässig“. Ich erkläre Ihnen in der nächsten Lektion, was das bedeutet. Aber stellen Sie vorerst sicher, dass es auf dem Client läuft und zuverlässig ist , und verbinden Sie es hier. Wir stellen also sicher, dass die Benutzeroberfläche mit dem Client durchgespielt wird. Und jetzt wieder Blueprints. Denken Sie daran, dass nichts passiert, wenn Sie auf Play klicken. Das liegt daran, dass Sie ihm immer die Baupläne mitteilen müssen , wann Sie diese Veranstaltung durchführen werden. Weil dein Code es nicht wirklich weiß oder dein Spiel nicht wirklich weiß, wann dieses Event stattfinden soll. Als wir anfingen, das Spiel zu spielen, möchte ich dieses Ereignis initialize widgets nennen. Okay, lasst uns kompilieren. Sie können jetzt spielen. Jetzt können wir sehen, dass es hier und in diesem Jahr auf dem Bildschirm erscheint . Und wenn ich das Spiel verlasse, siehst du, dass ich keine Box habe. Jetzt gibt es mir keine Fehler. Und das liegt daran, dass es jetzt korrekt läuft. Jetzt wird die gesamte Benutzeroberfläche wie gewünscht über den Client ausgeführt. Und denken Sie daran, zu kompilieren, klicken Sie auf Alle speichern. Und ich gehe zur nächsten Lektion über, in der ich den Server und den Client ausführlicher erkläre . 11. 3.02 Was ist Event: Okay, bevor wir weitermachen, möchte ich Ihnen nur kurz den Server und den Client in Unreal Engine erklären . Wie Sie bereits gesehen haben, haben wir, wenn wir auf Play klicken, den Server und dann einen sogenannten Client. Aber was Sie in Unreal Engine verstehen müssen, ist, dass der Server die Autorität des Spiels ist, also ist der Server das wahre Spiel. Und was heißt das? Das bedeutet für den Server, Sie alles richtig sehen. Also zB wenn ich meinen Server hierher hätte gehen sollen und wenn ich eine Waffe abfeuere, dann ist die Waffe völlig in Ordnung geschossen. Wenn ich auf den Client schieße und der Server dem Client nicht die Befugnis gegeben hat, diese Waffe abzufeuern, wird das niemals passieren. Was auch immer Sie auf dem Client tun, er überprüft es immer mit dem Server. Also überprüft der Server. Macht der Kunde etwas Legales oder tut er so etwas , gilt als Betrug. Also alle Clients sind mit dir verbunden, also nehmen wir an, du hast einen Counter-Strike-Server oder einen vierzehntägigen Server oder was auch immer erstellt einen Counter-Strike-Server . Und all deine Freunde sind mit dir oder deinen Freunden oder den Kunden, dir oder dem Server verbunden . Also, wenn einer deiner Freunde schummelt, z. B. einer Waffe ohne Kugeln schießt. Es wird es immer mit dem Server überprüfen . Und wenn der Server sieht, dass dieser Spieler keine Kugeln hat, wird er niemals geschlossen. Der Server überprüft also immer, was die Clients sind, und dieser ist gut. Wenn Sie UE nach einem Netzwerkkompendium googeln können, erfahren Sie dort alles über den Mehrspielermodus. Aber ich möchte es dir nur sehr einfach machen weil es ein langes Dokument ist. Und ich möchte Ihnen nur diese Kreise zeigen, genau wie wir es in der vorherigen Lektion gemacht haben. Wir führen die Widgets auf dem Client aus. Sie können hier also sehen, dass Widgets immer auf dem Client ausgeführt werden. Die Player-Controller werden auf dem Server und den Clients ausgeführt , sodass sie mit Server und Client kommunizieren können . Und der Spielmodus läuft nur auf dem Server. Also, wenn Sie im Spielmodus Code geschrieben haben und über den Client darauf zugreifen möchten . Dies ist unmöglich, da der Spielmodus nur auf dem Server existiert. Und wieder der Player-Controller existiert sowohl auf dem Server als auch auf dem Client, sodass Sie mit beiden kommunizieren können. Also, was wir bisher in unserem Spiel gemacht haben, haben wir innerhalb des Clients gearbeitet. Also, wenn ich hier zu meinem Spiel zurückkehre, wenn ich zu den Bauplänen zurückkehre, denk daran, dass wir diesen Code hier im Player-Controller eingegeben haben . Und der Player-Controller existiert sowohl auf dem Server als auch auf dem Client. Also müssen wir hier angeben, arbeiten wir mit dem Server oder arbeiten wir mit dem Client? Wenn wir mit dem Server arbeiten, müssen wir replizieren, um auf dem Server zu laufen. Da Sie aber immer über den Client abgewickelt werden, müssen wir den Client ausführen und dann die Benutzeroberfläche erstellen, mit der Benutzeroberfläche arbeiten. Es ist sehr, sehr wichtig, das zu verstehen. Ui wird immer über den Client abgewickelt. Und wenn Sie sie nicht über die Clients laufen lassen , wie wir es zuvor gesehen haben, wenn Sie es einfach so direkt ausführen, erhalten Sie Geld. Nun, abgesehen von der Benutzeroberfläche, z. B. einigen Spielmechaniken, sagen wir später, werden wir Gegenstände erstellen. Also hier in den Artikeln werden wir Artikel erstellen. Nehmen wir an, der Spieler nimmt diese Manipulation vom Boden aus und fügt sie dem Inventar hinzu. Also geht der Spieler zu dem Spieler, der zu diesem Trank geht. Und wenn der Spieler E drückt, um z.B. den Zaubertrank zu plündern, dann läuft er auf Servern. Wir werden ein benutzerdefiniertes Ereignis auf dem Server ausführen. Dann kümmert sich der Server um die Logik, also überprüft der Server sie. Dieser Spieler drückt tatsächlich E. Ist dieser Spieler tatsächlich in der Nähe dieses Tranks, um ihn verdünnen zu können. Wenn Sie diese Dinge nicht überprüfen, kann ihr Kunde schummeln. Und deshalb überprüfen wir es mit dem Server. Nehmen wir an, der Kunde steht hier und Sie können diese Person nur laden , wenn Sie hier stehen. Aber wenn du es hier nicht mit dem Server und dem Client gegen E überprüfst , schummeln sie. Sie können diesen Trank leicht verlieren. Also müssen wir auf dem Server laufen und überprüfen, ob die Ebene tatsächlich mit diesem Trank interagiert. Wenn der Spieler ***** genug im Inventar hat , um diesen Trank zu laden und so weiter. Also werden wir später den Server durchgehen, also überprüfe diese Dinge. Aber für die Benutzeroberfläche führen wir das auf dem Client aus. 12. 3.03 Binding zum offenen Inventar: Lassen Sie uns nun die I-Taste binden , um das Inventar zu öffnen. Sie können auch die B-Taste binden, die manchmal für Rucksäcke verwendet wird. Gehen wir also wieder zum Ordner Blueprints, zum Ordner Blueprints. Und innerhalb des Players habe ich bereits dieses namens Input Mapping Context und Input Action erstellt . Dies ist das neue Bewegungssystem und die Unreal Engine. Wenn du nichts darüber weißt, kannst du jederzeit auf mein YouTube gehen und das Tutorial überprüfen, das ich dafür gemacht habe. Sie können jetzt also hier auf diesen doppelklicken , den Mapping-Kontext. Und wenn Sie es öffnen , können Sie sehen, dass ich die Bewegung bereits erstellt habe . Und wenn du mit deiner Maus schaust, müssen wir also ein neues erstellen, oder willst du dein Inventar öffnen? Klicken wir hier mit der rechten Maustaste. Gehen wir zu den Eingaben und gehen wir zur Eingabeaktion. Nennen wir das IA für Input Action und nennen wir es Open Inventory. Was wir jetzt tun können, ist , alles zu retten. Und innerhalb des Mapping-Kontextes können wir jetzt hier auf die Plus-Schaltfläche klicken, hier klicken und das gerade erstellte Inventar öffnen auswählen . Dann können Sie einen Schlüssel dafür auswählen. Du kannst entweder das Auge auswählen oder B wählen. Du kannst einfach auf dieses Symbol hier klicken und V auf deine Tastatur schreiben, z.B. findest du es auch hier, wenn du möchtest, indem du auf die Tastatur schaust und dann den Schlüssel findest. Also kann ich auch zwei Buttons hinzufügen. Ich kann einfach auf diesen Plus-Button und den Schlüssel klicken. Jetzt kannst du das Inventar mit dem Schnabel und der Augentaste öffnen . Okay? Jetzt gibt es also bisher einen kleinen Fehler. Im Moment läuft es auf Hochtouren. Und ich zeige es dir gleich. Wenn du zum tatsächlichen Namen des Player-Controllers gehst, gehen wir hier zurück zum Player. Hier bearbeiten wir Eingaben. Also hier, wenn Sie mit der rechten Maustaste klicken und jetzt nach dem IA Open Inventar suchen , das wir gerade erstellt haben. Du findest dieses Event hier und du merkst es einfach, dieses Symbol bedeutet, dass es sich um ein Event handelt, wenn du darauf klickst. Und jetzt haben wir diesen , den wir gerade erstellt haben. Wenn Sie nun einfach den ausgelösten String ziehen und schreiben, drucken Sie die Zeichenfolge , um zu sehen, was passiert. Und damit werden nur Texte auf den Bildschirm geschrieben. Lass uns jetzt einfach auf Play, Play klicken. Und hier klicke ich auf die Schaltfläche I. Und Sie können sehen, dass es oft Hallo druckt und das ist nicht das, was wir wollen. Wir wollen das Inventar nur einmal öffnen, wenn wir klicken, ist es an dieser Stelle nur Spam im Inventar. Wenn du auf AI klickst. Also lass uns hierher zurückkehren. Kehren Sie zum Mapping-Kontext zurück. Und hier im offenen Inventar für den Peaky und den Ikea, denk daran, diesen kleinen Pfeil zu drücken, um sie hier zu öffnen. Was wir hier tun wollen, ist für die Auslöser, klicken Sie auf die Plus-Schaltfläche und wählen Sie hier gedrückt. Und was steht da? Trigger löst nur einmal aus, und genau das wollen wir tun. Also klicken Sie hier darauf. Und das Gleiche gilt für das Auge. Wir wollen es nur einmal auslösen, wenn wir auf die Schaltfläche klicken. Speichern wir es. Gehen wir zurück. Klicke auf Play. Und jetzt drücke ich die I-Taste. Und du siehst es nur einmal, wenn ich darauf drücke. Und selbst wenn ich es wie jetzt halte, drücke ich es einfach viele Male. Aber auch wenn ich es nur einmal gedrückt halte, werde ich jetzt den Knopf gedrückt halten. Man kann sehen, dass es nur einmal feuert und das wollen wir auch. Ordnung, jetzt ist es an der Zeit, das Inventar auf dem Bildschirm anzuzeigen , wenn wir auf die Schaltfläche klicken. Aber lassen Sie uns mit der nächsten Lektion fortfahren. Sie müssen mehr über etwas lernen , das als Aufzählung bezeichnet wird. Also speichern Sie alles und lassen Sie uns weitermachen. 13. 3.04 Einführung in die Aufzählung: Was eine Aufzählung ist, es ist nur eine Liste aller Elemente, die Sie haben möchten. Gehen wir also zu den Bauplänen über. Hier. Klicken wir mit der rechten Maustaste, erstellen wir einen neuen Ordner und nennen ihn Enums. Das sind also die Aufzählungen , die hier enthalten sein werden. Klicken Sie jetzt mit der rechten Maustaste hier, gehen Sie zu den Blueprints und Sie können sehen, dass wir eine sogenannte Aufzählung haben. Also lasst uns eins erstellen und sehen, was es ist. Normalerweise gebe ich ihnen das Präfix E oder die Aufzählung. Und für diesen nenne es einfach Game-Widgets. Wir sehen uns eine Liste von Spiel-Widgets an. Gehen wir hier rein. Und jetzt können Sie sehen, dass es sehr einfach ist. Wir haben hier nicht viel drin. Sie können auf Enumerator hinzufügen klicken. Und hier bekommst du diesen Anzeigenamen und du kannst ihm einen Namen und eine Beschreibung geben. Was also eine Aufzählung ist, es ist nur eine Liste. Das ist es einfach. Es ist nur eine Liste und kann eine Liste von allem sein, z. B. heißt diese Liste Gameboy Jets. Also ich will einfach eine Liste von Spielen machen. Wir haben einfach, wir haben bisher das Inventar öffnen wollen. Ein Widget, das wir bisher haben, ist das Inventar. Wir haben auch die Haupt-UI, aber ich brauche sie hier nicht wirklich. Jetzt haben wir das Inventar, soweit haben wir eigentlich nicht mehr. Aber wir könnten z.B. so etwas wie ein Skill-Menü haben. Nehmen wir an, wir haben ein größeres Spiel. Wir haben ein Crafting-Menü. Wir könnten ein Pausenmenü haben, z. B. könnten wir hier viele Widgets haben, je nachdem, was Sie hinzufügen möchten. Ich werde all diese löschen indem ich auf dieses Symbol klicke. Du kannst aber auch alles andere auflisten , z. B. Gegenstände zum Basteln. Vielleicht brauchst du einen Goldbarren. Geht so. Vielleicht brauchst du Kuhfell oder so etwas. Es kann also eine Liste von allem sein. Aber im Moment erstellen wir einfach, wir wollten nur die Spiel-Widgets auflisten, die wir gerade haben, das ist nur das Inventar. Das war also sehr einfach und die Aufzählung ist nur eine Liste von allem. Und wir werden diese Liste in der nächsten Lektion verwenden , um das Inventar anzuzeigen. 14. 3.05 Erstellen des Open- und Close: Okay, jetzt haben wir in den Blueprints im Ordner Enums unsere Aufzählung der Spiel-Widgets erstellt. Und das einzige, was wir derzeit haben, ist nur das Inventar, das wir als Benutzeroberfläche schließen und öffnen können. Versuchen wir also, die Widget-Ereignisse zum Öffnen und Schließen so zu gestalten die Widget-Ereignisse zum Öffnen und Schließen , dass Widgets tatsächlich geöffnet und geschlossen werden können. Und normalerweise arbeiten wir wieder mit Benutzeroberfläche innerhalb des Player-Controllers. Gehen wir also zurück zu den Bauplänen. Öffnen wir unseren Player-Controller. Und hier haben wir bisher diese Haupt-Benutzeroberfläche erstellt, die wir dem Viewport hinzufügen. Jetzt möchte ich, dass Sie hier mit der rechten Maustaste klicken und benutzerdefinierte Ereignisse erstellen. Für dieses Ereignis nennen wir es Open Close Widgets. Wir nutzen dieses Event also, um Widgets zu öffnen und zu schließen, z.B. ihr öffnet und schließt das Inventar, oder ihr öffnet und schließt das Pause-Menü, oder ihr öffnet und schließt und was auch immer z.B. Sharp ihr öffnet, um Waffen zu kaufen und so weiter. Also öffnen und schließen wir vorerst das Inventar. also an diese Veranstaltung hier , denken Sie daran, dass wir darüber gesprochen haben, dass die Benutzeroberfläche auf dem Client ausgeführt werden muss . Wir müssen also ein neues Ereignis erstellen, ein neues benutzerdefiniertes Ereignis, und dieses Ereignis C L für Kunden nennen. Und nennen wir das Open Lows Widgets. Und normalerweise nenne ich sie für den Kunden Cl als Präfix. Und eigentlich hätte ich es auch hier machen sollen, nur um konsequent zu bleiben. Und ich nenne es auch hier CL. Okay, für diesen Fall sollten wir uns bei den Replikaten daran erinnern, dass er auf eigenen Kunden läuft und auch zuverlässig ist. Und denken wir ab diesem ersten Kostüm-Event daran, diesen Code anders auszuführen. Das wird niemals funktionieren. Diese eine Cl-Initiative wurde also nicht nur mit diesem einen Widgets zum Öffnen und Schließen initialisiert. Also führen wir jetzt auch diesen Code aus. Okay, du kannst kompilieren. Im Grunde möchte ich mit diesem Widget, dass wir auswählen müssen , welches Widget wir öffnen möchten. Und dann müssen wir auswählen, ob wir es öffnen oder schließen möchten. Um also auszuwählen, welches Widget wir öffnen möchten, denken Sie daran, dass wir diese Aufzählung namens E-Game-Widgets erstellt haben. Also hier für dieses Widget zum Öffnen und Schließen, klicken wir jetzt hier auf das Plus. Also fügen wir diesem Ereignis eine Variable hinzu. Und lassen Sie uns hier für den Variablentyp wählen. Lass uns nach E-Game-Widgets suchen. Das haben wir gerade gemacht, das ist die Aufzählung. Also lass uns darauf klicken. Und ich nenne es einfach Widgets. Und Sie können jetzt hier sehen, jetzt müssen wir diese Aufzählung mit der Client-Aufzählung verbinden . Also hier drüben werde ich tatsächlich den gleichen Klick auf das Plus erstellen. Es ist bereits auf die Spiel-Widgets eingestellt. Ich nenne es wieder Widget. Und jetzt können wir es hier so verbinden. Okay? Wir brauchen also eine weitere Variable. Wir müssen angeben, ob wir dieses Widget tatsächlich öffnen oder schließen möchten . Also müssen wir einen booleschen Wert hinzufügen. Klicken wir hier oben auf das Plus. Wählen Sie einen Boolean als Variablentyp und nennen Sie diesen Open. Schon wieder. Lass es uns hier unten machen. Klicke auf das Plus Collatz Open und lass uns sie hier verbinden. Okay, also z.B. nur um es dir schnell zu präsentieren. Also hier oben am Anfang spiel, sagen wir, ich ziehe von hier und sage Open Lows Widget, dieses ohne den Client, also dieses hier. Jetzt kann ich angeben, welches Widget ich öffnen möchte? Das liegt daran, dass wir diese Variable hier unten hinzugefügt haben und z. B. angegeben haben, dass ich das Inventar öffnen möchte und denke daran diesen booleschen Wert anzukreuzen, weil du es öffnen willst. Wenn du es nicht so öffnen willst, heißt das, du schließt es durch, schließt es. Klicken Sie hier. Es bedeutet, dass du es öffnen willst. Es wird diese Veranstaltung durchgehen und die Ergebnisse werden hier sein. Okay, also ich werde diesen vorerst löschen. Also hier unten, was wir jetzt hier tun müssen, müssen wir überprüfen. Sie möchten das Widget öffnen oder schließen? Also aus diesem booleschen Wert ziehen, B schreiben und diesen Zweig für diesen booleschen Wert auswählen , um konsistent zu bleiben. Normalerweise schreibe ich B als Präfix, und das geschieht in C plus plus, um Boolesche Werte schneller zu finden. Du siehst also, obwohl ich ein b schreibe, taucht es hier nicht auf, also ist es ein kleines Secrets, es vor den booleschen Namen zu schreiben. Normalerweise mache ich das. Okay, lass uns hierher zurückkehren. Also mach hier eine Abzweigung, rechts V, und mach eine Abzweigung. Jetzt fragen wir, ist dieser boolesche Wert wahr oder falsch? Wenn das stimmt, wollen wir das Widget öffnen. Wenn es falsch ist, wollen wir das Widget schließen. Aber lassen Sie uns hier zwei Funktionen erstellen, indem wir auf diese Plus-Schaltfläche klicken und diese aufrufen. Widgets, und lassen Sie uns das zweite erstellen und es Flow-Widgets nennen. Gehen wir zurück zum Event-Graph. Lassen Sie uns sie hierher schleppen. Und jetzt verbinden wir sie einfach. Also wenn es stimmt, wollen wir das Widget öffnen. Wenn es falsch ist. Wenn die Offenheit auf false gesetzt ist, möchten wir das Widget schließen. Jetzt müssen Sie angeben, von welchen Widgets Sie sprechen. Also nochmal, in der Eingabe klicke ich auf das Plus und wähle das EA-Spiel-Widget aus und nenne es hier Widgets. Und wenn Sie dasselbe für das Schließen-Widget tun, klicken Sie auf das Plus. Und dann musst du dieses Widget mit hier verbinden. Und jetzt haben wir den vollen Ablauf. Was jetzt also im Wesentlichen passiert ist, wenn Sie dieses Open-Close-Widget aufrufen, wieder hier oben, z. B. sagen Sie Open Close Widget. Sie möchten das Inventar so öffnen. Jetzt wird es hier runter gehen. Wenn du den Code so aufrufst, geht er hier runter. Es weiß, dass Sie dieses Widget auf Inventar gesetzt haben. Es wird also geöffnet, weil das stimmt. Also wird es hier runter gehen. Es ist wahr. Und es weiß, dass der Wert Inventar ist. Es wird also das Widget-Inventar öffnen, also haben wir es noch nicht erstellt. Also lass uns hier runter gehen. Dies ist die Funktion zum Öffnen des Widgets hier. Für hier können Sie also aus dieser Aufzählung ziehen. Und wir haben etwas namens Switch on Enumeration. Also schalten Sie ein, wenn Sie jetzt darauf klicken. Was ist nun Einschalten? Es kann unterschiedliche Werte wiedergeben, je nachdem, was Sie als Wert für diese Aufzählung ausgewählt haben . Moment haben wir nur das Inventar als Wert, aber wenn Sie mehrere Werte hätten, hätten Sie hier mehrere Pins. Sie können also je nach dem, was Sie als Aufzählung ausgewählt haben, eine Aktion ausführen. Also hier für das Inventar, denken Sie daran, wir befinden uns im geöffneten Widget. Also lass uns hier weitermachen und „Widgets erstellen“ sagen und dieses hier auswählen. Und wir wollen das Inventar-Widget erstellen. Wir wollen das Inventar öffnen. Also tolles Widget-Inventar. Und dann klicke ich mit der rechten Maustaste auf eine Variable, weil ich sie gerne in Variablen habe und das eine WB-Inventar nenne. Okay, jetzt habe ich diese Variable und möchte Ihre Ports einfach so hinzufügen. Aber jetzt fügen wir es tatsächlich zum Viewport hinzu. Nur eine kurze Überprüfung, bevor wir das tatsächlich tun, Sie können, auch hier daran denken, dass wir Alt gedrückt halten und auch hier darauf klicken können , um die Verbindung schnell zu trennen. Bevor wir das tun, lassen Sie mich diese Inventarvariable nehmen. Sie können die Strg-Taste gedrückt halten und ziehen. Wenn Sie die Strg-Taste gedrückt halten und ziehen, nehmen Sie diesen Variablenwert. Wenn du die Alt-Taste gedrückt hältst und ziehst, stellst du diese Variable ein, indem du die Steuerung gedrückt hältst und diese Variable ziehst, kriegst du sie von hier weg. Und jetzt können wir mit der rechten Maustaste auf diese Variable und sie in ein validiertes Gets konvertieren. Und was das bewirkt, ist, dass Sie es tatsächlich überprüfen, bevor Sie das tun. Sie überprüfen, ob dies bereits erstellt wurde oder nicht, da wir es nicht wirklich erstellen und dann die Variable setzen müssen erstellen und dann die Variable setzen müssen , falls sie bereits zuvor gesetzt wurde. Das ist es also, was wir tatsächlich tun. Wenn sie also nicht gültig ist, wenn diese Variable nichts enthält, bedeutet das, dass wir sie noch nicht erstellt haben. Wenn sie nicht gültig ist, wollen wir diese Variable erstellen. Wenn diese Variable jedoch gültig ist, was bedeutet, dass wir diesen Code bereits zuvor ausgeführt haben, möchten wir ihn einfach so zum Viewport hinzufügen. Wir müssen es also nicht immer wieder erstellen wenn wir es schon einmal erstellt haben, richtig, das war es also für das offene Widget. Das Close-Widget ist viel einfacher. Also auch hier, ziehen Sie von hier aus und sagen Sie, schalten Sie die Aufzählung ein. Je nachdem, was wir schließen möchten, möchten wir in diesem Fall das Inventar schließen. Also lassen Sie uns das Inventar hier noch einmal nehmen, mit der rechten Maustaste klicken, konvertieren, um zu validieren, dass es erhält. Und wenn wir das offen haben, das heißt, wenn es gültig ist, bedeutet das, dass das Inventar geöffnet ist. Wir wollen von hier wegziehen und sagen „Von den Eltern entfernen“. Und so entferne ich die Benutzeroberfläche aus den Viewports. Okay, jetzt sind wir fertig und nur eine kurze Erklärung, bevor ich das wirklich beende, nur damit wir darüber nicht zu verwirrt sind. Lassen Sie mich das vorerst entfernen. Jetzt haben wir das gemacht, dieses benutzerdefinierte Ereignis hier und es läuft auf dem Client. ZB möchte ich hier das Begin-Play öffnen. Ich möchte das Inventar öffnen, sagen wir, los Widgets öffnen. Also rufen wir diese Veranstaltung, die wir veranstaltet haben, ab. Wir wählen als Widget das Inventar aus, weil wir in unserer Aufzählung nicht mehr Werte haben. Nehmen wir an, ich habe später einen weiteren Wert hinzugefügt, ich habe ihn Waffenladen genannt, z. B. I. Klicken Sie auf Speichern, speichern Sie alles. Jetzt kann ich hier in meinem Player-Controller sehen, dass ich die Waffe jetzt scharf auswählen kann. Und nehmen wir an, es geht bis hier und das offene Widget. Jetzt siehst du, dass ich mit dem Up with a Waffenladen etwas anderes machen kann . Ich hätte ein weiteres Widget für die Waffe erstellen können, und ich könnte es im Viewport anzeigen. Ich kann sehen, wie praktisch es ist, Aufzählungen zu haben. Lassen Sie mich diesen vorerst löschen und lassen Sie mich zurückgehen. Also im Ereignisdiagramm, sagen wir, ich habe angerufen, ändere das einfach wieder auf Inventar. Also hier nenne ich das Open-Close-Inventar. Ich habe Inventar als Eingabe für das Widget ausgewählt. Und ich wähle es so aus. Und das bedeutet, dass es hier durchgehen wird. Es weiß, dass dieser boolesche Wert wahr ist, was bedeutet, dass es hier nach oben geht und mein Widget öffnet und es weiß, was es ist, weil ich es hier eingerichtet habe. Jetzt wird es hierher gehen und die Inventarbenutzeroberfläche zu meinem Viewport hinzufügen. Also fügt es diese Benutzeroberfläche hier hinzu, WB-Inventar zum Viewport. Und das ist das Inventar. Es sieht nicht gut aus, weil wir es noch nicht wirklich fertiggestellt haben, weil wir es auch programmieren müssen. Aber das ist es, was im Wesentlichen passiert. Wenn dies auf Falsch gesetzt ist. Es wird falsch sein hier unten. Und es wird das Inventar vom Bildschirm entfernen. In Ordnung, also lass uns das jetzt hier oben löschen. Wir wollen das Inventar nicht öffnen wenn wir anfangen, das Spiel zu spielen. Was wir jedoch tun wollen, schließen wir jetzt einfach alles hier. Gehen wir zurück zum Blueprints-Player und unserem BP-Spieler hier. Was wir also tun wollen, ist, wenn wir auf Inventar öffnen klicken, diesen Code hier in unserem Controller namens Open-Close Widgets ausführen . Und wir wollen das Inventar öffnen, drücken Sie die Schaltfläche Inventar öffnen. Denken Sie jedoch daran, dass sich unser Code im Player-Controller befindet und wir uns jetzt im Player befinden. Wie schaffen wir es also, dass dieses Event, das sich im Player-Controller befindet, hier und im Spieler gespielt werden kann. Wenn Sie meine vorherigen Kurse besucht haben, können Sie versuchen, dies selbst zu tun. Das solltest du wahrscheinlich können. Wenn Sie jedoch neu hier sind oder ich mich nicht erinnern kann, lassen Sie uns das in der nächsten Lektion behandeln, denn jetzt müssen wir über die Blueprint-Kommunikation sprechen, bei der wir zwischen zwei verschiedenen Blueprints kommunizieren. 15. 3.06 Einführung in die Blueprint: Hallo und willkommen zurück. Jetzt werden wir über die Blueprint-Kommunikation sprechen. Und was ist Blueprint-Kommunikation. Wir kommunizieren einfach zwischen verschiedenen Blueprint-Klassen. In diesem Fall wollen wir also das Inventar öffnen. Was Widget-Ereignisse zum Öffnen und Schließen sind , befindet sich im Player-Controller. Also, wie bekommen wir die Informationen aus einer anderen Blueprint-Klasse hier vom Spieler? Was wir also im Wesentlichen zuerst tun müssen, ist die Referenz für diesen Player-Controller. Ich werde diese Druckzeichenfolge löschen hallo, die sie einfach auf dem Bildschirm druckt. Was wir nun tun müssen, ist hier mit der rechten Maustaste zu klicken und get controller zu schreiben. Und das bewirkt, dass es den Controller für diesen Akteur zurückgibt. Es wird also, du bekommst diesen Controller zur Anzeige hier. Jetzt müssen wir angeben, von welchem Controller Sie sprechen. Dieser ist nur ein allgemeiner Controller. Denken Sie daran, wir haben hier unser maßgeschneidertes gemacht. Jetzt müssen wir der Engine mitteilen, dass wir eigentlich von einem Festplattencontroller sprechen. Hier kommt also die Kommunikation ins Spiel. Es ist etwas, das kostet, von hier aus zu fahren und zu sagen, weggeworfen zu werden. Und jetzt müssen wir hier den Namen des Blueprints des Controllers schreiben . Also sagen wir, sagen wir PC Town. Also dieser hier hat PC4 Uptown hier gekostet und der Trigger, lasst uns ihn hier verbinden. Jetzt, da dieser Controller hier ist, kann ich tatsächlich auf alles innerhalb dieses Player-Controllers zugreifen , einschließlich dieser Variablen. Also, sowie diese Funktionen hier. Das ist es also, was Blueprint-Kommunikation ist, sehr, sehr einfach. Du bekommst den Controller. Dies ist nur die allgemeine Referenz. Und dann geben wir an , von welchem Controller Sie konkret sprechen? Ich spreche von diesem PC genauso wie von diesem. Jetzt können wir sagen, dass ich dieses Event namens Open Close Widget starten möchte . Den Player kann ich von hier ziehen und sagen Widget öffnen schließen, dieser hier. Jetzt kann ich das tatsächlich machen. Also z.B. für das Inventar, möchte es öffnen. Und wenn ich kompiliere und auf Play klicke, kann ich jetzt auf der Tastatur auf I klicken und du kannst sehen, wie unsere Inventare tatsächlich geöffnet sind. Jetzt können wir erneut auf I klicken, da es nicht geschlossen wird. Wir müssen diese Logik immer noch programmieren. Also lass es uns schließen. Das ist also im Grunde die Blueprint-Kommunikation, sehr, sehr einfach. Es gibt jedoch ein kleines Problem beim Casting. Casting erstellt harte Referenzen und wie harte Referenzen geladen werden müssen , wenn das Spiel geladen wird. Das wird dein Spiel also langsamer machen. Manchmal sieht man, dass Spiele dort sehr, sehr langsam sind , wenn sie das Spiel laden. Und das könnte daran liegen, dass sie es an viele Dinge in ihrem Spiel weitergegeben haben. Stell dir vor, dein Spiel kann sehr, sehr umfangreich sein, wenn du dein Spiel beendet hast. Und vielleicht hast du etwa 100, 100 Artikel, die du zwei kostest , oder 100 Baupläne, du kostest zwei. Und all das erzeugt harte Referenzen, was dann dein Spiel verlangsamt. Ich sage nicht, dass Sie das niemals verwenden sollten, aber Sie sollten es vermeiden, es zu verwenden, wann immer Sie können. Und in diesem Fall können wir es tatsächlich vermeiden, indem wir sogenannte Blueprint-Interfaces verwenden. Lassen Sie uns also mit der nächsten Lektion fortfahren und über Blueprint-Interfaces sprechen. 16. 3.07 Blueprint: Nachdem wir über die Kostenrechnung gesprochen haben, lassen Sie uns nun über Blueprint Interfaces sprechen. Also dieses Thema ist für Anfänger normalerweise etwas schwierig, aber ich werde versuchen, es so gut wie möglich zu erklären. Aber lassen Sie uns jetzt alles hier und hier und den Ordner Blueprints schließen hier und hier und den Ordner Blueprints wir mit der rechten Maustaste und gehen wir zu Blueprints und machen dieses als Blueprint-Interface. Und normalerweise gebe ich es int als Präfix. Und für diesen nennen wir es den Namen des Entwurfs, auf den ich verweisen möchte. Ich möchte also auf diesen schwarzen Controller verweisen , um mein Widget-Ereignis zum Öffnen und Schließen abzurufen. Nennen wir das also einen Layer-Controller. Jetzt werde ich auch mit der rechten Maustaste klicken und einen neuen Ordner namens Interfaces erstellen , um hier konsistent zu bleiben , und diesen in diesen Ordner ziehen. Und lass mich in den Ordner gehen mein Blueprint-Interface öffnen. Also, was für ein Blueprint Interfaces können Sie hier sehen. Sehr, sehr einfach. In dieser Grafik kann ich wirklich nichts machen. Ich kann nichts bewegen oder irgendetwas tun. Und wir sollten hier nicht wirklich arbeiten. Was wir hier rechts tun sollen, können wir Funktionen erstellen. Also diese erste Funktion, Sie können darauf klicken. Sie können auf der Tastatur auf F2 klicken, um es umzubenennen. Und ich nenne es die Layout-Controller-Referenz von get , weil ich das versuche. Hier in der Ausgabe. Lass uns darauf klicken und hier eine Variable setzen. Jetzt müssen Sie auswählen, worauf Sie verweisen möchten. Ich möchte auf meinen Player-Controller namens EC Hook Town verweisen . Also wähle es hier aus. Und jetzt nennen wir es einfach Player-Controller. Okay, das ist es also für den Moment. Jetzt haben wir diese Funktion erstellt Ebenensteuerung oder Referenz erhält, oder wir versuchen, die Referenz für diesen PC-Volksbegriff Player-Controller zu finden. Okay, schließen wir jetzt diese Schnittstelle und kehren wir zu den Blueprints zurück. Und wir müssen in diesen Player-Controller gehen und unser gerade erstelltes Interface hinzufügen. Und das tun wir, indem wir auf die letzten Einstellungen klicken. Und hier in den Interfaces klicken wir hier und suchen nach dem End-Layer-Controller, das ist der, den wir gerade erstellt haben. Also klicken Sie hier darauf. Lassen Sie uns nun kompilieren. Wenn Sie das jetzt tun, können wir sehen, dass wir hier eine Registerkarte namens Interfaces haben. Und wenn Sie auf den Pfeil klicken, sehen Sie Ihre Benutzeroberfläche. Ein sehr kleiner Fehler, den viele Leute hier machen. Wenn Sie zur Oberfläche zurückkehren, müssen Sie daran denken, auf Kompilieren zu klicken. Sonst wirst du das hier unten nicht sehen , wenn du deine Schnittstelle hinzufügst. Denken Sie also daran, auf Kompilieren zu klicken. Sehr, sehr wichtig, dass Sie Ihren Code immer kompilieren. Jetzt können wir hier in der Oberfläche darauf doppelklicken. Dafür, dafür hier, für diese Referenz dieser Variablen, können wir von hier ziehen und self schreiben. Im Grunde genommen ist diese Variable gefragt, wir müssen angeben, was diese EC**** Stadtvariable ist , was ist das? Und was wir hier im Grunde machen , ist, dass wir hierher ziehen und uns selbst sagen. Denn denkt daran, wir befinden uns bereits in diesem Bauplan, dem Player-Controller, auf den wir Bezug nehmen wollen. Wir sagen also im Grunde, dass diese Variablenreferenz self ist, was auch immer wir uns gerade darin befinden, also diese Blueprint-Klasse hier. Was wir jetzt tun können, ist, zu Blueprints, dem Player und dem BP-Spieler, zurückzukehren . Also lass uns hierher zurückkehren. Anstatt zu casten, löschen wir einfach diesen Teil. Hier bekommen wir den General Controller. Also statt Kostüm können wir jetzt ziehen und sagen, bekommt ihre Controller-Referenz, weil wir das in dieser Funktion hier tatsächlich erstellt haben. Ziehen Sie also hierher und sagen Sie, es ist Player, Controller-Referenz, und am Ende muss es eine Nachricht sagen, was bedeutet, dass es von einem Blueprint-Interface stammt. Das ist also eine Blueprint-Interface-Funktion, klicken Sie hier darauf. Und jetzt können wir es hier und von hier aus verbinden , genau wie zuvor, können wir jetzt auf alles innerhalb dieses Layer-Controllers zugreifen . Und jetzt können wir sagen, Open Lows Widget wie dieses. Und jetzt funktioniert es voll und ganz. Du kannst sehen, wenn ich auf der Tastatur auf Play und dann auf I klicke, öffnet sich das Inventar wie zuvor und wir vermeiden das Fasten, und wir vermeiden das Fasten das eine harte Referenz geschaffen hat, was unser Spiel verlangsamen kann. Das ist also viel besser zu tun. Also ich werde es einfach schnell durchgehen , weil ich weiß, dass es für manche ein verwirrendes Thema ist und es war auch für mich verwirrend , als ich gerade angefangen habe. Also lass uns hierher zurückkehren. Wir haben ein Blueprint-Interface erstellt. Drinnen von hier. Und in diesem Blueprint-Interface haben wir gerade eine Funktion namens getline Controller reference erstellt , in der wir die Player-Controller-Referenz hinzugefügt wir verweisen möchten. Und auf diesen wollen wir uns speziell beziehen. Jetzt sind wir zu diesem Controller gegangen und haben die Schnittstelle und die Klasseneinstellungen hinzugefügt. Wir haben es hier hinzugefügt. Dadurch wurde diese Schnittstellenfunktion angezeigt. Und was wir hier gemacht haben, jetzt mussten wir angeben, ob ich das hier einfach abklemme, diese PC**** Town Controller-Variable. Wenn du das nicht tust, weiß es einfach nicht, wovon du sprichst. Das. Denken Sie daran, wenn Sie es so formulieren, bedeutet dies, dass diese Variable leer ist. Und was auch immer Sie hier versuchen, es wird Ihnen einen Fehler geben. Wenn ich also hier auf Play und dann auf meiner Tastatur auf I klicke , passiert nichts. Und wenn ich den Vorgang beende, wird dir eine Fehlermeldung angezeigt, die besagt, dass x kein Zugriff auf None ist , nur dass diese Variable leer ist. Ich weiß nicht, worauf Sie zugreifen möchten oder was Sie versuchen , ist diese Variable, sie ist leer. Ich habe keine Informationen. Deshalb musst du selbst sagen, weil wir im Grunde diese Variable definieren. Wir sagen, dass dieser Player-Controller wir sprechen, ich selbst bin , also dieser Bauplan. In welchem Bauplan wir uns auch befinden, diese Selbstreferenz ist diese. Also der PC-Faktor, so beziehen wir uns auf den Player-Controller. Und jetzt können wir im Player diese Blueprint-Interface-Funktion verwenden. Und wir wissen, was die Variable ist, weil wir diese Selbstreferenz hier gemacht haben. Und von dort aus können wir jetzt auf alles innerhalb dieser Layer-Controller zugreifen, sodass wir sogar auf diese erstellte WB zugreifen können, wenn wir wollten. Sie können hier sehen, wenn ich von hier aus ziehe und WB main sage, kann ich diese Variable auch bekommen. In Ordnung, das war es für den Bauplan und die Oberflächen. Jetzt können wir das Inventar öffnen. Aber lassen Sie uns in der nächsten Lektion weitermachen und dies tatsächlich abschließen, da wir auch das Inventar schließen müssen. 17. 3.08 Anzeigen des Inventars: Okay, also der letzte Schritt zum Öffnen und Schließen des Inventars. Im Moment ist das Problem, wenn wir auf der Tastatur auf I klicken, das Inventar ständig geöffnet, also müssen wir es auch schließen. Ich gehe zurück zum Player-Controller. Und hier erstellen wir eine neue Variable, einen booleschen Wert namens is, nennen wir ihn Inventar ist offen. Jetzt kontrollieren wir das Öffnen Schließen mit diesem booleschen Wert hier. Also hier im geöffneten Widget, lass uns hier rein gehen. Warum öffnen wir nicht das Inventar und fügen es dem Viewport hinzu. Lass uns das hier nehmen. Und denken Sie daran, dass Sie die Alt-Taste gedrückt halten, ziehen und hier festlegen können , um die Variable festzulegen. Ja, also wenn du es ziehen möchtest und auch hier festlegen auswählst. Also setzen wir diesen booleschen Wert auf true. Das Inventar ist also geöffnet, das stimmt. Und wenn wir das Inventar schließen, also wenn Sie zum Event Graph zurückkehren und auf das Widget „Schließen“ klicken, setzen wir dies auf „Falsch“. Okay, jetzt ist es also falsch. Und gehen wir zurück zum Spieler hier. Je nachdem, ob es wahr oder falsch ist, diese, diese Variable hier, dann wollen wir das Inventar öffnen oder schließen. Denken Sie daran, dass wir dieses Blueprint-Interface bereits mit dem Player-Controller kommunizieren , sodass wir auf alles zugreifen können , was sich in diesem schwarzen Controller befindet, einschließlich der Variablen, die wir gerade erstellt haben. Wir können jetzt von hier aus fahren und Is sagen, sind die Inventare hier offen? Wir können hier den Booleschen Wert auswählen um den Wert davon zu ermitteln. Und jetzt können wir einen Zweig machen. Also rechter Zweig. Wenn das Inventar also geöffnet ist, möchten wir fortfahren und das Inventar schließen. Lassen Sie uns das hier kopieren und einfügen. Und wenn das Inventar hier nicht geöffnet ist, werden wir das Inventar öffnen. Ziehen wir sie hierher und verbinden sie mit den Zielen. Und wenn Sie es viel besser machen möchten, können Sie hier einfach auf die Zeile doppelklicken und Sie können es übersichtlicher gestalten. Okay, was hier im Wesentlichen passiert, ist, dass wir fragen, ist das Inventar geöffnet? Wenn es bereits geöffnet ist, wenn wir auf die Schaltfläche klicken, möchten wir es schließen. Wenn wir auf die Schaltfläche klicken und das Inventar nicht geöffnet ist, dann wollen wir das Inventar eigentlich öffnen. Und lasst uns alles speichern. Lass uns auf Play klicken. Und jetzt klicken wir auf I, um das Inventar zu öffnen. Und ich klicke erneut auf I und du kannst sehen, dass es geschlossen wird. Ein Klick auf das Auge öffnet es also. Wir können es wieder, es schließt es. Denken Sie daran, dass ich auch die B-Taste gefunden habe, wenn Sie die B-Taste drücken. Und das ist nur hier in der Blueprints-Ebene. Wenn du hier auf die Mapping-Kontexte klickst, wenn du auch das BQ für das Inventar gesagt hast, je nachdem, welche Tasten du gesetzt hast, kannst du diese Tasten hier und der Spieler drücken , um das Inventar zu öffnen. Jetzt funktioniert es also wie es sollte. 18. 4.01 Erstellen des Base: Wir sind jetzt bereit, uns mit den Artikeln zu befassen. Und der Grund, warum wir zuerst die bootfähigen Gegenstände erstellen bevor wir das Inventar tatsächlich codieren, ist, dass wir tatsächlich Gegenstände benötigen, die in die Inventarplätze passen müssen. Lassen Sie uns also fortfahren und die Elemente erstellen, bevor wir mit dem Inventar im Blueprint-Ordner wir jetzt mit der rechten Maustaste hier und erstellen einen neuen Ordner. Nennen wir das Artikel. Und hier klicken wir mit der rechten Maustaste. Gehe zum Blueprint-Kurs. Und du kannst hier einen Schauspieler machen, weil Gegenstände nur statische Akteure innerhalb des Levels sind. Diese Pflanze hätte z. B. ein Gegenstand sein können. Dieses Tool hätte ein Gegenstand sein können. Das sind also nur Schauspieler. Wenn Sie hier lesen, heißt es, dass ein Akteur ein Objekt ist , das in der Welt platziert oder darauf reagiert werden kann. Wählen wir also den Akteur aus und nennen wir ihn BP item base. Normalerweise erstelle ich eine Basisklasse, wenn ich mehrere derselben Dinge erstellen möchte. Wenn ich also mehrere Elemente erstellen möchte, erstelle ich eine Basisklasse. Und dann kann ich von dieser Basisklasse aus die Elemente erstellen. Das nennt man Child Blueprints, aber lassen Sie uns in der nächsten Lektion darüber sprechen. Vorerst möchte ich, dass du in die Artikelbasis gehst. Und innerhalb von hier lassen Sie uns fortfahren und eine Komponente hinzufügen. Und lassen Sie uns nach einem statischen Netz suchen. Und ein statisches Netz dient nur dazu, dass wir unsere Elemente hinzufügen können, die wir in unserem Ordner haben. Und nennen wir diesen einen Gegenstand. Okay? Und Sie können hier für das statische Mesh sehen, wir können ein Mesh hinzufügen, z. B. können wir die Banane als Objekt hinzufügen und so weiter. Aber im Moment bist du in der Basisklasse und wir wollen hier eigentlich nichts zuweisen. Das machen wir später. Ich wollte nur dieses Item erstellen , statische Mesh-Komponenten. Fügen wir also einen weiteren hinzu und klicken Sie auf diesen Artikel. Und dann füge ich hinzu, und lass uns eine Kollision hinzufügen. Fügen wir eine Kollisionskugel hinzu, ausgewählte Kollisionskugel. Ich nenne es eine Kollisionskugel. Und der Grund, warum ich diesen hinzufüge, ist , dass wir mit dem Objekt interagieren müssen. Stellen Sie sich also vor, wir gehen zu Vermögensgegenständen, stellen Sie sich vor, dieser Artikel ist auf der Welt, dann benötigen wir eine Kollisionskugel. Weil wir wissen müssen, wann der Spieler tatsächlich mit diesem Gegenstand kollidiert damit wir ihn verlieren können oder nicht. Lassen Sie uns diesen vorerst löschen. Und für den Artikel gehen wir hierher zurück. Gehen wir hier zurück zur Kollision. Für die Kollision, für dieses Element, möchte ich also nicht, dass es zu einer Kollision kommt Entfernen wir also generierte Überlappungsereignisse. Lassen Sie uns diesen entfernen. Und sagen wir hier in der Kollisionsvoreinstellung, keine Kollision. Lass uns kompilieren. Gehen wir jetzt zurück zur Kollisionssphäre. Nun zur Kollisionskugel oben, ich werde den Radius einfach auf 100 Sekunden erhöhen. könnt also hier nachschauen und sehen, wenn ihr zurück zu den Items geht und den Gegenstand anhand des Levels fallen lasst, dann seht ihr, dass das der Radius ist, in dem der Spieler mit dem Gegenstand interagieren kann. Wenn du es also erhöhst, kann dieser Spieler mit dem Gegenstand interagieren , wenn er sich in dieser Sphäre befindet. Sie können den Radius also einfach nach Belieben für Ihr Spiel anpassen . Ich wollte es jetzt nur auf 100 setzen. Ich lösche diesen im Level und gehe wieder zur Kollision über. Und hier wollen wir Überlappungsereignisse generieren, das ist also richtig. Dieser ist auch richtig. Und hier in der Kollisionsvoreinstellung möchte ich nur, dass mein Spieler mit dieser Sphäre interagiert. Ich möchte nicht, dass etwas anderes das tut. Also lass uns weitermachen und sagen, sagen wir Kunde hier oben und das Kollisions-Preset. Ich werde alles außer meinem Teich ignorieren, der meine Schicht ist. Lass uns kompilieren. Und bevor wir es vergessen, gehen wir hier in der BP-Artikelbasis in den Klassenstandardwerten nach oben. Und hier oben, wenn Sie nach oben scrollen, müssen Sie auf dieses klicken, denn denken Sie daran, dass wir im Mehrspielermodus sind und replizieren bedeutet, dass Sie die Informationen wieder wie zuvor an den Client replizieren. Denn hier, wenn du als Server spielst und hier haben wir den Client. Wenn Sie den Blueprint also nicht replizieren, kann der Client ihn nicht sehen. Nur der Server, das ist dieser Typ hier. Der Server kann das Element sehen, aber die Clients, also alle Clients, die es mit diesem Server verbinden, werden das Element nicht sehen können . Das bedeuten Replikate. Es repliziert Informationen vom Server und sendet sie an die Clients damit sie diese Informationen sehen können. Jetzt möchten wir, dass die Kunden diesen Artikel sehen. Wir klicken also auf Replikate und replizieren auch die Bewegung des Elements, falls sich das Objekt bewegt. Und das war es für die Artikelbasis. Lassen Sie uns das also abschließen und mit der nächsten Lektion fortfahren. 19. 4.02 Einführung in die Blueprints für Kinder: Nun, da wir unsere Artikelbasis erstellt haben, wollen wir uns nun mit den Bauplänen für Kinder befassen. Gehen wir also erneut zum Ordner Blueprints und gehen wir zu den Elementen. Nun, für diese Artikelbasis hier, der Grund, warum ich eine Blueprint-Klasse für Basiselemente erstellt habe , ist dass wir daraus Kinder-Blueprints erstellen wollen . Und ich werde erklären, was das ist, also gut, dieses kannst du hier mit der rechten Maustaste klicken, du kannst etwas sehen, das Create Child Blueprint-Klasse heißt . Also klicke auf diesen und ich nenne ihn einfach etwas Zufälliges. Jetzt haben wir also eine Child Blueprint-Klasse und Sie können den Mauszeiger darüber bewegen und es wird angezeigt, dass die übergeordnete Klasse die BP-Artikelbasis ist. Also, was heißt das? Das heißt, wenn ich Änderungen an der Elementbasis vornehme, erbt sie diese Änderungen und wendet sie auf alle untergeordneten Elemente an. Lassen Sie mich also erneut mit der rechten Maustaste klicken und eine weitere untergeordnete Blueprint-Klasse erstellen . Stellen Sie einfach sicher, dass es von dem Artikel stammt, auf dem Sie es tun. Also mache ich es hier, und ich nenne es einfach wieder etwas Zufälliges, mit der rechten Maustaste auf den Artikelbasispreis ein anderes Kind und nenne es noch einmal etwas, okay? Jetzt haben wir drei Kinder. Wir haben diesen, diesen und diesen. Und sie sind Kinder der Artikelbasis. Wenn ich nun in eine der untergeordneten Blueprint-Klassen gehe , können Sie sehen, dass sie bereits das Element Static Mesh Component, das wir in der Elementbasis erstellt haben, erbt das Element Static Mesh Component, das wir in der Elementbasis und auch die Kollisionskugel erbt. Denken Sie daran, dass dies Komponenten sind, die wir innerhalb der Artikelbasis erstellt haben . Also jetzt im Item-Based, wenn ich etwas erstelle, z. B. möchte ich eine Variable erstellen und sagen, ist das Troy-Bubble oder was auch immer, etwas Zufälliges? Das ist Troy Abel und ich klicke auf Kompilieren. Wenn ich jetzt auf eines der Blueprint-Kinder klicke, können Sie jetzt die letzten Standardeinstellungen sehen. Jetzt kann ich sehen, dass diese Variable zerstört werden kann, obwohl ich hier keine Variablen habe. Das liegt daran, dass es all die Dinge erbt , die du innerhalb der Artikelbasis herstellst. Jetzt kann ich also tatsächlich sagen, ob es zerstört oder verrückt ist. Und das ist sehr praktisch, da jetzt alle Child Blueprint-Klassen dieselbe Funktionalität haben. Ich kann sie so einstellen, dass sie Blasen oder Nüsse zerstören. Deshalb tun wir das, um die Geschwindigkeit Ihrer Spieleentwicklung zu beschleunigen. Anstatt also in jeden einzelnen zu gehen und einen zu machen wird ein doppelter boolescher Wert zerstört, wenn er hier reingeht, wird es zu einem booleschen Wert gemacht. Anstatt es also 100 Mal zu schaffen, können wir es hier einfach einmal innerhalb des übergeordneten Bauplans machen. Und dann werden alle Kinder diese Einstellungen erben. Das Gleiche gilt für Charaktere. Nehmen wir an, Sie erstellen viele Skins, viele Spieler-Skins. Offensichtlich möchten Sie eine Haupt-, wie eine übergeordnete, eine Blueprint-Klasse für den Skin erstellen und dann untergeordnete Blueprint-Klassen aus dieser übergeordneten Basis-Skinklasse erstellen. Der Grund, warum du das nochmal machst, wenn du bestimmte Einstellungen für all die 100 Skins ändern möchtest , die du gemacht hast, kannst du das einfach einmal in der übergeordneten Blueprint-Klasse tun , der , der Basisklasse hier, und sie erbt ihre, all diese Kinder werden sie auch erben. Okay. Das war es also. Sehr, sehr einfach. Lassen Sie mich also weitermachen und diese hier löschen. Und mit diesem Wissen sind wir jetzt bereit, alle Artikel zu erstellen. 20. 4.03 Erstellen der Elemente: Okay, lass uns weitermachen und alle Artikel erstellen. Lassen Sie mich mit der rechten Maustaste auf die Artikelbasis klicken. Die Child Blueprint-Klasse wurde erstellt. Und für das erste nenne ich es BP Banana. Und die Artikel, die wir wieder herstellen werden, ihr könnt hier oben auf die Assets klicken, Gegenstände und ihr könnt sie euch hier ansehen. Dies sind alle Gegenstände, die wir herstellen möchten , damit wir sie plündern und in unserem Inventar haben können. Lassen Sie mich zu den Artikeln zurückkehren. erneut mit der rechten Maustaste auf den Artikel und lassen Sie uns den BP-Geschmack erstellen. Rechtsklick noch einmal mit einem anderen Kind, EP-Messer , noch einem, und nennen wir diese eine BP-Art, Ozean. Eine weitere Blueprint-Cloud. Stellen Sie einfach sicher, dass die übergeordnete Klasse Itembase ist. Achte darauf, dass du hier nichts Falsches anklickst. Also der Item-Basispreis, Bauplan, die BP werden erfüllt, und der letzte sind die Ausdauertränke. Also hier mit dem Titel VP Stamina Ocean. In Ordnung, jetzt, wo wir alle Artikel haben, lassen Sie uns sie alle hier öffnen. Also der Bananenhebel, Messermanipulation, Fleisch und Ausdauer, Zaubertränke. Aber gehen wir zuerst zur Banane, klicken Sie auf den Artikel. Und hier im statischen Netz müssen Sie ihm das statische Netz zuweisen. Also suche ich einfach hier oben nach Bananen, die hier ausgewählt wurden, und hier ist sie. Nun, jetzt ist es hier als Artikel hinzugefügt. Okay, lass uns kompilieren. Gehen wir zum Hackmesser wie zu einem Gegenstand. Fahren Sie fort und wählen Sie das Hackmesser aus. Einfach danach suchen, kompilieren. Nun zum Messergegenstand und suche nach einem Messer. Das ist immer wieder derselbe Prozess. Gehen wir zum Aktionspunkt Wechseljahre, suchen nach Manor Potion kompilieren. Gehe zum nächsten. Item trifft Compile und das letzte, Ausdauertränke und klickt auf den Artikel Static Mesh. Suchen Sie nach Ausdauer und wählen Sie diese Ausdauerbewegung aus. Klicken wir nun auf Datei und speichern Sie alles für alle Fälle. Okay, das war es also. Und bevor wir das beenden, möchte ich noch eine Sache machen. Lass uns alles schließen. Ich möchte eine Variable namens Elementname erstellen und wir werden sie später verwenden. Wir werden das jetzt nicht benutzen. Aber denken Sie auch hier daran, dass Sie nicht in jede einzelne dieser Child Blueprint-Klassen gehen dieser Child Blueprint-Klassen und eine Variable namens name erstellen müssen. Sie können einfach zur Artikelbasis gehen. Und lassen Sie uns diesen aus diesem Grund tatsächlich löschen, haben wir auch gemacht, um die Erbschaft zu sehen. Lassen Sie uns jetzt eine weitere Variable erstellen. Nennen wir es Artikelname. Und für den Elementnamen, den Variablentyp, machen wir daraus eine Zeichenfolge. Klicken Sie auf Kompilieren. Und wie Sie wissen, ist eine Zeichenfolge nur eine Textzeile , sodass wir ihr tatsächlich einen Elementnamen geben können. Und wenn Sie es vergessen haben, warum haben wir nicht Texte anstelle einer Zeichenfolge gewählt? Der Grund, warum wir eine Zeichenfolge gewählt haben, ist, denken Sie daran, dass ein Text dasselbe ist, außer dass Sie sehen können, dass diese Flagge erscheint, wenn Sie Text auswählen. Und das liegt daran, dass Text lokalisierbar ist und das bedeutet, dass Sie alles, was Sie hier schreiben, in eine andere Sprache hier in Unreal Engine übersetzen können was Sie hier schreiben, in eine andere Sprache hier in Unreal Engine übersetzen . Also in Windows glaube ich schon, oder es ist tatsächlich in Tools. Hier können Sie sehen, dass wir ein sogenanntes Lokalisierungs-Dashboard haben . Und hier kannst du dein Spiel in verschiedene Sprachen übersetzen, z. B. Deutsch, Japanisch, Chinesisch, Arabisch, was auch immer. Sie können diese Textvariablen übersetzen. Wenn du jedoch eine Zeichenfolge auswählst und dein Spiel später übersetzen möchtest, wirst du das nicht tun können. Sie müssen Texte auswählen, um den Text zu übersetzen, den Sie hier schreiben möchten. Ich möchte also nichts übersetzen. Dieser Zeichenkettenname wird eigentlich nur als ID verwendet. Also lasst uns alles speichern. Ich wollte nur eine Saite sein. Jetzt haben wir diesen Artikelnamen in der Artikelbasis erstellt. Jetzt hat jedes einzelne Kind hier dieses Element namens Variablen. Also werde ich sie alle öffnen. Beim ersten. Sie können hier sehen, da steht Artikelname. Und wenn ich nur den vollständigen Blueprint-Editor öffne , um ihn Ihnen zu zeigen, und die Klassenstandardwerte für dieses Blueprint-Kind sind, können Sie die Elementnamenvariable bei Peers sehen. Jetzt können wir für den Artikelnamen Banane schreiben. Das ist die Bananenkompilation und für den Stiel und einen Trank nennen wir es Ausdauer, Ozean. Genau so für das Fleisch, nennen wir es Treffen. Und für die Wechseljahre gibt es hier tatsächlich Stimuli. Und was die Männer und den Zaubertrank angeht, nennen wir es Manier Ocean. Und für das Messer klicken Sie auf Klassenstandards, oder? Messer, kompiliere. Und für das Hackmesser: Let's write lever. Okay, und denken Sie daran, dass diese Ansicht mit dieser Schaltfläche hier oben erscheint. Das liegt daran, dass die, The Blueprint-Klasse leer ist und deshalb so angezeigt wird. Okay, jetzt haben wir alle Namen vergeben. Wir werden es jetzt nicht verwenden, aber wir werden es sehr, sehr bald verwenden und Sie werden sehen, warum ich diesen Namen variabel gemacht habe. Lassen Sie uns jetzt alles schließen und mit der nächsten Lektion fortfahren. 21. 4.04 Einführung in Strukturen: In Ordnung, jetzt, wo wir alle Elemente erstellt haben, sind wir tatsächlich bereit, die Informationen der Elemente zu erstellen. Also der Name des Gegenstands, die Miniaturansicht, also das Bild, das im Inventar erscheint , wenn Sie auf den Artikel hinweisen, die Kategorie des Artikels und so weiter. Bis alle Informationen für einen einzelnen Artikel vorliegen, müssen wir alle Informationen definieren. Bevor wir das also tun, können wir das tatsächlich innerhalb von Strukturen tun. Gehen wir zu Blueprints. Und hier klicken wir mit der rechten Maustaste und erstellen einen neuen Ordner. Nennen wir es. Du kannst die Strukturen nennen, aber ich nenne sie normalerweise einfach Strukturen. Das liegt an dir. Drinnen von hier. Klicken wir mit der rechten Maustaste. Gehen Sie zu Blueprints und wählen Sie diesen mit dem Namen Struktur oder diesen aus. Normalerweise verwende ich S t als Präfix für Strukturen. Und nennen wir es Artikelinfo, weil wir die Informationen für den Artikel erstellen wollen. Doppelklicken Sie darauf und Sie werden sehen meine Struktur aussieht. Eine Struktur ist also nur eine Sammlung von Variablen. Also anstatt zu den Artikeln zu gehen und z.B. hier in die Artikelbasis. Anstatt hierher zu gehen und Variablen zu erstellen, z. B. ob das Element stapelbar ist oder ob Sie vielleicht die Miniaturansicht für das Element haben möchten, oder vielleicht möchten Sie die Kategorie für die Augen haben , die Sie sehen können. Es geht hier um viele Variablen und manchmal wird es chaotisch, also machen wir das normalerweise nicht. Lassen Sie mich sie einfach hier löschen. Aber Sie können hier eine Struktur erstellen . Sie können alle Variablen erstellen. Z.B. Ich wollte den Artikelnamen, ich möchte z.B. den Münzwert für diesen Artikel, wenn ich ihn verkaufen möchte und Sie können wählen, um welchen Typ diese Variable es sich handelt, z. B. für die Münzen kann ich einen Float wählen, und für den Namen kann ich vielleicht einen Text auswählen , weil ich ihn später übersetzen möchte. Jetzt haben wir all diese Variablen innerhalb einer Struktur. Also das Coole ist jetzt, wenn ich zum itembasierten Beispiel gehe . Kann hier eine neue Variable als Variablentyp erstellen. Ich kann den Namen der Struktur eingeben. Also SC, Artikelinfo und ich kann es hier auswählen und speichern. Und jetzt kannst du sehen, ob ich auf meine Variable klicke. Jetzt habe ich hier alle Informationen für diesen Artikel. So kann ich die Artikelinformationen innerhalb dieser Struktur haben. Und wenn ich auf einen Bauplan meines Kindes klicke, sehe ich hier in der Klasse die Standardwerte. Sie können jetzt all diese Informationen sehen, den Namen des Artikels, den Münzwert und alle Variablen , die Sie hinzufügen. So sehr cool. Strukturen sind nur eine Sammlung von Variablen, die Sie hier definieren. Okay, also lasst uns das alles vorerst löschen und lasst uns es hier aus dem Item-based löschen, weil wir etwas viel Cooleres als das erstellen werden. Lass mich alles retten. Nun, da Sie wissen, was eine Struktur ist, lassen Sie uns mit der Erstellung der Artikelinformationsstruktur fortfahren. 22. 4.05 Struktur der Artikelinformationen: Ordnung, lassen Sie uns weitermachen und die Artikelinformationsstruktur erstellen . Klicken wir auf Strukturen. Öffnen wir nun die Artikelinformationsstruktur. Und hier wollen wir den Namen des Artikels. Lassen Sie uns eine neue Variable erstellen. Wir wollen ein Vorschaubild, also das Bild, das im Inventar erscheint, wenn wir Dyson anspielen. Und der Typ hier ist eine Textur 2D, was einfach ein Bild bedeutet. Und wählen Sie es hier aus, Objektreferenz. Und lassen Sie uns eine neue Variable erstellen. Und wir wollen das z.B. wollen wir eine Beschreibung des Artikels. Das musst du nicht. Es hängt davon ab, welches Spiel Sie erstellen. Manche Spiele haben keine Beschreibung, aber lass sie uns einfach hier hinzufügen. Ich weiß nicht, ob wir es brauchen oder nicht, aber wir könnten es brauchen. Lassen Sie uns also eine Beschreibung für den Artikel erstellen. Wir können die Kategorie für den Artikel festlegen. Wählen wir also diesen als Variablentyp. Ich bin tatsächlich ein Scheck, das ich hier vergessen habe. In den Enums sind wir also noch nicht erstellt. Also in der Aufzählung kannst du es tatsächlich erstellen, wenn du willst, als Übung in der Aufzählung möchte ich eine Aufzählung mit den Kategorien für das Element. Wir haben also die Kategorie Waffen, Nahrung und Zaubertränke, in der du sie erstellen und der Struktur hinzufügen kannst , wenn du möchtest. Versuchen wir es jetzt zusammen Ich klicke mit der rechten Maustaste hier, gehe zu Blueprints und wähle Aufzählung. Diese eine Artikelkategorie. Ich werde es öffnen und innerhalb dieser Liste. Denken Sie also daran, dass eine Aufzählung nur eine Liste von Elementen ist. Also hier möchte ich eine Liste von Kategorien. Ich sage Waffen. Der nächste, den ich hinzufügen werde, ist Essen, und der dritte ist Ozeane. Wir haben also diese drei Artikelkategorien. Und gehen wir jetzt zurück zu den Artikelinformationen für die Kategorie, ich wähle sie hier aus und sage E-Artikelkategorie. Also, wie auch immer Sie die hier gewählte Aufzählung nennen. Beim nächsten werde ich sagen, ich schicke den Unterricht. Und die Gegenstandsklasse ist nur so, dass wir den Gegenstand in der Welt spawnen können , wenn wir ihn aus dem Inventar fallen lassen. Wählen wir es also hier aus und suchen wir nach der Artikelbasis. Denken Sie daran, dass wir die Artikelbasis erstellt haben. Dies ist nun die hier ausgewählte Artikelklasse und wählen Sie die Klassenreferenz aus. Sehr wichtig. Die Klassenreferenz im Unterschied zur Objektreferenz darin, dass die Klassenreferenz verwendet wird, wenn Sie Dinge erzeugen. Wir wollen den Gegenstand also spawnen , wenn wir ihn aus dem Inventar fallen lassen, also benötigen wir seine Klasse. Fügen wir nun ein weiteres hinzu und nennen es ist auf Summable. Können wir diesen Artikel also trinken oder essen? Und boolesch, das ist nur eine Ja- oder Nein-Frage. Es ist also ein boolescher Wert und der andere ist stapelbar, also ist dieser Gegenstand in unserem Inventar stapelbar, können wir zwei Gegenstände und denselben Slot haben, drei Gegenstände und so weiter. Und das letzte, ich sage Max Stack Size. Also, wie viele Gegenstände können wir in einem Inventar-Slot haben, z. B. können wir 99 Bananen haben bevor wir einen weiteren, einen weiteren Stapel erstellen. Diese ganze Max Stack-Größe ist also nur eine Ganzzahl. In Ordnung, jetzt sind wir mit den Artikelinformationen fertig. Und anstatt die Artikelinformationen als Variable zum Eis und zur Basis hinzuzufügen , werde ich das mithilfe einer Datentabelle tun. Sie können also hier sehen, ich halte mich mit dem Wissen nicht zurück. Ich versuche dir tatsächlich zu zeigen wie wir das professionell in einem Spiel machen würden. Ich will es nicht auf die einfache Art machen. Lassen Sie uns tatsächlich etwas über Datentabellen lernen und ich zeige Ihnen eine sehr coole Methode zum Hinzufügen der Struktur. 23. 4.06 Einführung in Datentabellen: In Ordnung, lassen Sie uns jetzt über Datentabellen sprechen. wir also im Ordner Blueprints mit der rechten Maustaste, erstellen Sie einen neuen Ordner und nennen wir diesen Datentabellen. Klicken wir hier mit der rechten Maustaste und gehen Sie zu Verschiedenes. Und hier können wir eine sogenannte Datentabelle auswählen. Sie können hier sehen, dass wichtige Tabellenkalkulationstabelle auch als solche bezeichnet wird. Sie können es also hier anklicken. Und jetzt müssen wir auswählen, welche Struktur Sie verwenden möchten. Sie benötigen also eine Struktur, bevor wir eine Datentabelle erstellen können. Denken Sie daran, dass wir unsere Struktur bereits in der vorherigen Lektion erstellt haben. Jetzt können wir weitermachen und unsere Artikelinformationsstruktur auswählen . Und jetzt können wir auf OK klicken. Für diese Datentabelle können wir sie d t item info, data table, item info nennen . Öffnen wir nun diese Datentabelle. Und so sieht es aus, sehr, sehr einfach. Es zeigt dir nur Informationen. Sie können sehen, dass alle Ihre Variablen, die Sie in Ihrer Struktur erstellt haben , hier angezeigt werden. Und im Moment ist es leer. Sie können also auf Hinzufügen klicken, wenn Sie möchten, und Sie können sehen, was passiert, wenn Sie auf Hinzufügen klicken. Der Datentabelle wird hier ein Element hinzugefügt . Damit Sie sehen können, ob ich weiterhin Artikel hinzufüge, werde ich hier unten weitere Artikel hinzufügen. Was du hier machen kannst, indem du auf das erste klickst, z.B. kannst du für jedes einzelne Objekt in deinem Spiel sehen, du kannst dessen Namen, das Vorschaubild davon, definieren . Wir können die Beschreibung des Artikels, die Kategorie dafür, das Glas, z. B. die Banane, usw. definieren die Kategorie dafür, das Glas, z. B. . Sie können also sehen, Sie können Informationen für jedes einzelne Element definieren und sie auf eine gut strukturierte Weise in einer Datentabelle haben . Nun, das ist im Grunde das, was ein Tisch ist. Es enthält nur Informationen. Wir haben also die Struktur. Und mit dieser Struktur erstellen wir eine Datentabelle, sodass wir für jedes einzelne Element hier tatsächlich Informationen angeben können . Und wir werden es auf eine viel einfachere Art und Weise machen. Normalerweise benutzen wir es hier nicht. Also anstatt Delta-Tabellen gehen wir normalerweise nicht hier rein und schreiben den Namen, also das Thumbnail und so weiter. Ich zeige Ihnen einen umfassenderen Weg, dies zu tun. Also lass uns weitermachen und hier einfach für jeden einzelnen von ihnen auf Löschen klicken , entfernen, entfernen. Also jetzt ist es wieder leer. Und lasst uns alles speichern. Schließen wir es und fahren wir mit der nächsten Lektion fort Ich werde Ihnen zeigen, wie wir die Informationen für den Artikel hinzufügen können . 24. 4.07 Daten-Tabelle für die Artikelinformationen: Okay, jetzt möchte ich, dass du in Google Drive gehst. Wenn Sie noch keins haben, erstellen Sie bitte ein Konto. Oder Sie können Excel verwenden, wenn Sie Excel haben, aber normalerweise ist es der einfachste Weg es einfach hier zu verwenden, dass Google Sheets, wenn Sie ein Konto hier bei Google haben , zu Google Drive gehen, was Sie hier oben tun können. Und tatsächlich hier oben. Und Sie können Drive auswählen. Wenn Sie sich in Google Drive befinden, klicken Sie einfach mit der rechten Maustaste hier und erstellen Sie einfach ein neues Google Sheets. Und Google-Tabellen, ich nenne es einfach RPG-Inventartabellen, nur für den Fall, dass wir ein Vielfaches haben. Jetzt haben wir diesen hier und ich werde ihn einfach ein bisschen hübscher machen. Es liegt an Ihnen, wie Sie Ihre gestalten möchten. Okay, jetzt habe ich meins stilisiert. Ich benutze diesen nur in der Mitte. Ich benutze diesen und ich benutze diesen hier. Okay? Also noch ein sehr wichtiger Punkt, es liegt nur an Ihnen, wie Sie es gestalten möchten. Jetzt wollen wir hier oben ID schreiben. Also hier oben lasse ich sie einfach alle explodieren. Wir haben eine ID und jetzt müssen Sie tatsächlich jede einzelne Variable , die Sie hier geschrieben haben, in Ihre Strukturelementinformationen schreiben jede einzelne Variable , die Sie hier geschrieben haben . Wir haben also eine ID, die musst du zuerst haben. Und dann haben wir den Namen, dann haben wir das Vorschaubild, wir haben die Beschreibung. Und denken Sie daran, diese genau so zu schreiben , wie Sie sie hier in Ihrer Struktur geschrieben haben. Wenn Sie z. B. hier ein Leerzeichen haben, müssen Sie auch hier ein Leerzeichen haben. Schreiben Sie sie also genau so, wie Sie sie in der Kategorie Struktur geschrieben haben . Wir haben den Itemverlust, wir haben den Item On to Mobile und wir haben den ist stapelbar und der letzte, Max Stack Size. Okay, jetzt haben wir sie alle hier. Und was die ID angeht, der Grund, warum wir eine ID benötigen , ist, dass wir der Engine später im Spiel sagen, dass wir ihr hier eine ID geben und die ID, wenn du zu deiner Gegenstandsbasis zurückkehrst, denk daran, dass du in der Gegenstandsbasis diese Objektnamenvariable erstellt hast. Das wird hier also tatsächlich RID sein. Daran werden wir es dem Motor tatsächlich sagen. Also werden wir z. B. für diese Banane der Engine mitteilen , aus welcher Zeile wir diese Information entnehmen werden. Also wenn Sie z.B. die Idee von Banane haben , werden diese Informationen hier verwendet. Es weiß, dass es sich diese Zeile ansehen muss , in der die Ideen scheitern. Und es kennt das Vorschaubild der Banane und die Beschreibung und so weiter. diesem Grund haben wir diesen Artikelnamen erstellt und den Artikelnamen in jeden einzelnen Kinderbauplan geschrieben. Okay, wir müssen hier eigentlich jeden einzelnen Artikel hinzufügen , damit ich mich nicht genau daran erinnere. Lassen Sie mich es also einfach minimieren und das Google-Blatt wie dieses öffnen. Und jetzt können wir Banana Lever schreiben. Dann folgt Knife, Manier, Ocean und Meat und Stamina, Ocean. Und denken Sie daran, die ID für jeden einzelnen Ihrer Artikel genau so zu schreiben, wie Sie den Artikelnamen geschrieben haben. Denken Sie also daran, hier dasselbe zu schreiben. Es weiß also tatsächlich, aus welchen Informationen es extrahieren sollte. Also aus welcher Zeile sollte es extrahieren. Ich werde das alles kopieren und einfügen. Hier sind die Vorschaubilder. Sie können zur Benutzeroberfläche und zu den Symbolen gehen. Ich habe einige der Vorschaubilder für dich beigefügt. Für die Banane können Sie also mit der rechten Maustaste klicken und zu Referenz kopieren wechseln. Und jetzt können Sie hier hingehen und diese Referenz einfügen. So sieht es also aus. Es sieht komisch aus, aber jetzt weiß die Engine, wo sich diese Symbolbanane befindet weil Sie deren Position angegeben haben. Das Gleiche mache ich mit dem Hackmesser. Sie können mit der rechten Maustaste auf die clevere API-Referenz klicken. Und jetzt kann ich es hier einfügen. Aber die Messerreferenz füge es hier ein. Und dafür klicke ich einfach auf Nein. Und für die Wechseljahre Ihre Referenz und auch für das Fleisch. Und für den Ausdauerozean. Okay, ich werde jetzt einfach den ersten hier füllen und dann kannst du den Rest machen, weil es sonst ewig dauern wird. Für diese Beschreibung kannst du einfach eine Beschreibung für deine Artikel hinzufügen , z.B. für die Banane, ich kann eine leckere Banane schreiben oder so. Für die Kategorie „Denken in der Kategorie „Aufzählung es in der Kategorie „Aufzählung“ die Kategorie Waffen, Nahrung und Zaubertränke. Und das haben Sie auch in der Artikelinfo. Denken Sie daran, für die Kategorie diese Aufzählung zu verwenden. Es kann also jetzt einer dieser drei sein. Gehen wir zurück, z. B. die Banane eine, ist Nahrung, z. B. die Art, wie Zaubertrank Zaubertränke sind. Denken Sie daran, es genau so zu schreiben, wie Sie es hier geschrieben haben. Und für die Artikelklasse können Sie diese Referenz nicht erhalten, können Sie diese Referenz nicht erhalten indem Sie hier und zu den Artikeln gehen und mit der rechten Maustaste klicken und Referenz kopieren sagen. Denn wenn Sie das tun, ist dies eigentlich keine Artikelklasse. Das ist ein Item-Schauspieler. Also lass es uns von hier löschen. Normalerweise mache ich das wenn ich hier einfach zu einer Datentabelle gehe. Und ich werde hier einfach einen zufälligen Gegenstand herstellen. Und wählen wir eine Artikelklasse aus, z. B. die Banane. Ich klicke hier mit der rechten Maustaste darauf und klicke auf Kopieren. Jetzt kann ich zu meinen Google Sheets zurückkehren und es hier einfügen. Und das ist das richtige für Artikelklassen. Also hier für die letzte Referenz hier, richtige ist, wenn Sie die vom Blueprint generierte Klasse sehen , ist dies die richtige. Okay, jetzt haben wir die Banane hier und was Sie tun können, ist, Sie können das einfach kopieren , hier einfügen und Sie können den Namen der Banane einfach in Hackmesser ändern . Und dieser hier auch. Also zweimal Hebel, Hebel. Es kann das tun, der Rest ist konsumierbar. Es ist nur ein Ja oder Nein. Normalerweise gehe ich in Google Sheets zu Formatieren und führe die bedingte Formatierung durch. Und statt hier wähle ich für die Formatregel, ich wähle Text aus, der genau hier ist. Wir können falsch sagen. Und es zeigt auf Rot, oder die Farbe wird rot sein, wenn es falsch ist. Und ich füge eine weitere Regel hinzu und ändere sie auf wahr. Und dann ändere die Farbe auf Grün, wenn es stimmt, einfach so. Jetzt kann ich sehen, ob ich hier falsch schreibe, wird es rot, pyrit, wahr, es wird grün. Und das ist für Boolesche Werte hier. Immer wenn man einen booleschen Wert nimmt, sagt er „wahr“, so wie hier. Immer wenn Sie es deaktiviert haben, wird falsch angezeigt. Das ist also sehr cool. Lassen Sie mich das jetzt einfach löschen und stattdessen klicke ich auf Einfügen und wähle ein Kontrollkästchen aus. Ich sehe nach dieser Checkbox, wenn sie nicht angekreuzt ist, ist sie rot. Wenn es angekreuzt ist, was wahr ist. Es ist tatsächlich so grün. Meiner Meinung nach ist es viel cooler . Sie können dies einfach so auf alle Ihre Artikel ziehen . Lassen Sie mich es tatsächlich auf false setzen, bevor ich das mache, ziehen Sie es einfach so auf alle Elemente. Und ich denke, das ist viel sauberer. Okay. Nachdem Sie alle Informationen für jeden einzelnen Artikel eingegeben haben , können Sie auf Datei und dann auf Herunterladen klicken und als CSV-Datei herunterladen . Jetzt klicke ich hier und zeige es im Ordner hier in meinem Download-Ordner an. Jetzt kann ich es umbenennen und Sie können es in genau den gleichen Namen umbenennen , den Sie Ihrer Datentabelle gegeben haben. Also nennen wir die DT-Artikelinfo. Und jetzt kann ich meinen Motor öffnen und hier werde ich alles schließen. Ich gehe zu meiner Datentabelle. Und hier möchte ich, dass du importierst , dass es zu deinem Motor fähig ist. Was Sie also tun können, ist einfach darauf zu klicken und in diese Datentabelle zu ziehen. Und jetzt heißt es Import. Es ist okay, cool. Lassen Sie uns hier darauf klicken und sehen, ob wir Fehler haben. Jetzt kann ich sehen Sehr coole Möglichkeit, alle Informationen auszufüllen. Jetzt haben wir also z.B. für die Banane den Namen, das Vorschaubild, wir haben die Beschreibung, die Kategorie, die Artikelklasse. Wenn es konsumierbar und stapelbar ist und die maximale Stapelgröße hat, dann haben wir sie für jeden einzelnen Gegenstand. Dies ist der einfache Weg, dies hier in der Datentabelle zu tun. Und der Grund auch, wenn Sie Nicht-Programmierer in Ihrem Team haben, z. B. Spieledesigner und was auch immer. Es ist viel einfacher für sie einfach Informationen aus Datenblättern zu ändern und sie hier herunterzuladen und einfach in das Spiel zu importieren. Auf diese Weise ändern sie automatisch alle Informationen für die Artikel. So sehr cool. Wenn du einen Gamedesigner hast, der nichts über Programmieren weiß, kann er diese Informationen einfach ändern, z. B. könntest du so etwas wie den Münzwert haben und du kannst wie viel es kostet, diese Artikel im Shop zu kaufen. Und die Leute können hier einfach die Werte ändern. Wichtige Informationen, und sie werden hier automatisch geändert. Ordnung, jetzt, da dies erledigt ist, lassen Sie uns eine Bibliotheksfunktion erstellen, in der ich Ihnen zeige , wie Sie Informationen aus jeder Zeile extrahieren. 25. 4.08 Item: Ordnung, also lass uns weitermachen und auf den blauen Openness-Ordner klicken. Lassen Sie uns mit der rechten Maustaste klicken und einen neuen Ordner namens Libraries erstellen. Und hier klicken wir mit der rechten Maustaste. Gehe zu Blueprints und wähle die mit dem Namen, Lass uns hier sehen, Blueprint-Funktionsbibliothek, hier eine Bibliothek und nenne sie PP-Funktionsbibliothek, weil wir nur eine haben können. Die Funktionsbibliothek , wenn Sie sie öffnen. Es ist im Grunde eine Funktionsbibliothek , sodass wir hören können, dass Sie einfach neue Funktionen hinzufügen können. Im Grunde haben Sie eine Bibliothek von Funktionen, die Sie hier erstellen. Das Coole an einer Bibliothek ist, dass Sie sie global nutzen können. Also z.B. hier, sagen wir mal, haha, ich weiß es nicht. Wir werden diese Funktion einfach hahaha nennen. Und jetzt im Player können wir einfach hier zum Player gehen und mit der rechten Maustaste klicken und sagen, hahaha. Und jetzt können wir sehen, wir können diese Funktion tatsächlich aus der Funktionsbibliothek aufrufen und hier verwenden. Was auch immer wir also als Funktionsbibliothek erstellen, wir können sie global in jedem beliebigen Blueprint verwenden . Also nur, nur damit du es weißt, dein Spiel kann sehr langsam werden wenn du hier Hunderte von Funktionen hast. Es ist also eine schlechte Praxis, Funktionen hier anstelle der jeweiligen Baupläne zu erstellen hier anstelle der jeweiligen , wenn Sie sie nicht benötigen. Aber für die Artikelinformationen, die Artikelinformationen, benötigen wir sie tatsächlich in mehreren Bauplänen. So müssen Sie also Funktionsbibliotheken verwenden. Du musst dir überlegen, wie oft du diese Funktion verwenden wirst , wenn du sie im Player und im Player-Controller verwenden willst, vielleicht wirst du sie in einer anderen Blueprint-Klasse verwenden. Wenn Sie es mehrmals verwenden möchten, ist es viel besser, es einfach in die Funktionsbibliothek aufzunehmen. Sie müssen es also nicht in jeder einzelnen Blueprint-Klasse immer wieder schaffen . Lassen Sie uns hier eine neue Funktion erstellen. Klicken wir auf F2 , um den Namen zu ändern. Ich rufe es an, um Artikelinformationen zu erhalten. Für dieses Abrufen von Elementinformationen möchte ich mit der rechten Maustaste hier klicken und sagen, dass es an einer Tabellenzeile, einer Datentabelle, liegt sagen, dass es an einer Tabellenzeile, . Okay? Also müssen wir für diese hier auswählen, welche Datentabelle wir sprechen? Ich spreche von DDT-Artikelinformationen. Und was ist das Element oder wie lautet der Zeilenname. Jetzt können Sie hier sehen, wann wir einen Zeilennamen auswählen, z. B. das Messer, und wir diese Funktion ausführen. Es weiß, dass es hier Informationen aus der Messerreihe nehmen muss . Wenn ich also mein Google Drive erneut öffne, nimmt es Informationen von dieser ID, die hier das Messer ist. Und dann kennt es all diese Informationen , die hier herauskommen. Denn wenn du es hier nimmst und Pause sagst, dann zerlegst du diese Information in all diese Variablen, die du erstellt hast. Wenn wir also den Zeilennamen Messer auswählen, weiß es jetzt, was das Messer-Miniaturbild ist, die Beschreibung und die Kategorie, da Sie all diese hier in Ihrer Datentabelle in Google Drive definiert haben . Und der Grund, warum es weiß , welchen Zeilenelementnamen Sie haben, ist, dass Sie in jedem einzelnen Element, denken Sie daran, diese Variable namens Elementname definiert haben. Also für das Fleisch z.B. braucht es dieses Ding, das du hier geschrieben hast und den Artikelnamen treffen. Wir werden es hier durchgehen. Denken Sie daran, dass dies eine Zeichenkettenvariable ist. Du gehst zu derselben Basis. Wir haben das hier als String-Variable erstellt. Und die Artikelinformationen, ich werde nur eine Zeichenfolge eingeben , die wir später verwenden können, um sie hier einzufügen. Und nennen wir es Artikelnamen. Okay, wir haben also diesen. Und wenn Sie jetzt zur Datentabelle gehen, liegt ein kleiner Fehler vor, wenn wir das nicht tun. In der Datentabelle sehen Sie hier, dass die ID keine Leerzeichen enthält. Obwohl Sie also ein Leerzeichen in Ihrem Google Drive oder Google Sheets eingefügt haben, können Sie hier sehen, dass Sie ein Leerzeichen haben, aber das Leerzeichen wird hier automatisch entfernt. Also z.B. für den Zaubertrank, wenn ich zum Punkt Ausdauertränke gehe und sehe hier hast du ein Leerzeichen geschrieben. Für die Datentabellen dürfen sie jedoch keine Leerzeichen in der ID enthalten. Auf diese Weise müssen wir tatsächlich etwas tun , weil all Ihre Artikel Platz haben. Dies ist die Datentabelle, hat keine Leerzeichen und sie bringt Ihnen Geld ein und Sie wissen nicht, wovon Sie sprechen. Also müssen wir die Leerzeichen von all diesen entfernen , so wie wir das machen, ist hier in der Funktion, fahren Sie einfach von hier aus und sagen Ersetzen. Also holen wir uns den Gegenstand des Namens. Wir werden ersetzen, schreiben Sie einfach als Leerzeichen hier vorne. Nur ein Leerzeichen. Und das war's. Es wird also alle Leerzeichen durch nichts ersetzen, was bedeutet, dass es diese Basis entfernt. Und dann wird es den Zeilennamen bekommen. Auf diese Weise können wir alle Leerzeichen , die wir erstellt haben, einfach so entfernen . Und lassen Sie uns diesen vorerst von hier aus löschen und sagen Return-Node. Und ziehen Sie das jetzt in den Return, um hier automatisch eine Ausgabe der Artikelinformationen zu erstellen. Und nennen wir das eine Artikelinfo. Das war also die Funktion, die wir brauchen, um alles zu erstellen, zu kompilieren und zu speichern. Also das coole ist hier, z.B. auf dem Player, wir können jetzt sagen, Iteminfo abrufen. Das ist die Funktion, die wir gerade gemacht haben. Und Sie können hier sehen, wir müssen die Pins von hier aus nicht wirklich verbinden, da Sie sie in Blueprint normalerweise hier verbinden , weil Sie Informationen festlegen. Aber diese, diese grünen , wie Sie hier sehen können, haben das nicht und das liegt daran , dass sie nur Informationen erhalten. Sie geben keine Informationen ein. Aber wir müssen es hier nicht durchgehen lassen. Um hier Informationen zu erhalten, kehren wir zur Funktionsbibliothek zurück. Sie können Artikelinformationen abrufen, auf Pure klicken und jetzt kompilieren. Und gehen wir zurück zum Spieler. Jetzt können wir sagen, Artikelinformationen abrufen. Und Sie können sehen, hier wird es, es wird stattdessen zu einer Get-Funktion. Deshalb drückst du auf Pure. Okay, jetzt können wir diese Artikelinformationen abrufen. Dann müssen wir nur noch angeben welchen Artikel wir sprechen. Das machen wir später. Wir werden das also dynamisch über das Inventar machen je nachdem, welchen Gegenstand du auswählst oder vom Boden plünderst. Also wird es ihm den Gegenstand geben , z. B. spielen wir auf den Stängel in einem Trank aus dem Boden an. Okay, das wird hier durchgehen. Hier wird der Rollenname stehen, Ausdauertränke. Und jetzt weiß es bereits, von welchen Informationen Sie sprechen , weil Sie all diese Informationen hier definiert haben . also in der Ausgabe hier ziehst Wenn du also in der Ausgabe hier ziehst und Pause sagst, kennt es jetzt die Kategorie „ Ausdauer“, „Zaubertränke“, „ Thumbnail-Beschreibung“ und so weiter. Also sehr, sehr cooles Zeug. Wir sehen uns in der nächsten Lektion. 26. 5.01 Erstellen der Inventory: Um die Inventarkomponente zu erstellen, gehen wir zum Ordner Blueprints. Und hier klicken wir mit der rechten Maustaste und erstellen einen neuen Ordner, und ich nenne ihn Komponenten. in diesem Ordner mit der rechten Maustaste und klicken Sie auf Blueprint-Klasse. Also hier werden wir diese Akteurkomponente erstellen. Dies ist im Grunde die Inventarkomponente, die wir erstellen. Also lass uns darauf klicken. Und ich gebe ihm ein, ein Präfix von AAC für Actor-Komponente und nenne es Inventar. Ordnung, wenn Sie also darauf doppelklicken, sieht es einfach so aus und ein gewöhnlicher Bauplan, wie Sie ihn inzwischen gewohnt sind. Also lasst uns vorerst nicht hier in diesem arbeiten. Lass uns zu den Bauplänen gehen und den Spieler tatsächlich finden. Innerhalb des Player-Ordners und des Players sowie innerhalb des Players können wir nun die Inventarkomponenten hinzufügen. also hier in den Komponenten Klicken Sie also hier in den Komponenten auf Hinzufügen und suchen Sie dann nach dem AAC-Inventar, das Sie gerade erstellt haben. Und hier haben wir es. Jetzt haben wir das Inventar. Aber im Moment können wir damit nicht wirklich viel anfangen. Das war es also für diese Lektion, nur das Hinzufügen, Erstellen und Hinzufügen dieser Inventarkomponenten. Also lasst uns weitermachen. 27. 5.02 Inventory: Bevor wir mit unserer erstellten Inventarkomponente weiterarbeiten können . Lassen Sie uns fortfahren und zwei weitere Strukturen erstellen. Diese letzte Struktur in der Kategorienstruktur fehlt uns . Gehen wir also zum Ordner Strokes. Hier haben wir die Artikelinfo erstellt. Jetzt klicken wir erneut mit der rechten Maustaste hier und gehen zu Blueprints und wählen Struktur aus. Diesen werden wir Inventarplätze nennen. Und lassen Sie uns hier reingehen und wissen, wie die Inventarstellplatzstruktur aussieht. Es enthält im Grunde Informationen darüber was sich in diesem bestimmten Inventarplatz befindet. Denken Sie daran, dass wir hier in der Benutzeroberfläche diesen Inventarplatz erstellt haben. Wir haben also im Grunde eine Struktur, die Informationen darüber enthält , was der spezifische Slot im Inventar enthält. Also zunächst einmal enthält es den Artikel. Also, was auch immer wir geladen haben und den Artikel, wenn Sie hier klicken, denken Sie daran, dass wir eine Struktur namens Artikelinfo erstellt haben . Es enthält also diesen Artikel in den Folien. Zweitens enthält es auch, wie viele dieser Artikel wir haben, die Artikelmenge, und dies ist nur ein ganzzahliger numerischer Wert. Dann enthält es das Widget selbst. Also nenne ich es Inventory Slot. Anschließend haben wir die Benutzeroberfläche ausgewählt und den WB-Inventarslot erstellt, sodass er die Inventar-Slot-Variable selbst enthält. Und als letztes möchte ich einen Slot-Index hinzufügen , den wir später verwenden können. Mach dir darüber vorerst keine Sorgen. Aber der Slot-Index ist nur, von welchem Inventarplatz sprechen wir? Denn denken Sie daran, wenn Sie eine Inventur erstellen, haben Sie viele, viele Steckplätze im Inventar. Es ist also immer schön , ihnen einen Index zu geben , den Sie später bei Bedarf verwenden können. Und das war es für den Inventarplatz. Fahren wir also mit der nächsten Lektion fort. 28. 5.03 Inventory und Datentabelle: Lassen Sie uns nun fortfahren und die Struktur für die Kategorien erstellen . Gehen Sie also zurück zum Strukturordner, klicken Sie erneut mit der rechten Maustaste und gehen Sie zur Blueprints-Struktur. Und nennen wir das eine Inventarkategorie. Öffnen wir das hier oben. Dieser ist sehr einfach. Es wird einfach enthalten, welche Kategorie wir sprechen. Und wieder haben wir diese Aufzählung namens Artikelkategorie, diese hier, Artikelkategorie. Und das zweite, was wir brauchen ist das Symbol für die Kategorie. Also, wie sieht es aus? Oh, Kategoriesymbol. Und wir haben ein paar Icons für die Kategorie. Nun, dieser Typ hier ist eine 2D-Textur. Textur 2D, einfach nur ein Bild. Diese eine Textur 2D hier in den Assets, eigentlich hier unten in der Benutzeroberfläche, wir haben Symbole und wir haben Symbole für die Kategorien. Also zum Beispiel die Waffenkategorie ist dieses Messer hier haben wir die Kategorie und das Symbol selbst. Als Nächstes müssen wir eine Datentabelle dafür erstellen, genau wie zuvor. Also werde ich das hier öffnen. Dies ist die Datentabelle mit den Artikelinformationen. Und hier unten nenne ich es DT-Artikelinfo. Ich erstelle ein neues, indem ich hier unten auf das Plus klicke. Ich nenne das eine DT-Inventarkategorie. Ich werde diese Tabellen einfach ziehen. Sind diese Felder hier etwas breiter? Einfach so. Okay, also genau wie zuvor hier oben haben wir eine ID. Und dann erinnere dich an die Struktur, die du erstellt hast, wir haben die Kategorie und dann haben wir das Kategoriesymbol. Ich werde sie hier oben mutig machen. Für die ID schreiben wir also einfach den Namen der Kategorie. Denken Sie daran, wir haben Waffen , wir haben Nahrung und wir haben Quotienten. Ich kopiere das einfach hierher zurück. Denken Sie auch hier daran, dies genau so zu schreiben , wie Sie es hier in der Aufzählung geschrieben haben, sonst funktioniert es nicht. In der Elementkategorie Zähleraufzählung sind dies also Ihre Kategorien. Denken Sie also daran, dass wir sie in der Datentabelle genau so angeben müssen. Nun müssen wir für das Kategoriesymbol Referenzen kopieren. Also gehe ich zurück zu der Benutzeroberfläche und den Symbolen. Nun zur Kategorie dieser Waffe, ich habe diese. Also klicken Sie mit der rechten Maustaste, genau wie zuvor mit den Elementen, klicken Sie mit der rechten Maustaste, kopieren Sie eine Referenz und kehren Sie hierher zurück. Nun zum Essen, schauen wir mal, welches es war. Es war diese eine Lebensmittelkategorie. Klicken Sie mit der rechten Maustaste auf Ihre Referenz, probiert. Und für die Zaubertränke hier, Konsumgüter, Ozeane. Klicken Sie mit der rechten Maustaste, kopieren Sie Ihre Referenz und fügen Sie sie hier ein. Jetzt sind wir mit diesem im Grunde fertig. Also klicken wir auf Datei, laden Sie sie als CSV-Datei herunter Ich benenne diese CSV-Datei hier in die DT-Inventarkategorie um. Und bevor wir etwas tun, gehen wir zurück zum Motor. Gehen Sie zu Datentabellen und klicken Sie mit der rechten Maustaste hier, gehen Sie zu Verschiedenes und wählen Sie dann Datentabelle. Jetzt müssen wir auswählen , von welcher Struktur wir sprechen? Wir sprechen von der Inventarkategoriestruktur, okay, und nennen wir diese eine DT-Inventarkategorie. Jetzt können Sie erneut zum Download-Ordner gehen. Wir können dies auf diese Datentabelle ziehen und es wird automatisch alles importiert. Öffnen wir es jetzt und schauen, ob alles korrekt ist und überprüfen Sie einfach alles, was Sie sehen können, dass alles korrekt importiert wurde. Und jetzt speichern wir alles. Ihre letzte Sache, die wir noch einmal tun müssen, wir müssen eine Bibliotheksfunktion erstellen. Gehen wir also zur Funktionsbibliothek der Bibliothek. Und hier erstellen wir wie zuvor eine neue mit dem Namen Get category info. Oder vielleicht ist es besser, es Get's Inventar Category Info zu nennen . Wir sind also genau darüber, wovon wir sprechen. Auch hier füge ich wie zuvor eine Zeichenketteneingabe hinzu. Und nennen wir diese eine Kategorie. Und genau wie zuvor gehe ich einfach in die Artikelinfo und kopiere das einfach hier. Denken Sie daran , dass wir hier nur ein Leerzeichen geschrieben haben , damit wir alle Leerzeichen entfernen. Wir ersetzen sie durch nichts. Also gehe ich zur Inventarkategorie, füge sie hier ein und verbinde die Quellzeichenfolge. Und von hier aus können wir die Zeile Get Data Table sagen. Wie zuvor wählen wir unsere DT-Inventarkategorie aus. Und was den Namen angeht, steht er hier unten. Und für die Ausgabe, die wir jetzt können, können wir einen Rückgabeknoten an einem Rückgabeknoten bekommen. Und dann wieder, genau wie zuvor, ziehen Sie es jetzt in den Return, um hier automatisch eine Variable zu erstellen und sie Category Info zu nennen. Okay, jetzt können wir es wie zuvor benutzen. Jetzt können wir überall in jedem Blueprint hingehen und diese Informationen abrufen. Also z.B. ich kann zum Player gehen und hier können wir Kategorie-Info sagen. Und wie ihr wieder sehen könnt, ist das eine Set-Funktion, also müssen wir zurück zu unserer Bibliothek gehen, bevor ich es vergesse, auf die Kategorie-Info klicken sie auf Pure setzen. Und jetzt kannst du sehen, dass es rein ist. Es geht nur darum, Informationen zu erhalten. Also müssen wir, wir müssen es nicht einstellen. Also hier müssen wir den Kategorienamen schreiben. Dies wird später automatisch eingestellt. Das haben wir also bisher gemacht. Wir haben eine Inventarstruktur erstellt. Und dann haben wir hier eine Datentabelle in Google Sheets erstellt und das Wichtigste ist hier. Und dann haben wir eine Bibliotheksfunktion namens get inventory category info erstellt eine Bibliotheksfunktion , die nur Informationen über den Zeilennamen abruft, den wir später hier eingeben. Und wir können diese Informationen bekommen. 29. 5.04 Erstellen der Inventory: Lassen Sie uns fortfahren und die Variablen für das Inventar erstellen . Kehren wir also zum Komponentenordner in der Inventarkomponente zurück , die wir zuvor erstellt haben. Öffnen wir den vollständigen Blueprint-Editor. Hier müssen wir ein paar Variablen erstellen. Zunächst müssen wir eine Variable namens Anzahl der Slots erstellen . Also müssen wir definieren, wie viele Slots unser Inventar hat? Und der Typ ist eine Ganzzahl, weil es nur ein numerischer Wert ist, wie Sie hier sehen können. Und das nächste, was wir hinzufügen müssen, ist die ausgewählte Inventarkategorie. Später müssen wir also festlegen, welche Kategorie wir ausgewählt haben. Diese ist eine iGEM-Kategorie, genau wie diese. So können wir später definieren, welche Kategorie wir ausgewählt haben je nachdem, welche Schaltfläche der Kategorie wir drücken. Vorerst können wir es einfach so sein lassen. Als Nächstes müssen wir die Kategorien erstellen, die wir haben. Wir müssen also alle Elemente, die wir aus dem Boden entfernen, in Variablen haben, die wir enthalten können. Also haben wir zuerst die Kategorie Waffen und dann haben wir die Kategorie Lebensmittel und dann haben wir die Ozeane als Abfrage. Und denken Sie daran, dass wir für die Kategorie hier in den Strukturen diese Inventarplätze erstellt haben. Dieses Inventarfeld enthält den Artikel, die Menge, das Inventarfeld selbst, das Widget selbst und den Folienindex. Das sind also eigentlich die Kategorien. Also klicken wir hier und sagen Inventarplätze und wählen diese Struktur hier aus. Wenn Sie es jetzt kompilieren, können Sie sehen dass Sie diesen Slot hier haben. Für eine Kategorie haben wir jedoch mehrere Steckplätze. Für jede Kategorie haben wir also 16 oder wie viele Slots In diesem Fall wählen wir für dieses Spiel 16 Slots. Für die Kategorien. Sie enthalten nicht nur einen Artikel. Denken Sie daran, dass sie für jede Kategorie die Anzahl der Slots enthalten , die wir hier festgelegt haben. Also zum Beispiel, wenn wir 16 Slots haben, hat die Waffenkategorie 16 Plätze, die Kategorie Essen hat 16 Plätze und so weiter. Anstatt es also wie eine normale Variable zu haben, müssen wir den Variablentyp in ein Array ändern. Ein Array ist einfach ein Container, in dem wir mehrere dieser Strukturen haben. Also auf ein Array klicken und kompilieren, und jetzt werde ich kompilieren. Sie können hier sehen, wenn ich auf das Plus klicke, jetzt haben wir diesen einzigen Slot innerhalb dieser Kategorien. Also hier in diesem Slot enthält es einen Artikel und die Menge. Und wenn ich erneut auf Plus klicke, enthält es einen anderen Artikel und die Menge und so weiter. Sie können sich also vorstellen, dass wir für eine Kategorie 16 Artikel hier haben, in der unteren Reihe hier. Jetzt können Sie also sehen, dass es Sinn macht, dass wir ein Array benötigen , da es nicht nur einen Inventarplatz enthält. Es enthält mehrere Inventarplätze. Ich werde all diese Slots hier löschen. Wir werden sie dynamisch im Spiel hinzufügen. Wir müssen hier dasselbe für die Lebensmittelkategorie tun, nach Lagerbeständen suchen. Und hier nochmal Inventarplätze und denk daran, sie in ein Array umzuwandeln. Also auch dieses oder ein Array und die Ozeane hier unten zu einem Array und klicken Sie auf Kompilieren und speichern Sie alles. Und jetzt haben wir das bisher. Also werden wir die Anzahl der Slots festlegen. Gehen wir eigentlich zurück zum Spieler. Der Spieler öffnet es. Und wenn Sie auf die Inventarkomponente klicken, können Sie jetzt sehen, dass wir diese Variablen haben, mit denen wir mit der Anzahl der Folien spielen können. Ich werde eigentlich 16 setzen, weil das mein Inventar ist und ich 16 Steckplätze habe. Wenn Sie mehr Spielautomaten möchten, können Sie Ihrem Spiel weitere Slots hinzufügen. Und was das ausgewählte Inventar angeht, werden wir es dynamisch in das Spiel integrieren, je nachdem, auf welche Kategorie wir drängen. Das Gleiche gilt für die Kategorien, wir setzen sie auch dynamisch im Spiel ein. Das war es also vorerst. Denken Sie daran, die Schlammmenge für Ihr Inventar festzulegen , und lassen Sie uns weitermachen. 30. 5.05 Ändern der Größe der Inventory: Hier befinden wir uns in der Inventarkomponente. Und bevor wir diese Arrays hier verwenden können, müssen wir die Größe der Arrays ändern. Wenn Sie also ein Array und eine Variable eines Array-Typs erstellen , müssen Sie die Größe des Arrays ändern, bevor wir es tatsächlich verwenden können. Und für dieses Array werden wir es tatsächlich in der Größe ändern, je nachdem wie viele Steckplätze für das Inventar wir haben. Ich werde das hier löschen und mit der rechten Maustaste klicken und benutzerdefinierte Ereignisse sagen. Und nennen wir das einfach initialize inventory, weil wir es als erstes ausführen werden. Hier unten. Lassen Sie uns das mit den Kunden besprechen. Also CL, initialisieren Sie das Inventar für die Replikation, die auf dem eigenen Client ausgeführt wird und zuverlässig ist. Und denken Sie daran, den Client hier oben und die normalen benutzerdefinierten Ereignisse einfach so auszuführen . So sehr, sehr einfach. Wir nehmen hier eine der Variablen. Und für das Array können Sie einfach Array schreiben, wenn Sie wissen möchten , welche Funktionen Sie für ein Array erstellen können. Und dann können Sie tatsächlich sehen, dass all diese für das Array bestimmt sind , und Sie können damit spielen, wie Sie möchten. Aber vorerst sagen wir Größe ändern, dass wir die Größe dieses Arrays ändern. Die Größe ist nur die Anzahl der Slots, die wir hier erstellt haben. Also wird es seine Größe ändern, dieses Array soll 16 Steckplätze haben. Denken Sie also daran, im Player, im BP-Spieler hier, ob Sie auf die Inventarkomponente klicken, je nachdem, wie viele Slots Sie hier ausgewählt haben. Also hier für dieses Spiel erstelle ich nur 16 Slots. Also wird es dieses Array so umdimensionieren , dass es auch 16 Steckplätze hat. Lass uns das auch für das Essen direkt von hier aus machen und sagen Größe ändern und auch für den Trank, ziehe hierher und sage Größe ändern. Verbinde jetzt alles. Und aus dieser Anzahl an Steckplätzen kannst du auch hier ziehen und verbunden sein. Wenn Sie auch hier besser organisiert sein möchten, können Sie auf Knoten warten, umgeroutet doppelklicken. Und nur so kannst du alles auswählen und Q und das Schlüsselwort drücken , damit alles so klar wird. Und denken Sie daran, dass Sie dieses Ereignis irgendwo ausführen müssen , damit es läuft, denn im Moment führen wir dieses Ereignis nirgends in unserem Code durch. Also lass es uns einfach hier für den Spieler ausführen , wann immer der Spieler spawnt. Also hier am Anfang spielen wir, lassen Sie es uns einfach hier ausführen und wir können aus diesem AAC-Inventar ableiten. Denken Sie daran, dass dieser AC unser Inventar inventarisiert , sodass wir dies Ereignisse nennen können, sodass wir initialize inventory können und das hier am Anfang tun können. Wenn Sie sehen möchten, ob das funktioniert, denn wenn Sie jetzt auf Play klicken, können Sie nichts wirklich sehen da hier nur die Größe geändert wird. Aber manchmal ist es sehr schön, Druckknoten zu verwenden. Also wenn String und hier kannst du vielleicht einfach diesen nehmen, z.B. und Länge sagen. Was ist die Länge dieses Arrays hier? Also verbinden wir es mit dieser Druckzeichenfolge. Und jetzt lasst uns kompilieren. Klicke auf Abspielen. Und hier oben kannst du sehen, dass 16 steht. Ich kann das länger machen, damit du es siehst. Und lass mich die Farbe Rot machen. Wenn ich also auf Play klicke, siehst du oben links auf dem Bildschirm 16. Die Größe der Arrays ist also korrekt. Jetzt klicken wir auf Kompilieren, speichern alles und lassen Sie uns weitermachen. 31. 5.06 Anzeigen der Inventory: Lassen Sie uns nun die Widgets für die Inventarkategorie anzeigen. Gehen wir also zurück zum Ordner Blueprints und gehen wir zum Player-Controller. Denken Sie daran, dass wir im Player-Controller mit Widgets arbeiten. Hier möchte ich, dass Sie zum Ereignisdiagramm gehen und mit der rechten Maustaste klicken und ein benutzerdefiniertes Ereignis erstellen lassen. Für dieses benutzerdefinierte Ereignis nennen wir es also „ Inventar bewerten“ und „Kategorie-Widgets“. Und denken Sie auch daran, den Namen zu kopieren und lassen Sie uns einen für den Kunden erstellen. Denn auch hier wird die Benutzeroberfläche durch die Kunden erledigt. Klicken Sie also mit der rechten Maustaste, erstellen Sie ein neues benutzerdefiniertes Ereignis und dieses wird durch den Client ausgeführt. die Replikate also so ändern, Lassen Sie uns die Replikate also so ändern, dass sie auf dem Cloning-Client ausgeführt werden und zuverlässig sind. Lassen Sie uns nun diesen Client von den normalen aus ausführen. Also führen wir den Code aus und sehen genau so aus. also für die Widgets der Inventarkategorie Wenn wir also für die Widgets der Inventarkategorie zu unserer Benutzeroberfläche und innerhalb des Inventars zurückkehren, haben wir hier ein vertikales Feld namens Kategorien erstellt. Das ist also das vertikale Feld und wir möchten die Kategorien zu diesem vertikalen Feld hinzufügen. Um dies zu tun, klicken Sie zunächst auf dieses vertikale Feld und wir müssen es auf ist variabel setzen. Wir können diese Variable also tatsächlich verwenden und Elemente darin hinzufügen. Wenn es nun variabel ist, kehren wir zum Player-Controller zurück und müssen jetzt darauf zugreifen. Denken Sie also daran, dass es sich im WB-Inventar befindet und Sie bereits zuvor eine Variable daraus erstellt haben. Ziehen wir es also hierher und holen wir uns diese Variable. Jetzt können wir den Namen der Gemüsekiste ziehen und schreiben. Also VB-Kategorien. Bevor wir etwas unternehmen, ziehen Sie von hier ab und sagen Sie alles klar, Kinder. Weil wir die Widgets und Kategorien-Slots für jede Kategorie neu zeichnen Widgets und Kategorien-Slots für jede Kategorie werden, wenn wir sie erstellen, erstellen wir sie später, wenn wir neu zeichnen, müssen wir die alten entfernen. Wenn Sie also z. B. ein Element laden, müssen Sie alles neu zeichnen, um die Benutzeroberfläche zu aktualisieren. Also müssen wir die alten löschen, bevor wir etwas tun. Lassen Sie uns diese Kinder löschen, bevor wir sie erneut hinzufügen. Und um die Kategorien hinzuzufügen, ziehen wir von hier aus und sagen, dass eine Tabellenzeile benannt ist. Aber das tut es, wenn es in unsere Datentabelle für die Inventarkategorie aufgenommen wird . Hier wird jede Zeile abgerufen und wir können sie auf den Bildschirm drucken. Also hier sind alle Namen. Also hier möchte ich, dass du von hier aus ziehst und für jede Schleife sagst. Also werden wir jede einzelne Zeile durchgehen. Gehen wir zurück hierher, nur um es Ihnen in den Bauplänen und Datentabellen und der Inventarkategorie zu zeigen . Darin haben wir drei Zeilennamen. Also die Waffen, das Essen und die Zaubertränke. Und genau das wird hier passieren. Es wird hier für jeden einzelnen dieser Namen eine Schleife geben. Also dreimal für jeden von ihnen. Denken Sie daran, wir haben eine Funktion in der Funktionsbibliothek erstellt, die besagt, dass Kategorieninformationen abgerufen werden. Lassen Sie uns also hier unsere Kategorieinfofunktion abrufen. Und jetzt fügen wir diesen Namen in diese Zeichenfolge ein und wird automatisch die Namensvariable wird automatisch in eine Zeichenfolge umgewandelt. Jetzt bekommen wir also die Kategorieinformationen. Und wenn Sie sich nicht erinnern, was das, was das war, können Sie darauf doppelklicken und Sie gelangen zur Funktion und zur Bibliothek der Funktion. Und Sie können sehen, was es tut bekommt einfach den Namen und dann die Zeileninformationen der Datentabelle und gibt sie hier aus. Wir können es also tatsächlich im Player-Controller verwenden. Also hier kannst du entweder mit der rechten Maustaste klicken und Split Struct anheften und du kannst die Informationen abrufen kannst die Informationen abrufen oder du kannst daraus ziehen und Pause sagen, das mache ich normalerweise. Und hier erhalten Sie die Informationen auch. Wir versuchen also, für jede dieser Inventarkategorien ein Widget zu erstellen und es zu diesem vertikalen Feld hinzuzufügen. Lassen Sie uns nun weitermachen und von hier aus ziehen und Widget erstellen sagen. Wir kennen diese Funktion also bereits. Also werden wir ein Widget erstellen. Und das Widget, das wir erstellen werden, ist dieses Inventarkategorien-Widget, das wir zuvor erstellt haben. Denken Sie daran, dass dies das Widget ist, das wir erstellt haben, wenn wir in der Benutzeroberfläche zur Kategorie Inventar wechseln . Das ist also der, den wir erstellen. Und wir erstellen und für jeden dieser Zeilennamen. Also werden wir es dreimal erstellen. Es ist also sehr cool, mit Datentabellen zu arbeiten. Wenn Sie sich entscheiden, eine vierte Kategorie hinzuzufügen, wird diese hier automatisch berücksichtigt und automatisch dem Inventar hinzugefügt. ist sehr cool, es so dynamisch zu machen, weil es später für dich viel einfacher wird. Okay, also hier, wenn wir das Widget erstellen, wollen wir ihm sagen, um welche Kategorie es sich handelt. Und wir möchten dieses Symbol auch einfügen, denn denken Sie daran, dass wir dieses statische Symbol haben und es je nach Kategorie ändern möchten . Gehen wir also zurück zur Inventarkategorie. Hier, gehe zur Grafik. Und jetzt klicken wir hier auf das Plus für die Variablen. Die erste Variable, die wir erstellen werden, sind Kategorien. Also werden wir ihm die Kategorie zuweisen. Und als nächstes haben wir das Kategoriesymbol. Und dieser wird Texture 2D sein. Jetzt klicken wir auf die erste und dann auf Instanz bearbeitbar und dann auf Instanz bearbeiten und beim Spawn anzeigen. Und das kannst du bei beiden machen. Also auch das Kategoriesymbol, Instanz editierbar und beim Spawn sichtbar. Wenn Sie jetzt zum Player-Controller zurückkehren , klicken Sie auf Datei und aktualisieren Sie alle Knoten. Sie können sehen, dass wir sie hier veröffentlicht haben, damit wir tatsächlich Informationen in sie einbauen können. Ziehen wir also diese Kategorie und weisen sie ihr zu. Und lassen Sie uns dieses Symbol ziehen und es ebenfalls zuweisen. Jetzt haben wir ein Widget erstellt, also werden drei Widgets erstellt . Bisher machen wir also die Kinder frei für diese vertikale Kiste, damit sie sauber ist. Danach bekommen wir alle unsere Zeilennamen, die alle diese drei hier haben. Was wir sagen, ist, dass wir für jede dieser Zeilen den Namen nehmen, wir nehmen die Informationen zur Inventarkategorie. Und von hier aus nehmen wir das Symbol und die Kategorie und fügen sie in diese Funktion zum Erstellen eines Widgets ein. Jetzt erstellen wir drei Widgets, aber denken Sie daran, dass wir sie nur hier erstellen. Wir müssen sie auch zum vertikalen Feld hinzufügen. Also werde ich das hier kopieren, die Inventar- und Vertikalbox-Variablen. Und jetzt können wir aus diesem vertikalen Feld ziehen. Und wir können sagen, füge ein Kind zur vertikalen Box hinzu. Und lass es uns jetzt verbinden. Und welches Kind sollten wir hinzufügen? Einfach dieses Widget, das wir gerade erstellt haben. Jetzt können Sie auf diese Linien doppelklicken , um Eisenbahnnotizen zu erstellen und Ihren Code ein bisschen besser zu organisieren . Und jetzt lassen Sie uns kompilieren. Wenn wir jetzt also auf Play klicken, passiert nichts. Und der Grund, warum es nicht hinzugefügt wird. Wenn Sie also auf I klicken, um das Inventar zu öffnen , passiert nichts. Denken Sie daran, dass Sie diesen Code nirgends ausgeführt haben, also müssen Sie ihn irgendwo schreiben. Erstellen Sie also Widgets für Inventarkategorien. Lass es uns einfach für den Spieler ausführen. Also, wenn du zurück zu den Bauplänen gehst und wir zu Spieler B gehen, Spieler hier am Anfang des Spiels, sagen wir jetzt Hol dir den Controller. Und holen wir uns den Controller für diesen Spieler. Dann können wir sagen, denken Sie daran, dass wir hier ein Interface namens int Player Controller erstellt haben . Wir haben also die Player-Controller-Referenz. Wir können also sagen, dass es sich um Layout, Steuerung oder Referenz handelt, da dies die Oberfläche ist, die wir zuvor erstellt haben. Also jetzt als Player-Controller, denn denk dran, wir haben im Player-Controller gearbeitet, also brauchen wir die Referenz und jetzt können wir Widgets für die Kategorie „Inventar bewerten“ aufrufen. Also hier, sagen wir, erstellen Sie Widgets für Inventarkategorien. Und es sollte funktionieren. Also lasst uns alles kompilieren und speichern. Jetzt wird es uns einen Bug geben. Wenn wir also auf Play klicken und ich auf das Auge klicke, kannst du sehen, dass nichts passiert. Und wenn ich hier rauskomme, wird uns das nerven. Und der Grund dafür ist, dass, wenn wir zum Spielercontroller zurückkehren, Sie Informationen aus dieser WB-Inventarvariablen beziehen. Bevor wir jedoch auf das Auge, also dieses, klicken , denken Sie daran, dass Sie es sofort ausführen, wenn der Spieler spawnt. Diese Variable wurde jedoch noch nicht erstellt. Diese Variable wird nur erstellt, wenn Sie auf die Schaltfläche I klicken , da Sie dann das Widget hier öffnen und diese Variable erstellen. Wenn Sie das also hier kopieren können, erstellen wir ein Widget für das Inventar und Sie kehren zum Event Graph zurück. Und hier oben bei der Initialisierung der Widgets füge ich einfach auch das Inventar hinzu, weil die Widgets von India Sheila automatisch ausgeführt werden, als weil die Widgets von India Sheila automatisch ausgeführt werden, als wir anfingen, das Spiel zu spielen. Es wird also sofort erstellt und wir können es hier am Anfang auch für den Spieler verwenden . Und der Grund, warum es im Controller schneller erstellt wird , ist dass der Player-Controller erstellt wird , bevor der Player erstellt wird. So ist das. Also klicken wir jetzt auf Play. Und wenn wir auf KI klicken, können Sie sehen, wir können die Informationen jetzt hier sehen. Wir können alle drei Widgets sehen. Die Symbole haben sich jedoch nicht geändert. Und weil dies der letzte Schritt ist, den wir vermissen. Also lass uns hierher zurückkehren. Gehen wir zur Kategorie WB-Inventar. Hier. Lassen Sie uns diese löschen und das Event-Konstrukt behalten. Für das Event-Konstrukt ist das genauso wie das Begind-Play. Was wir tun müssen, ist diese Bildkategorie zu nehmen , denn denken Sie daran, wenn Sie darauf klicken, ist dies, wie Sie es hier benannt haben. Das ist also mein Symbol, mein Bild. Also muss ich diese Variable hier nehmen und sagen, setzt Pinsel von Textur ab. Und jetzt können wir wählen, auf welche Textur wir es einstellen möchten. Die Textur ist einfach dieses Kategoriesymbol, das wir gerade festgelegt haben. Denn denken Sie daran, dass wir im Player-Controller jedes Mal, wenn wir die Kategorie erstellt haben, ihr das entsprechende Kategoriesymbol zugewiesen Wir haben diese Variable tatsächlich schon bereit und können sie mit der Textur verbinden. Lassen Sie uns nun kompilieren und auf Play klicken. Und wenn ich jetzt darauf klicke, können Sie sehen, dass alle Kategoriesymbole automatisch zugewiesen werden. Also nur ein kurzer Durchlauf. Wenn wir hierher zurückkehren, haben wir diese Widgets für die Kategorie Kreditinventar erstellt. Und wir führen es über den Client , weil Widgets über den Client laufen. Und dann entfernen oder löschen wir die Kinder hier, nur um sicherzustellen, dass sie leer ist, dann erhalten wir alle Zeilennamen der Datentabellen. Und für jeden dieser Namen , die ihre Informationen erhalten. Und mit diesen Informationen können wir sie in das Create Widget einbinden. Also erstellen wir die Widgets eins nach dem anderen für jede Schleife. Und wir geben die Informationen ein. Wir fügen sie auch eins nach dem anderen mit der Steigung hinzu. Jetzt haben wir die Kategorien erstellt und sie zu unserem Inventar hinzugefügt. Gehen wir also zu den Inventarplätzen über. 32. 5.07 Anzeigen der Inventory: Die Inventarplätze, Gehen wir zurück zum Player-Controller. Und genau wie zuvor, die Kategorien, Lass uns hier runter gehen und ein neues benutzerdefiniertes Event erstellen. Und nennen wir dieses benutzerdefinierte Event Rate Inventory Slot Widgets. Nochmals, lassen Sie uns diesen Namen kopieren, da wir ihn über die Clients laufen lassen müssen. Lassen Sie uns also ein benutzerdefiniertes Ereignis durchführen und es über den Client ausführen. Denken Sie daran, darauf zu klicken. Eigener Kunde und zuverlässig. Und für den Client oder für den normalen müssen wir den Client ausführen. Denken Sie daran, dass es die Slot-Widgets sind, nicht die Kategorie. Also die Slot-Widgets auswählen. Also, was wir mit diesen Widgets machen wollen, wenn wir zur Benutzeroberfläche zurückkehren und auf das Inventar klicken. Denken Sie also hier daran, dass wir für das Inventar diese Grid-Inventarvariablen erstellt haben. Für dieses Grid-Inventar müssen wir also erneut tun. Sie müssen hier klicken, um die Variable sonst können wir diese Variable nicht verwenden. Also wenn ich das nicht tue, ist der Klick variabel. Du kannst hier sehen, ob ich mein Inventar erhalte und als Raster können wir diese Variable einfach nicht sehen. Aber wenn ich hier hingehe und für dieses Rasterinventar auf die Variable S klicke , kann ich jetzt von hier aus ziehen und Raster sagen. Und Sie können es als Variable sehen und wir können es wie zuvor verwenden. Lassen Sie uns die Kinder entfernen und sicherstellen darin keine Inventarplätze befinden Jedes Mal, wenn wir später auf einen Gegenstand hinweisen oder ihn aus dem Inventar fallen lassen, müssen wir alle Felder neu zeichnen um das Inventar zu aktualisieren. Wir müssen sicherstellen, dass die alten gelöscht sind, bevor wir die neuen hinzufügen. Also lasst uns die Kinder reinigen und sicherstellen, dass es leer und sauber ist. Jetzt machen wir eine Schleife. Fahren Sie also von hier aus und sagen Sie für Loop und wählen Sie diesen aus. Denken Sie also noch einmal daran, dass wir für die Anzahl der Steckplätze bereits eine Variable im Inventar haben. Wenn wir also hier zur Inventarkomponente zurückkehren, haben wir diese Komponente namens Anzahl der Steckplätze erstellt. Wir benötigen einen Verweis auf dieses Inventar. Also hier oben klicke ich auf das Plus und suche dann meine AAC-Inventarvariable. Und nennen wir es Inventar. Und dann machen wir das Gleiche hier unten. Lassen Sie mich auf das Plus klicken, die AAC-Inventarvariable auswählen und sie Inventar nennen. Was wir jetzt tun können, ist es hier anzuschließen. Und für diesen erstellen Sie Widgets für Inventarplätze. Gehen wir zum Player und klicken wir auf den DP-Player. Und auch hier noch einmal, lass es uns einfach im Begin Play ausführen. Wir können es hier vom Controller übernehmen, genau wie zuvor, was wir mit den Inventarkategorien gemacht haben. Lassen Sie uns also von hier aus ziehen und sagen, wir erstellen Widgets für Inventar-Slot-Widgets. also diesen hier auswählen müssen wir das Inventar hinzufügen. Denken Sie daran, Sie können einfach von hier aus ziehen , da Sie das Inventar bereits haben. Und du hast auch definiert wie viele Slots du in deinem Inventar hast. Also jetzt kannst du diese Nummer haben, diese 16 hier, die wir geschrieben haben. Wenn wir also zum Player-Controller zurückkehren, müssen wir ihn so oft wiederholen wie was Sie hier für die Anzahl der Slots geschrieben haben, denn das ist die Anzahl der Slots, die wir erstellen wollen. Also von hier ziehen und die Anzahl der Slots sagen , dieser hier. Was nun Schleifen angeht, beginnen sie mit dem Index Null und nicht mit Eins. Wenn wir sie einfach hier einstecken, entstehen 17 Inventarplätze und nicht 16. Wir müssen das nehmen und Minus sagen. Also subtrahieren und durch eins subtrahieren und dann mit dem letzten Index verbinden. Also, was werden wir 16 Mal machen? Wir werden einfach Widgets erstellen. Und was Sie erstellen möchten, wir wollen WB-Inventarplätze erstellen. Und als nette Sache später brauchen wir den Slot-Index. Gehen wir also zurück zur Benutzeroberfläche und öffnen wir den Inventar-Slot. Ich gehe einfach zum Diagramm und erstelle eine neue Variable namens slots index, wähle dann die Ganzzahl aus und kompiliere. Und wie zuvor wählen wir die editierbare Instanz aus und zeigen sie beim Spawn an. Gehe zurück zum Player-Controller wie der Datei und aktualisiere alle Knoten. Jetzt können wir das nehmen und in den Slot-Index einfügen. Es ist immer schön, diesen Index zu haben , da Sie ihn später beim Programmieren benötigen können ihn später beim Programmieren benötigen und einen bestimmten Slot benötigen. Okay, als letztes müssen wir es jetzt, genau wie vor der Erstellung des Widgets, zu dem Raster hinzufügen, das wir haben. Nehmen wir das hier, das WB-Inventar und dann die Grid-Inventarvariable. Und jetzt ziehen wir von hier aus und sagen Kind zum Grid hinzufügen und weniger verbunden. Also für das Raster haben wir hier die Zeilen und die Spalten. Bevor wir das tun, ist der Inhalt, den wir hinzufügen möchten einfach dieses Widget, das wir gerade erstellt haben. Und Sie können hier erneut doppelklicken , um einen Umleitungsknoten zu erstellen. Nun zu den Zeilen und Spalten Es ist sehr, sehr einfach. Du kannst von hier aus ziehen und sagen, geteilt durch vier. Weil ich möchte, dass du das Inventar gewaltsam auf vier Plätze beschränkst, jede Menge Waldverlust um vier Plätze. Und das kannst du tun. Wir haben also 16 Steckplätze geteilt durch vier, sodass wir vier in der Spalte haben. Und auch geteilt durch vier werden nicht dividiert, sondern Modul vier und dann ergibt es vier mal vier. Also, wenn wir wieder von hier ziehen und Modulus sagen und das hier auswählen und dann wieder vier. Jetzt können wir das nehmen und es mit der Zeile verbinden und das nehmen und es mit der Spalte verbinden. Sie können diese Zahlen also jederzeit ändern. Das liegt daran, dass ich meine Steckplätze vier mal vier haben möchte. Aber vielleicht möchten Sie, dass Ihre Folien acht mal acht groß sind, damit Sie diese Zahlen ändern können , je nachdem , wie Ihr Inventar aussieht. Klicken wir nun auf Kompilieren und dann auf eine Möglichkeit, um zu sehen, was passiert. Wenn ich darauf klicke, kann ich sehen dass mein Inventar zu meinem Bildschirm hinzugefügt wird. So sieht es also aus. Es ist momentan sehr groß und ich muss die Größe reduzieren. Aber lassen Sie uns zunächst alle Symbole standardmäßig entfernen , da ich nicht möchte, dass alle Symbole standardmäßig angezeigt werden. Also klicke ich auf den Inventar-Slot und gehe zurück zum Designer. Und hier kannst du auf das Symbol klicken und hier in der Sichtbarkeit nach unten gehen und es auf versteckt setzen. Das Gleiche gilt für die Zahl, klicken Sie darauf, gehen Sie zurück zur Sichtbarkeit und setzen Sie diese ebenfalls auf versteckt. Wenn ich jetzt erneut auf Play klicke und jetzt auf das Auge klicke, kannst du sehen, dass alles versteckt ist und es ist so schöner, weil wir die Symbole dann später zeigen können , wenn wir tatsächlich ein Objekt haben und nicht dieses Standardsymbol für die Größe, es könnte für dich richtig aussehen. Wenn ich hierher zurückgehe, können Sie hier sehen, dass ich in 12 80 x 720 entwerfe. Das ist also mein Standard-Designbildschirm hier. Dafür entwerfe ich es. Leute mit kleineren Monitoren werden das normalerweise so sehen. Du kannst sehen, dass es das nicht ist, es ist nicht so riesig. Wenn ich auf Play und dann auf hier klicke, kannst du sehen, dass es hier sehr groß ist. Und so sieht es hier nicht wirklich aus. Das liegt daran, dass wir eine sogenannte DPI-Skalierung haben. Jetzt arbeite ich an dieser Auflösung. Wenn Sie jedoch hier klicken, weil ich eine Gabel, einen Monitor habe, sind es meiner Meinung nach etwa 3.000, 3.800. Wenn Sie also auf dieses kleine Symbol klicken, können Sie hier sehen, wie meine Benutzeroberfläche je nach Bildschirm vergrößert wird. Also entwerfe ich es gerade für einen Bildschirm hier drüben. Eigentlich dieser hier drüben. Mein Bildschirm ist jedoch irgendwo hier in der Nähe. Sie können also sehen, dass die Skala dazu dient sie tatsächlich viermal oder 3,5-mal zu skalieren. Was Sie tun können, ist, dass Sie einfach dieses auswählen und dann die Skala reduzieren können, damit sie nicht so stark skaliert. Klicken Sie hier und setzen Sie es einfach auf zwei, z. B. und das ist nur, wenn es Ihnen passiert. Dies ist also normalerweise der Fall, wenn Sie die Größe der Benutzeroberfläche von zwei verschiedenen Monitoren ändern möchten Benutzeroberfläche von zwei verschiedenen Monitoren , damit sie für verschiedene Monitore gut aussehen. Da sind vielleicht 2,5 und bei der Größe auf Play klicken, kann ich auf das Auge klicken. Du kannst sehen, dass es jetzt viel kleiner ist und ich mag es so besser. In Ordnung, jetzt haben wir die Inventarplätze hinzugefügt. Lass uns alles speichern und lass uns weitermachen. 33. 5.08 Lege die ausgewählte Inventory fest: Wir müssen jetzt , wenn wir auf eine Kategorieschaltfläche für das Inventar klicken , es auf diese ausgewählte Kategorie setzen. Lassen Sie uns also mit den Blueprints fortfahren und diese Logik innerhalb der Inventarkomponente erstellen . Lass uns hier runter gehen und ein neues benutzerdefiniertes Ereignis erstellen. Und diese hier nennen wir die ausgewählte Inventarkategorie festlegen. Und wieder arbeiten wir mit UI. Also werde ich das kopieren und ein neues benutzerdefiniertes Ereignis erstellen und es über den Client ausführen. Also laufend, kundenorientiert und zuverlässig. Also, was müssen wir hier für diese festgelegte Inventarkategorie tun ? Denken Sie daran, dass wir diese Aufzählung, die Artikelkategorie E, Set, zur ausgewählten Inventarkategorie gemacht haben die Artikelkategorie E, . Lass es uns von hier ziehen. Und während Sie die Alt-Taste gedrückt halten, können Sie es fallen lassen und es wird automatisch so eingestellt. Also setzen wir einfach diese Variable und ich ziehe per Drag-and-Drop in das Event. Dadurch wird hier automatisch eine Eingabe erstellt. Sie können es manuell erstellen, oder wir können einfach klicken und ziehen und ablegen. Und es wird es für dich erstellen. Lassen Sie uns nun den Kunden hier anrufen, Ausgewählte Inventarkategorie festlegen. Ich werde das hier noch einmal anklicken und ziehen, sodass es den gesamten Prozess durchläuft. Jetzt müssen wir dieses Event jedes Mal starten, wenn wir auf eine Schaltfläche oder die Kategorien klicken. Gehen wir also zurück zur Benutzeroberfläche und klicken wir auf die Inventarkategorie. Klicken wir nun auf diese Schaltfläche, die Button-Kategorie, und lassen Sie mich nach unten gehen. Und dann auf die Veranstaltung onClick. Was sollte also passieren , wenn ich auf diese Schaltfläche klicke? Ich möchte dieses Set einfach als ausgewählte Inventarkategorie bezeichnen . Also, wie kriegen wir dieses Event hin? Wir befinden uns im Inventar und im Moment befinden wir uns in der Benutzeroberfläche. Dies kann eine Übung für Sie sein, um herauszufinden , wie Sie tatsächlich dorthin gelangen, wie Sie zu diesem Inventar gelangen. Lass es uns jetzt zusammen machen, damit du eine Pause einlegen kannst, wenn du es alleine machen willst. Was wir hier also tun wollen, ist, dass es eine Funktion gibt Sie die Ebene abrufen können , die diese Benutzeroberfläche besitzt. Also gehört jede, jede Benutzeroberfläche, die für einen Spieler gespawnt wird, dem Spieler. Moment können wir also mit der rechten Maustaste klicken und „ Get Owning layer on“ sagen . Es wird also versucht, die Ebene zu finden, die diese Benutzeroberfläche besitzt. Und hier brauchen wir eigentlich einen Verweis auf den Spieler, aber wir haben noch keinen gemacht. Denken Sie an die Baupläne , wenn wir zu den Schnittstellen gehen. Hier haben wir nur eine Schnittstelle für den Controller, wo wir das Get-Layer-Steuerelement haben , unsere Referenz. Also müssen wir eigentlich auch einen für den Spieler machen. Also gehe ich zurück zu den Interfaces und klicke mit der rechten Maustaste auf Blueprint, Blueprint Interface. Nennen wir es Int-Layer. Doppelklicken Sie darauf. Und hier für die Funktion nennen wir sie die Ebenenreferenz von get. Und jetzt hier unten, denken Sie daran, dass Sie die Variable auswählen müssen , auf die Sie verweisen möchten. Ich möchte also auf die BP-Ebene verweisen und nennen wir sie hier Ebene. Lass uns kompilieren. Denken Sie daran, dass es sehr wichtig ist, hier zu kompilieren. Gehen wir nun zum Player und fügen das Interface hinzu. Also bp player Zu den Klasseneinstellungen gehen sind eigentlich die Klasseneinstellungen. Und hier für die Schnittstellen klicken wir darauf und suchen nach int Layer Compile. Und jetzt siehst du hier in den Interfaces Blair Ref. Genau wie zuvor müssen wir definieren, wer der Spieler ist. Wir gehören zu den B2B-Akteuren. Du kannst es also einfach versuchen, kannst selbst sagen. Das ist also die Layoutreferenz. Okay, jetzt haben wir das und jetzt können wir zu unserer Benutzeroberfläche der Inventarkategorie zurückkehren. Also hol dir Owning Player Pawn. Jetzt heißt es, von welchem Spieler sprichst du konkret? Ich spreche speziell von BP Player. Wir können also sagen, dass wir jetzt eine Spielerreferenz erhalten , die wir gerade erstellt haben. Und es ist eine Nachricht, weil sie von einem Blueprint-Interface stammt. Jetzt haben wir also die Spielerreferenz und jetzt können wir als Spieler das Inventar abrufen, weil der gesamte Prozess hier darin bestand, das Inventar abzurufen. So können wir die ausgewählte Inventarkategorie festlegen. Also hier in der Benutzeroberfläche der Inventarkategorie ziehen wir von hier und sagen wir AAC, Inventar. Und lass uns runter gehen und die Variable finden. Die Variablen stehen hier immer am Ende. Als Inventar können wir nun die gewählte Inventarkategorie aufrufen . Und was ist die Kategorie? Willst du es auf einstellen? Denkt daran, im Player-Controller, wenn ich jetzt zurückgehe, wird es jetzt etwas verwirrend sein, weil wir hin und her gehen, was ich versuche , es so gut wie möglich zu erklären. Denken Sie daran, wie wir im Player-Controller die Kategorien für die einzelnen Zeilennamen hier aus unserer Datentabelle erstellt haben. Wir haben die Kategorie genommen und sie in den hier erstellten Button eingefügt. Also hier im Button weiß es schon, um welche Kategorie es sich handelt. Sie können das also einfach anklicken und ziehen und es hier einfügen. Jeder Button wird also eine eigene Kategorie haben, die er sich hier einloggt. Und die richtigen Informationen werden hier eingestellt. Okay, so sehr wichtig. Jedes Mal, wenn wir die Kategorie festlegen, möchten wir all diese Schaltflächen neu zeichnen. Deshalb wollen wir hier bei den Inventarplätzen all diese Plätze neu vergeben , weil wir die Kategorie wechseln. Wir wollen also nicht die alten Slots aus der alten Kategorie sehen . Nun, was wir tun müssen, und das ist eigentlich der Grund, warum wir Kinder deklariert haben, weil wir die alten Schaltflächen oder die alten Inventarplätze entfernen wollen , bevor wir die neuen hinzufügen. Also tolle Widgets für Inventarplätze. Wir müssen es in dem Jahr aufrufen, in dem wir die gewählte Integer-Kategorie festgelegt haben. Und jetzt benötigen wir einen Verweis auf den Player-Controller aus diesem Inventar. Also, wie machen wir das? So wie wir das zuerst machen, müssen wir den Spieler kriegen. Wir können den Player-Controller also nicht wirklich direkt von dieser Komponente abrufen . Denken Sie jedoch daran, dass sich diese Komponente im Player befindet. Was wir also tun können, ist mit der rechten Maustaste zu klicken und zu sagen, noch Besitzer, das wird den Spieler bekommen. Und wieder, genau wie zuvor, müssen wir es konkret sagen, wir sind belastend oder wovon wir sprechen. Wir sprechen speziell über diesen BP-Spieler. Wir können also sagen, dass die Ebenenreferenz abgerufen wird, die wir gerade erstellt haben. Und jetzt können wir diesen verbinden. Und hier können wir den Controller bekommen. Du kannst also hier nachverfolgen und Get Controller sagen. Sie können jedoch „Get Controller“ sagen und dann „Get Layer“, die Controller-Referenz. Und auf diese Weise können Sie tatsächlich die Widgets erstellen, Inventar-Slots erstellen aufrufen . Du kannst es so machen. jedoch sehr lang , dass wir dies jedes Mal tun müssen. Gehen wir stattdessen zurück zum Spieler. Und anstatt diesen Get-Controller zu verwenden, erstellen wir ihn tatsächlich in eine Variable. Also hier zu Beginn des Spiels, anstatt das zu tun, holen wir uns den Controller und nehmen wir an, wir holen uns die Layer-Controller-Referenz. Und jetzt können wir hier mit der rechten Maustaste klicken und dies zu einer Variablen hochstufen und sie Layout-Controller nennen. Aber jetzt haben wir den Player-Controller und wir müssen das nicht jedes Mal hier drinnen machen. Also, wenn wir die Plaque-Kontrolle haben, lassen Sie uns diese Kosten tatsächlich streichen. Da wir jetzt dieses Blueprint-Interface haben, können wir es jetzt löschen und dann können wir es einfach hier einstecken, anstatt es miteinander zu verbinden. Und lassen Sie uns alles näher zusammenziehen. Und jetzt kann dieser Durchflussregler auch hier verwendet werden. Wir müssen diesen Player-Controller nicht anrufen. Schon wieder. Lass es uns löschen und lass uns sie hier verbinden. Das Ziel hier oben ist jetzt wieder der Rollenspieler-Controller der Plattform. Nehmen wir also diese Layout-Controller-Variable, die wir gerade erstellt haben. Und lass es uns hier verbinden. Als nächstes gehen wir hier hoch und du kannst sehen dass es viel sauberer ist als zuvor. Anstatt jedes Mal die Player-Controller-Referenz aufzurufen , können wir das einfach tun. Ich werde es ein bisschen besser organisieren, damit es hier nicht zu chaotisch ist. Ordnung, jetzt haben wir diesen Controller und er sieht toll aus. Und wir können es tatsächlich auch hier machen. Um es sauberer zu machen, können wir den Player-Controller nehmen und einfach hier anmelden. Eigentlich ist das falsch. Also nehmen wir es hier, rufen Sie es einfach hier und wir können es einfach so manuell verbinden. Und wir können diesen schwarzen Controller löschen. Also jetzt ist es viel sauberer , es einfach so anzusehen. Und lass mich sie näher zusammenziehen. Der Code ist hier also viel sauberer. Und wenn wir zurück zum AAC-Inventar gehen, anstatt es aufzurufen, haben wir jetzt die Ebene, die die Player-Controller-Variable hat. Das ist also viel sauberer. Und wir können es hier verbinden und die Widgets zum Erstellen von Inventarplätzen aufrufen. Und wieder das Inventar können wir vom Spieler nehmen und die AAC-Inventarvariable aufrufen , nach unten gehen, die Inventarvariable finden und hier eine Verbindung herstellen. In Ordnung, das ist jetzt also eigentlich fertig. Also hier, wenn ich im Spiel bin und auf das Auge klicke, ist es wirklich unmöglich, auf den Button zu klicken, weil wir momentan keine Maus haben, die du sehen kannst, oder wir können das umgehen. Wir haben nicht wirklich eine Maus. Also lasst uns das beheben. Moment erhalte ich ein Feld, da x neun ist versucht, die Eigenschaft zu lesen, und es geht darum, dass Sie das Subsystem auf lokaler Ebene erhalten, den Mapping-Kontext. Also müssen wir hier eigentlich zum Spieler zurückkehren. Dem Mapping-Kontext gefällt das nicht. Es werden vier sein. Wir haben es tatsächlich eingerichtet und angeschlossen. Ziehen wir vom Split-Controller und sagen wir, dass es gültig ist. Stellen Sie nur sicher, dass es gültig ist, bevor es tatsächlich ausgeführt wird. Dieser Code ist gültig. Und wenn es gültig ist, können Sie den Code ausführen. Sie können jetzt darauf doppelklicken, um es schöner zu machen. Und lass uns auf Play klicken und sehen, ob es wieder ausfällt. Herumrennen. Wenn ich auch den Client verwende, kann ich ihn entfernen und Sie können sehen, dass wir keine Box mehr haben. Stellen Sie also sicher, dass es gültig ist, bevor wir das tun. Ordnung, also für die Maus gehen wir zum Player-Controller. Hier in den Klassenstandardwerten. Sie haben Maus und Cursor anzeigen. Jetzt klicken wir hier darauf und klicken wir auf Play. Und jetzt kannst du sehen, ich kann die Maus sehen und ich kann mich nicht mehr wirklich umschauen. Es ist wirklich nicht wichtig, denn in diesem Kurs geht es nicht um Bewegungen, also ist es mir egal, aber du kannst die Maus halten und den Spieler drehen und dich umschauen. Aber vorerst nicht wirklich wichtig, mach dir keine Sorgen um die Bewegung oder das Reparieren. Konzentrieren wir uns einfach auf das Inventar. Klicken auf das Inventar funktioniert also nicht , weil wir es nicht wirklich eingestellt haben. Das müssen wir auch in Ordnung bringen. Wenn ich mit der Maus über die Kategorietasten fahre, kann ich sie auch nicht wirklich drücken. Schauen wir uns an, was damit los ist. Also lasst uns das schließen. Gehen wir zurück zur Inventarkategorie und lassen Sie uns zum Designer gehen. Wenn ich mir die Schaltfläche ansehe, kann ich sehen, dass sie durchgehend auf quadratisches Blau eingestellt ist. Und das ist falsch. Nein, für den Hubbard müssen wir ihn in Hubbard ändern. Und für die Unterdrückten müssen wir uns ändern, um zur Ruhe zu kommen. Und denken Sie dann daran, die Bildgröße zu kopieren , da sich die Schaltflächen geändert haben. Also Shift Rechtsklick hier und Shift Linksklick, um sie hier für das Bild einzufügen nur darauf, dass die Sichtbarkeit nicht testbar ist , damit sie die Schaltfläche nicht blockiert. Und wenn wir jetzt zum Menü I gehen, müssen wir im Moment auch diese Schaltfläche funktionieren lassen, wenn wir darauf klicken. Also wenn ich hier runter gehe und das auf Gefällt mir auswähle, muss das Inventar geöffnet werden. Also wenn ich einfach kompiliere und zurück zum Player gehe. Also hier, wenn wir das Inventar öffnen, können wir ein weiteres benutzerdefiniertes Ereignis erstellen und es hier verlinken. Es funktioniert also für den Button. Nun, klicken wir mit der rechten Maustaste auf das benutzerdefinierte Ereignis und sagen wir, öffnen Sie das Inventar. Steck das hier ein. Das wird also nur ausgelöst, wenn unsere Taste gedrückt wird, öffne das Inventar. Gehen wir also zurück zur Haupt-UI. Und hier nochmal für diese Schaltfläche, genau wie zuvor, klicken Sie mit der rechten Maustaste und sagen Sie Get Owning, Layer on. Wir bekommen also den Player, weil hier unsere Logik liegt, es heißt, Spieler nach Ebenenreferenz zu besitzen. Und jetzt verbinden wir sie miteinander. Und hier können wir jetzt sagen, offenes Inventar. Jetzt sollte es also funktionieren. Lass uns alles kompilieren. Lass uns auf Play klicken. Und wenn ich hier auf die Benutzeroberfläche klicke , kannst du sehen, wie das Inventar geöffnet wird. Und wenn ich auf das Auge klicke, öffnet es sich auch. So ist es, Oh, es funktioniert richtig. Und der Mauszeiger auf den Knöpfen funktioniert auch. Jetzt kannst du nicht sehen, ob wir die Kategorie ändern , weil wir keine Artikel haben. Es ist also sehr schwer zu erkennen. Wenn du es also nur schnell sehen willst, kannst du hier zum Player-Controller gehen wo du deine Inventar-Slots hinzufügst. Eine sehr nette Methode, um die Dinge zu sehen, besteht darin, die Druckzeichenfolge von hier in der Schleife zu verwenden die Druckzeichenfolge von hier in , wenn wir die Widgets erstellen Lassen Sie uns von hier ziehen und die Mietzeichenfolge speichern. Nun das, was wir auf den Bildschirm drucken wollen, lassen Sie uns einfach alle Widgets drucken, die wir erstellen. Also von hier aus, hier verbunden, und es wird diesen get-Anzeigenamen erstellen. Es wird Ihnen also den Anzeigenamen dieser Widgets zeigen . Lass uns jetzt auf Play klicken. Und Sie können sehen, dass es die Widgets für beide Spieler erstellt. Wenn Sie auf KI und dann auf Kategorie klicken , werden Widgets erstellt. Wenn Sie auf ein anderes klicken, können Sie sehen, dass die Anzahl der Widgets zunimmt . Wir denken jedoch daran, die Kinder zu löschen. Es liegt also nicht daran, dass 79 von ihnen gespawnt wurden. Im Moment sind nur diese gespawnt. Das funktioniert richtig. Jedes Mal, wenn ich auf eine Kategorie klicke , werden neue Widgets erstellt. Das einzige, was wir jetzt brauchen, ist , auch mit den Gegenständen zu arbeiten. Lassen Sie uns also alles kompilieren , alles speichern und mit der nächsten Lektion fortfahren. 34. 5.09 Vorhandene Elemente zum Array erneut hinzufügen: Ordnung, also wollen wir jetzt bestehende Artikel zum Inventar hinzufügen. Im Moment haben wir also keine wirklichen Anspielungen auf Artikel oder ähnliches. Aber was wir tun können, wenn wir zum Player-Controller gehen, jetzt fügen wir nur die Inventar-Slot-Widgets hinzu. Wir erstellen sie und fügen sie dann hier zu diesem Raster hinzu. Aber als wir gewechselt haben, wenn wir die Kinder gelöscht haben und wir die Kategorien gewechselt haben, werden wir die Slot-Widgets neu zeichnen. Wir müssen auch alle Gegenstände neu zeichnen, also die Gegenstände anzeigen und wir können das tun, obwohl wir gerade keine Gegenstände plündern. Also bevor wir die Widgets hier zu den Kindern oder zum Grid-Inventar hinzufügen . Nehmen wir das jetzt und ich werde das hier nur für ein bisschen verschieben , damit wir hier noch etwas mehr Dinge hinzufügen können. Was wir also tun wollen, ist das Löschen aus dem Inventar zu bekommen. Wenn wir also zur Erinnerung zum Inventar zurückkehren , gehen wir zum Komponenteninventar. Hier haben wir die drei Kategorien erstellt. Also wurde es in die Kategorie Waffen aufgenommen, und es ist ein Array des Inventar-Slots. Wenn wir also auf das Plus klicken, können Sie sehen, dass es aus einem Artikel und dann aus der Menge des Artikels, dem Inventarplatz und dem Index besteht einem Artikel und dann aus der Menge des Artikels, . Und wenn wir erneut auf das Plus klicken, haben wir einen weiteren Artikel. Jetzt habe ich also zwei Artikel. Und einfach so. Abhängig von all den Objekten, die wir haben, müssen wir sie auch hier zeichnen, damit wir sie beim Neuzeichnen hier nicht verpassen. Lassen Sie uns nun zuerst all diese drei besorgen. Hier löschen. Lassen Sie uns also aus dem Inventar ziehen. Und sagen wir Waffenkategorie. Wie auch hier, sagen wir Lebensmittel oder Lebensmittelkategorie. Und lass uns die Kategorie Zaubertränke schreiben. Jetzt haben wir also all diese drei Kategorien. Ziehen wir es jetzt hierher. Und was wir tun wollen, ist, dass wir von einem Objekt ziehen und sagen, dass es Array-Elemente setzt. Wir wollen das Array-Element setzen, wir wollen den Index des Elements festlegen , das sich bereits hier befindet. Und um das so zu machen , können wir einfach von hier aus ziehen und sagen Array-Elemente setzen, weil wir das auch für diese tun müssen. Es hängt also wirklich davon ab , welche Inventarkategorie wir ausgewählt haben. Obwohl. Haben wir das Essen ausgewählt, dann müssen wir es für das Essen tun. Wir haben einen der Zaubertränke ausgewählt, dann müssten wir das für die Zaubertränke tun. Also hier nochmal aus dem Inventar ziehen und wir holen uns die gewählte Kategorie, Inventarkategorie hier. jetzt, anstatt es hier zu tun, Lassen Sie mich jetzt, anstatt es hier zu tun, auf Alt klicken und hier klicken, um die Verbindung zu trennen. Lassen Sie mich also von hier aus ziehen und einen Knoten namens Select verwenden. Wenn Sie diesen also, also was die Auswahl ist, wählen Sie zunächst einfach eine Option aus. Es hängt also davon ab, was Sie hier eingesteckt haben. Wenn Sie eine Zahl eingeben, wird eine Zahl ausgewählt. Wenn Sie z. B. diese Aufzählung einfügen, fügen Sie sie hier ein, Sie können sehen, wie zwischen den Elementen innerhalb dieser Aufzählung ausgewählt wird. Also schließen wir die einfach an. Also die Waffen mit den Waffen, Essen und den Zaubertränken. Also wird es hier reichen. Es wird die ausgewählte Inventarkategorie verwenden. Es wird einen Blick darauf werfen, wovon dieser Wert abhängt. Hier. Wenn Sie sich erinnern, wenn Sie zur UI-Inventarkategorie zurückkehren. Wenn wir also hier auf die Kategorie klicken, wird die Kategorie festgelegt und wir zeichnen dann neu. Hier. Da steht die Kategorie. Und dann zeichnen wir all diese Slot-Widgets neu. Abhängig von der ausgewählten Kategorie hier im Player-Controller wird dieser Wert ausgewählt. Wenn Sie also die Kategorie Zaubertränke ausgewählt haben, wird diese Kategorie für Zaubertränke verwendet und diese Kategorie dann hier protokolliert. Im Moment ist es großartig. Ich weiß nicht warum. Es ist ein bisschen fehlerhaft. Lassen Sie mich es einfach hier trennen und wieder hier einstecken. Es funktioniert also einfach so, dass es diese Farbe hat. Okay, also wenn wir z. B. die Lebensmittelkategorie auswählen, wird diese Lebensmittelkategorie hier genommen und hier ausgeblendet. Und jetzt ist es die Lebensmittelkategorie. Also, was ist der Artikel hier? Der Artikel ist, wir können uns einfach besorgen, besorgen Sie sich diesen hier und sagen Sie noch. Und wir können ein Element aus dem Array abrufen und dieses auswählen, das als Kopie bezeichnet wird. Welchen Artikel wollen wir bekommen? Welches Objekt in diesem Array wollen wir bekommen? Wir wollen einfach nur den Slot-Index bekommen. Denken Sie daran, wir schauen uns seine Slot-Widgets an. Wir spielen 0-15 in einer Schleife, also erstellen wir 16 Slots. Und für jeden dieser Steckplätze wollen wir den Gegenstand jedes dieser Slots bekommen. Und dann wollen wir sie hier reinstellen. Also nochmal für den Slot-Index, einfach von hier aus und füge ihn hier hinzu. Das ist also der Index. Denken Sie daran , dass es 16 Mal wiederholt wird. Es wird also den Index festlegen. Also wird die erste Null sein, dann Eins, dann 2345 und so weiter, bis zu 15, also ergibt es 16. Nun zum Artikel, wir können diesen Artikel hier nehmen und Pause sagen. Und jetzt zu diesem Array hier, diesem Inventarplatz. Aber wir können das tun, indem wir von hier ableiten und sagen, Inventarplatz erstellen. wir dieses Element hierher ziehen, werden wir einfach das Element innerhalb dieses Arrays zurücksetzen . Wir wollen unseren Artikel nicht verlieren. Je nachdem, welchen Slot wir haben, befindet sich z. B. der erste Slot am Index Null. Wir holen den Artikel und stecken ihn hier ein. Auch wenn es leer ist, spielt es keine Rolle. Wir holen uns gerade all diese Informationen und fügen sie hier wieder ein. Wir nehmen auch die Menge und geben sie hier ein, nur um sicherzugehen, dass wir keine Informationen verlieren. Und was den Inventarplatz angeht, denk daran, dass wir Inventarplätze erstellen, also ziehe ich ihn hierher, logge dich hier ein. Und auch für den Slot-Index ziehen Sie einfach von hier und stecken Sie ihn hier ein da wir den alten Inventar-Slot nicht wirklich verwenden wollen . Dies ist der Slot, der geleert wird. Wenn wir klare Kinder sagen, wollen wir das nicht mehr so gut verwenden wie den Slot-Index, wir löschen hier alles. Also lass uns einfach den neuen Slot-Index verwenden und dann dein Inventar Slot-Widget und einfach um diese Stifte zu verstecken, weil ich finde, dass es nicht gut aussieht. Sie können darauf klicken und dann auf Nicht verbundene Pins ausblenden klicken, und es wird jetzt viel besser aussehen. Und das war es eigentlich. Nehmen wir also diese Logik hier. Lassen Sie uns hier unsere Benutzeroberfläche erneut zum Grid hinzufügen. Und dafür sind das die Widgets. Sie können also auf dieses klicken und ziehen und die Widgets hier erneut hinzufügen. Und alles sieht perfekt aus. Im Moment können wir keinen wirklichen Unterschied erkennen da wir die Benutzeroberfläche nicht wirklich aktualisieren. Also in den Inventar-Slots waren nicht wirklich das Artikelbild hier zu sichtbar oder so. Das werden wir in der nächsten Lektion tun. Aber kurz bevor wir das tun, lasst uns hier eigentlich alles organisieren. Also werde ich weitermachen und Ihnen zeigen, wie ich es organisiert habe. Okay. Also habe ich sehr schnell alles organisiert. kann sehen, dass sie alle Umleitungsnotizen haben, also stellen Sie sicher, dass Sie auf alle doppelklicken. Sie können auch einige Elemente auswählen und auf der Tastatur auf Q klicken. Dadurch werden die Elemente wieder in Ordnung gebracht. Also werde ich sicherstellen, dass du deinen Code organisierst , damit du ihn besser verstehen kannst. Lassen Sie uns vorerst alles kompilieren und mit der nächsten Lektion fortfahren. 35. 5.10 Gegenstände im Inventar anzeigen: Okay, lassen Sie uns jetzt weitermachen und Benutzeroberfläche des Inventarsteckplatzes aktualisieren. Wenn wir einen Gegenstand verlieren. Hier für die Inventarplätze Gehen wir zur Grafik und löschen wir hier alles. Lassen Sie uns nun ein benutzerdefiniertes Ereignis erstellen. Und diesen nenne ich Update Inventory Slot UI. Was wir tun wollen, ist einfach dieses Bild hier abhängig davon, welchen Gegenstand wir plündern und auch dessen Menge. Wenn Sie also hier klicken, fügen wir zwei verschiedene Variablen hinzu. Der erste ist der Artikel, ebenso wie die Artikelinformationen. Das ist das Item, nennen wir es Item. Und die zweite ist die Menge dieses Artikels. Lassen Sie uns es in eine Ganzzahl ändern und kompilieren. also für diesen Artikel hier Nehmen wir also für diesen Artikel hier die Menge und sagen wir, ist sie gleich Null? Denn wenn der Artikel gleich Null ist, bedeutet das, dass sich kein Artikel in diesem Inventarplatz befindet. Wir wollen das Gegenstandssymbol oder diesen Text hier nicht wirklich anzeigen , da wir in diesem Slot nicht wirklich einen Artikel haben. Wenn die Menge also gleich Null ist, nehmen wir dieses Bild hier und veranschaulichen es von hier aus und sagen, setze diese Fähigkeit ein. Und lassen Sie uns die Sichtbarkeit auf versteckt setzen , wenn wir keine Artikel haben. Und lassen Sie uns das auch für den Text tun. Und Sie können sehen, dass ich keine Variable für den Text habe. Gehen wir zurück zu Designer. Klicken Sie auf den Text und setzen Sie ihn auf diese Variable, damit wir ihn als Variable sehen können. Alice, nimm jetzt den Text, lass uns sehen, ob wir ihn finden können. Und ich kann es nicht finden. Und es heißt eigentlich Bildartikelmengen. Es sollte Text sein. Also lasst uns das in Text ändern. Gehen Sie zurück zur Grafik und es ist diese. Ziehen wir es also hierher und sagen, setzen Sie die Sichtbarkeit ebenfalls auf versteckt. Okay, jetzt sind sie beide auf versteckt gesetzt, wenn die Menge Null ist. Wenn die Menge jedoch nicht Null ist, möchten wir dieses Bild festlegen. Nehmen wir also dieses Symbol hier, das Bild hier. Und sagen wir, setz den Pinsel von der Textur ab. Und lass uns dieses Symbol setzen. Also wenn es falsch ist, wenn wir tatsächlich, wenn es nicht Null ist, haben wir tatsächlich einen Artikel drin. Lassen Sie uns das Symbol dieses Bildes hier in unser Inventar setzen. Also, was ist das Bild dafür? Denken Sie daran, wir haben den Artikel und lassen Sie uns von hier aus ziehen und Pause sagen. Also ich kann die Informationen zu diesem Artikel hier sehen. Und lassen Sie uns dieses Vorschaubild ziehen. Wir haben das Thumbnail, also können wir es als Textur-Liga verwenden, Pins einblenden, die nicht verbunden sind, wenn Sie den Rest der Informationen ausblenden möchten. Denken Sie jetzt daran, die Sichtbarkeit auf sichtbar zu setzen, da sie derzeit ausgeblendet ist. Ich kann das einfach hier kopieren und verbinden. Und jetzt können wir die Sichtbarkeit nicht zu sichtbar, sondern auf keine Treffer testbar einstellen . Denken Sie daran, dass Sie diese Inventarplätze blockieren, wenn Sie es zu sichtbar einstellen . Sie, wenn Sie es auf „ Keine“ setzen, können Sie es testen. Das bedeutet, dass Sie mit diesem Symbol nicht interagieren können. Und ich glaube nicht, dass wir mit irgendetwas an diesem Symbol interagieren müssen , also setze ich es vorerst auf None Hit Testable. Das Gleiche gilt für den Text. Wir müssen die Menge festlegen. Nehmen wir also den Text hier und ziehen und sagen wir „Text setzen“. Und lassen Sie uns den Text hier auf den Betrag einstellen. Ziehen Sie also diese Menge an Login hier rein und es wird automatisch diese Funktion mit zwei Texten für Sie erstellen . Doppelklicken wir jetzt, um es ein bisschen besser zu organisieren . Und jetzt haben wir für diese Texte die Menge festgelegt. Nun zu meinem Inventar : Wenn dieser Wert eins ist, möchte ich diese Zahl nicht anzeigen, also wird sie so ausgeblendet. Wenn die Menge jedoch zwei ist, wird die Zahl angezeigt. Also wenn es eins ist, möchte ich die Nummer eins nicht wirklich zeigen. Gehen wir nun zur Grafik hier. Und was wir sagen können ist, dass wir wieder von der Menge ziehen und sagen können , wenn diese größer als eins ist, dann wollen wir sie als Zweig anzeigen. Wenn es mehr als eins ist, wollen wir diesen Text nehmen. Also lass mich das einfach hier reinkopieren, den Text. Und wir möchten sagen, dass kein Treffer testbar ist. Also ich möchte diesen Text anzeigen, wenn er es ist, wenn die Zahl größer als eins ist, einfach so. Wenn die Zahl jedoch nicht größer als eins ist , kopieren wir dies. Dann möchte ich diesen auf versteckt setzen. Wenn wir also nur ein Element haben, wird dieser Text nicht angezeigt. Wenn wir zwei oder mehr Elemente haben, wird dieser Text angezeigt und das war es eigentlich. Lassen Sie mich also einfach doppelklicken und das auch besser aussehen lassen . Stellen Sie sicher, dass Ihr Code organisiert ist. Es kann sehr schnell chaotisch werden und es wird lange dauern, und es wird lange dauern bis Sie alles organisiert haben. Das war es also. Lass uns kompilieren. Und jetzt müssen wir diese Funktion aufrufen. Wir haben es nirgends wirklich aufbewahrt. Gehen wir jetzt zurück zum Player-Controller. Innerhalb des Player-Controllers fügen wir das Objekt zu diesem Array hinzu und dann fügen wir die Kinder hinzu. Und jetzt müssen wir auch die Benutzeroberfläche aktualisieren, denn ja, der Artikel wird hinzugefügt. Wir sehen jedoch keine Änderungen, da wir die Benutzeroberfläche nicht aktualisieren. Hier wurde die Benutzeroberfläche aktualisiert, wir befinden uns im WB-Inventarslot. Denken Sie also daran, dass Sie im Player-Controller für jeden der Slots hier dieses Widget erstellen, Sie erstellen hier einen WB-Inventar-Slot. Also können wir das tatsächlich benutzen. Wir können aus diesem Inventar-Slot ziehen und wir können Updates, Inventar-Slot-UI sagen. Dies ist die Veranstaltung, die wir gerade ins Leben gerufen haben. Doppelklicken wir nun, um Notizen zur Umleitung zu machen. Ich werde das hier oben ein bisschen aufgreifen. Es liegt also nicht über meiner Funktion, nicht innerhalb meiner Funktion, einfach so. Und jetzt müssen wir den Artikel und die Menge und den Artikel anschließen. Denken Sie daran, denken Sie daran, dass Sie das bereits gesagt haben, hier sind wir zum Artikel gekommen. Den Artikel hier, sperren Sie ihn ein, die Menge auch, stecken Sie ihn ein. Doppelklicken wir und lassen es ein bisschen besser aussehen. Und einfach so, lassen Sie uns kompilieren und speichern. Jetzt können wir es nicht wirklich mit den Gegenständen testen , da wir kein Plünderungssystem haben. Aber was wir tun können, ist, wenn wir zu den Inventarkomponenten und zum Inventar gehen den Inventarkomponenten und zum Inventar und nur für die Waffen z.B. einfach auf das Plus klicken und einen zufälligen Gegenstand hinzufügen. Hier. In den Items fügen wir einfach etwas hinzu, z.B. diesen, ich kenne diesen Hebel hier nicht. Und wir können sagen, es ist nicht wirklich wichtig, Arbeit, was auch immer. Und jetzt setzen wir die Menge auf eins. Und der Slot-Index ist alles, ist eigentlich egal. Denken Sie also daran, stellen Sie einfach sicher Sie das Symbol und die Menge haben. Lassen Sie uns also auf Play klicken und sehen, ob das funktioniert. also auf das Inventar klicke, kann ich meinen Clever sehen. Wenn ich die Kategorie ändere, kannst du sehen, dass ich sie sehen kann. Ich gehe zurück zu den Waffen. Ich kann mein Hackmesser sehen. Das funktioniert also richtig. Jetzt können wir es auch hier in den Zaubertränken testen. Lass uns einen Zaubertrank hinzufügen. Lass uns auf den Artikel klicken. Und jetzt gehen wir hierher, wählen einen der Zaubertränke aus, z.B. diesen Zaubertrank, stellen die Menge auf fünf, z.B. damit wir sehen können, ob der Text erscheint. Und wenn wir auf Play klicken, klicken wir auf KI und dann auf die Zaubertränke. Sie können sehen, ich sehe, dass ich fünf Quotienten habe. Wenn ich auf die Waffen klicke, kann ich mein Waffenfutter sehen. Wir haben kein Essen. Und jetzt können Sie sehen, dass es richtig funktioniert. Okay, lassen Sie uns weitermachen und diesen löschen, den wir gerade erstellt haben, und die Waffen und die Quotienten. Und jetzt kompilieren wir alles, speichern alles und lassen Sie uns weitermachen. 36. 6.01 Interagieren mit den Elementen: Lassen Sie uns nun beginnen, mit den Objekten zu interagieren. Gehen wir also zuerst zu den Bauplänen und dem Player. Und lassen Sie uns eine neue Eingabeaktion erstellen, bei der wir auf eine Schaltfläche klicken und die Elemente laden können. Also klicken wir mit der rechten Maustaste, gehen wir zu den Eingaben und zum Schutz. Und nennen wir das Loot oder du kannst es Interact nennen. Das liegt an dir. Gehen wir zu den Mapping-Kontexten. Und hier drinnen klicken wir auf das neue Plus hier bei den Mappings. Lassen Sie uns, ich werde das alles für die neue Version minimieren , fügen wir die Laute hinzu, Laute. Und ich drücke hier und drücke meine EE-Taste auf der Tastatur. Ich werde nur das IPA und die gelösten Stoffe verwenden. Und für den Auslöser klicken Sie auf das Plus. Und hier stellen Sie es auf gedrückt und gedrückt, nur sicher, dass Sie diesen E-Button nicht spammen können. Wenn Sie es also gedrückt halten, läuft es nicht die ganze Zeit. Also drücken heißt das nur einmal ausführen, wenn ich auf E klicke. Okay, das ist also hier erledigt. Lassen Sie uns es jetzt schließen. Gehe zum Player. Und hier im Player, lass mich das noch ein bisschen lauter machen. Und hier unten kann ich sagen, dass IA lädt und diese Veranstaltung hier abhält. Was wir jetzt tun können, ist, was wir andeuten müssen, um es über den Server laufen zu lassen. Bisher haben wir mit einem Kunden zusammengearbeitet, weil das alles UI war. Wenn Sie jedoch Gegenstände plündern, stellen Sie sicher, dass Sie sie über den Server laufen lassen, da Sie überprüfen möchten , ob die Kunden die Gegenstände tatsächlich verlieren können. So verhindern Sie Betrug. Also, wenn du hier spielst und du als Server spielst, also dieser, dieser hier ist der Server. Dieser hier ist der Kunde. Nehmen wir an, die Clients sind die Clients Ihre Freunde mit Ihrem Server verbunden haben. Sie werden E drücken obwohl es hier keine Artikel gibt. Wir müssen das überprüfen. Wenn Sie hier als Client auf E klicken, diese Informationen an den Server gesendet. Der Server überprüft, ob diese Zeile auf einem Objekt steht oder nicht, und dann sendet er diese Information zurück an den Client, jetzt stehe ich auf keinem Artikel. Ich klicke auf E. Diese Information muss an den Server gesendet werden. Der Server wird sagen: Nein, du stehst auf keinem Gegenstand, du wirst nichts verlieren. Diese Informationen werden jedoch an den Kunden zurückgesendet. Es wird dem Kunden sagen, dass Sie auf keinen Gegenständen stehen und ich werde hier nichts verlieren. nehme immer den Code, überprüfe ihn mit diesem Server und stelle nur sicher, dass die Clients nicht schummeln und senden diese Informationen an den Client zurück. Bisher haben wir also mit den Kunden zusammengearbeitet, weil es die Benutzeroberfläche war, aber jetzt ist es tatsächlich Spiellogik. Also hier drüben, anstatt den Code einfach direkt von hier aus zu schreiben, denn wenn Sie hier nur eine Druckzeichenfolge schreiben, ist es auch hier sehr gut, einfach eine Druckzeichenfolge zu schreiben, um zu sehen was passiert, wenn ich auf Play klicke. Und hier klicke ich auf e als Server, da steht Hallo. Wenn ich zum Client gehe und als Kunde auf E klicke , heißt es Hallo. Also können der Client und der Server dieses Event ausführen. Ich möchte den Code nur über den Server ausführen, also werde ich den Code hier nicht schreiben. Wir werden jedoch ein neues benutzerdefiniertes Event namens Server-Loot veranstalten. Und dieser wird zuverlässig über den Server laufen. Und dann werde ich das Server-Event hier oben veranstalten. Also, wenn der Client E mag, wird es auch über den Server laufen. Lassen Sie mich also für die Artikel einfach einen Artikel hier platzieren. Also, was die Gegenstände angeht, lassen Sie uns einfach, ich weiß nicht, diese Banane hier platzieren , etwas Zufälliges. Und lassen Sie uns dieses Hackmesser platzieren. Ich werde sie übereinander legen, damit ich weiß, auf wie vielen Gegenständen ich stehe. Und ich werde einen Artikel hier für sich alleine hinstellen, einfach so, damit wir ihn testen können. Was wir hier für die Plünderung tun können, ist, mit der rechten Maustaste zu klicken und zu sagen, dass sie sich überschneiden. Schauspieler, nur auf der Suche nach wie vielen Schauspielern überschneiden wir uns? Und jetzt wird es dich fragen, welche Schauspieler es sein sollen? Ich möchte, dass es die Artikelbasis ist , die wir zuvor erstellt haben. Also nehmen wir die GED-Schauspieler, die sich überlappen, als Sie auf den Objekten standen, es wird geprüft, wie viele Schauspieler wir uns überschneiden. Ich nehme das und sage Länge und frage dann, ob das über Null liegt. Ich möchte diesen Code also immer dann ausführen, wenn ich tatsächlich auf einem Objekt stehe, denn wenn die Länge der überlappenden Darsteller Null ist, dann stehen wir auf nichts und ich möchte meinen Code nicht ausführen. Wenn es also über Null ist, möchte ich meinen Code tatsächlich ausführen. Das ist es für dieses Video. Klicken wir hier einfach auf die orange Zeichenfolge und schauen, ob alles richtig funktioniert. Und die Sache, die ich ausdrucken möchte, drucken wir einfach die Länge der olympischen Schauspieler aus, was bedeutet, wie viele Schauspieler überlappen wir uns tatsächlich? Also klicke auf das Spiel. Und hier als Server gehe ich zu diesen beiden Items und klicke auf IE, du kannst sagen, wenn es auch regnet, stehe ich jetzt tatsächlich auf zwei Items, wenn ich hier hingehe und auf e klicke, passiert nichts, weil denk daran, dass wir nur drucken, wenn es über Null ist. Wenn ich rübergehe und das hier laute, steht da ein Punkt, also funktioniert es einwandfrei. Und wenn ich das auch als Client mache, können Sie sehen, dass der Server die Informationen druckt, was sehr gut ist, weil wir diesen Code nur über den Server ausführen wollen und alles ordnungsgemäß funktioniert. Also lass uns das löschen und lass uns im nächsten Video weitermachen. 37. 6.02 Erste Add hinzufügen: Okay, hier haben wir aufgehört und fügen wir nun die anfängliche Logik für das Hinzufügen des Elements hinzu. Gehen wir also zurück zu den Komponenten und zum Inneren der Inventarkomponente. Und hier müssen wir ein benutzerdefiniertes Ereignis namens Zum Inventar hinzufügen erstellen . Klicken wir also mit der rechten Maustaste auf Benutzerdefiniertes Ereignis Zum Inventar hinzufügen. Und diesen können wir über den Client ausführen, weil wir ihn bereits über den Server ausgeführt haben und wir mit einem Objekt interagieren. Und jetzt lassen Sie es über den Client laufen , da dies eigentlich die Benutzeroberfläche ist und wir das Symbol zum Inventar hinzufügen müssen. Zum Inventar hinzufügen, das über den Client läuft und der Server läuft besitzen den eigenen Client, sorry, und zuverlässig. Lass es uns jetzt hier oben ausführen. Cl, zum Inventar hinzufügen. Und das, was wir hinzufügen müssen, ist nur der Artikel. Also klicken Sie hier, klicken Sie auf das Plus, suchen wir die Elementbasis als Variablentyp, weil wir dieses bestimmte Element oder eine Anspielung hinzufügen möchten . Jetzt können wir daraus ziehen und es auch hier hinzufügen. Und lass uns kompilieren. Und jetzt für den Spieler, wir können jetzt dieses Inventar machen und sagen, zum Inventar hinzufügen, einfach so. Und über welchen Gegenstand sprechen wir? Wir sprechen über diesen speziellen Punkt, den wir überschneiden. Also lass uns hierher ziehen und etwas Platz schaffen. Nun, worauf wir hinweisen möchten, Sie können dies mit zwei Methoden tun je nachdem, welches Spiel Sie erstellen. Wenn du hier also auf E klickst und einen Gegenstand verlieren möchtest, kannst du alle Gegenstände auf einmal plündern. Du kannst es so machen. Du kannst also hier nehmen und „Für jeden Loop“ sagen und du kannst diese für jeden dieser Artikel dem Inventar hinzufügen. Für mein Spiel möchte ich jedoch nur einen Gegenstand nach dem anderen plündern. Also werde ich von hier wegziehen und sagen, bekommt eine Kopie. Also werde ich es nicht wiederholen. Ich hole nur den ersten Artikel. Wir brauchen hier kein Plugin. Also nehme ich den ersten Gegenstand, mit dem wir ihn überschneiden, und füge ihn dann dem Inventar hinzu. also diesen Artikel hier nehmen, können wir ihn nicht wirklich direkt anschließen, da es sich bei diesem Objekt um ein Actor-Objekt handelt. Und wenn wir es hier anschließen, funktioniert es nicht, da es sich um eine BP-Artikelbasisobjektreferenz handelt . Also zwei verschiedene Dinge. Jetzt wissen wir also, dass dies auf dem Artikel basiert. Wir, wir haben es hier im Filter geschafft. Wir haben gefiltert, dass das Einzige, womit wir hier interagieren werden , das Item-based ist, das man sich anhören kann. Und sie bekommen, wir können von hier aus ziehen und wir können die Artikelreferenz abrufen. Jetzt haben wir wieder nur Interfaces für den Player und für den Player-Controller erstellt . Also lass uns ein neues machen. Klicken wir mit der rechten Maustaste auf Blueprints und Blueprint-Interface. Lass uns einen für die Artikelbasis erstellen. Und hier doppelklicken wir und rufen für die Funktion die Artikelreferenz ab. Und jetzt sind die Ausgänge. Denken Sie daran, dass Sie hier den Bauplan schreiben , auf den Sie verweisen möchten. Ich möchte auf meine Artikelbasis verweisen und nenne sie Artikel. Gehen wir nun zur Artikelbasis und fügen diese Schnittstelle hinzu. Gehe zu Items, item based hier in den Klasseneinstellungen und hier bei der Interface-Elementbasis kompiliere hier in der Schnittstelle, doppelklicke hier darauf und lege die Referenz als Selbstreferenz fest, da wir uns innerhalb der Item-Basis befinden. Gehen wir jetzt zurück zum Spieler. Und hier können wir jetzt ziehen und sagen, Artikelreferenz abrufen. Jetzt haben wir diese Artikelreferenz und können sie jetzt hier einfügen und dem Inventar hinzufügen. Lass uns, lass uns sie hier zusammenstellen, damit es ein bisschen besser aussieht, so etwas hier kannst du sogar doppelklicken und es so aussehen lassen. Wir holen uns den ersten Gegenstand, dessen Breite sich überlappt , erhalten diese Referenz und fügen ihn dann erneut zum Inventar hinzu, falls ihr jeden einzelnen Gegenstand, auf dem ihr steht, mit nur einem Klick plündern wollt jeden einzelnen Gegenstand, auf dem ihr . Du musst das nehmen, sagen wir für jede Schleife. Und dann holen Sie sich für jede Schleife die Artikelreferenz. Und dann kannst du hier jeden einzelnen anschließen. Es wird das also durchgehen, bis es keine Gegenstände mehr zum Plündern gibt , und dann wird es aufhören. Also möchte ich nur einen Gegenstand nach dem anderen plündern. Damit bin ich zufrieden, mit allem, und lass mich jetzt zurück zum Inventar gehen. Also hier haben wir jetzt einen Punkt, auf den wir anspielen. Also wenn du einfach auf Drucken klickst und dich gerade hier verbunden hast, und das hier einfach damit verbindest. Man kann also eigentlich einfach sehen, was passiert. Also klicken wir auf Play. Jetzt. Hier ist der Server. Ich gehe hier hin, wie bei E und da wird Fleisch stehen. Es weiß also, welchen Gegenstand man verliert. Ich stehe jetzt in zwei Punkten, es wird verloren gehen. Der erste überschneidet sich mit. Wenn ich darauf klicke, wird Cleaver angezeigt. Wenn ich hier zur Seite gehe und nur mit der Banane interagiere, heißt es Banane. Fantastisch. Also funktioniert alles. Also hier möchte ich einfach mit der rechten Maustaste klicken und dies zu einer Variablen hochstufen und es Element zum Hinzufügen nennen. Und für diesen möchte ich auch die Artikelinformationen abrufen und diese zu einer Variablen machen. Später wird es viel sauberer für uns geben. Denken Sie also daran, dass wir Artikelinformationen abrufen erstellt haben, aber wir benötigen einen Namen. Und denken Sie noch einmal daran, in der Artikelbasis haben wir diesen Artikelnamen, diese Variable hier, bereits erstellt. Und als wir es in die Artikelbasis für jedes einzelne Kind geschafft haben, mussten wir den Artikelnamen hier oben schreiben. Wenn ich es also einfach so normal öffne, denken Sie daran, wenn Sie eine Variable in der übergeordneten Blueprint-Klasse, der elementbasierten, erstellen, erben alle Kinder diese Variable. Und Sie können jetzt hier die Klassenstandardwerte eingeben und die Namen für alle hier eingeben. Also haben wir diesen Namen eigentlich schon . Gehen wir also zur Inventarkomponente. Lassen Sie uns nun vom Element ableiten und diese Elementnamenvariable abrufen . Und jetzt können wir es hier anschließen und Informationen zu diesem Artikel abrufen. Nur für diesen Fall klicke ich mit der rechten Maustaste auf eine Variable und nenne sie einfach item, um Informationen hinzuzufügen. Wir haben also die Informationen zu dem Artikel, den wir hinzufügen möchten, und das war es vorerst. Lassen Sie uns also alles kompilieren und mit der nächsten Lektion fortfahren. 38. 6.03 Hinzufügen eines Gegenstands zum Inventar: Okay, jetzt brauchen wir etwas Logik , um den Artikel zum Inventar hinzuzufügen. Also hier haben wir das zum Inventar hinzugefügt. Nach dieser Lektion werden wir überprüfen, ob dieser Artikel stapelbar ist oder nicht. Wenn es nicht stapelbar ist, erstellen wir einen neuen Stapel im Inventar und fügen diesen Artikel hinzu. Wenn der Artikel stapelbar ist, überprüfen wir, ob wir den Artikel bereits im Inventar haben , und fügen ihn dem Stapel hinzu. Wenn nicht, werden wir einen neuen Stapel erstellen. Wir werden dies und das nächste machen, aber nur für zwei, lasst uns einen besseren Ablauf bekommen . Wir müssen zuerst eine Funktion erstellen , bevor wir das alles tun können. Lassen Sie uns hier eine neue Funktion erstellen und sie Artikel zum Inventar hinzufügen nennen. Das ist also, diese Funktion hier ist der letzte Schritt. Wenn wir also einen neuen Stapel erstellen oder einen Teilstapel finden und dieses Element hinzufügen, wird diese Funktion aktiviert. Nehmen wir an, wir erstellen erfolgreich einen neuen Stack. Dann fügen wir diesen Gegenstand dem Inventar hinzu , nachdem wir einen neuen Stapel erstellt haben. Das ist also der letzte Schritt. Lass uns einfach diesen machen, bevor wir alles andere machen, denn das wird die Dinge viel reibungsloser machen. Lass uns gehen, um Inventar für Artikel zwei hinzuzufügen. Lassen Sie uns hier für die Eingabe auf die Artikelinformationen verweisen. Also der Artikel, den wir hinzufügen möchten , und auch die Menge des Artikels. Das ist also eine Ganzzahl und nennen wir sie Menge. Und dann denk daran, dass wir für die Gegenstände auch die Inventarplätze haben. Wenn wir also zurück zum Spielercontroller gehen und hier drüben, haben wir für jeden Gegenstand quasi auch den ISM, wir haben die Gegenstandsmenge, wir haben auch den Inventarplatz und wir haben den Inventarindex, also können wir das auch hier verwenden. Gehen wir also zurück zu der Komponente hier und zu vier hier. Ändern wir es auf Inventarplätze. Wählen wir diese Widget-Blueprint-Referenz und nennen wir sie, nennen wir sie Inventarplätze. Und diesen nennen wir ihn Slot-Index. Und ich mache auch einen neuen. Und wir müssen wissen, welchem Inventar wir es hinzufügen? Fügen wir es der Waffenkategorie hinzu? Fügen wir es dieser Lebensmittelkategorie oder dieser Kategorie Zaubertränke hinzu ? Also lasst uns auch hier ein neues machen. Und lasst uns nach Inventarplätzen suchen. Weil dies die Art von Inventar-Slot-Strukturen sind. Also Inventarplatz, lassen Sie uns ihn in ein Array umwandeln und nennen wir diesen einen Inventar. Es hängt also davon ab, in welcher Inventarkategorie wir uns befinden. Wir möchten diesen Artikel zu dieser Kategorie hinzufügen. Okay, lassen Sie uns jetzt diese Bestandsaufnahme machen und das Array-Element festlegen. Außerhalb dieser Funktion wird nun entschieden, zu welcher dieser drei Funktionen sie hinzugefügt wird. Wir nehmen diese Information und setzen das Array-Element. Was ist nun der Index? Der Index ist einfach dieser Slot-Index. Ganz einfach. Nun zu diesem Artikel, wieder, genau wie zuvor, nehmen wir das und schreiben make. Für diesen Artikel möchten wir diesen Artikel hier hinzufügen. Wir möchten diese Menge hinzufügen, wir möchten diesen Inventarplatz hinzufügen und wir möchten diesen Slot-Index hinzufügen. Das ist also der Artikel, den wir jetzt zum Inventar hinzufügen. Und es ist eigentlich so einfach, diese Funktion ist fertig. Es gibt ein wirklich kleines, kleines Detail. Und stellen Sie sich vor, wir befinden uns bereits in dieser Kategorie. Nehmen wir an, ich plündere eine Waffe, ich lade alles passiert. Und da bin ich schon drin. Als ob ich meine Waffeninventarkategorien bereits ausgewählt habe. Wenn ich also eine Waffe lade, sollte sie sofort mein Inventar aktualisieren. Ich kann also tatsächlich sehen, dass ich die Waffe hier geladen habe nur um sicherzugehen, dass das Inventar aktualisiert wird. Also das Inventar, in dem ich mich bereits Wenn ich also eine Waffe verliere und bereits in der Waffenkategorie bin, wollen wir sicherstellen, dass die Benutzeroberfläche aktualisiert wird damit ich sehen kann, dass sich die Benutzeroberfläche ändert. Was wir also tun wollen, wir wollen diesen Gegenstand nehmen und lassen Sie uns das hier aufschlüsseln. Und ich möchte die Kategorie des Artikels nehmen , den ich lade. Jetzt möchte ich sehen, ob dieser Artikel, den ich lade , dieselbe Kategorie hat wie der, den ich ausgewählt habe. Offenbar. Wenn ja, möchte ich die Benutzeroberfläche aktualisieren. Wenn nicht, möchte ich die Benutzeroberfläche nicht aktualisieren. Und der Grund, warum ich die Benutzeroberfläche nicht aktualisieren möchte , ist, dass wenn ich dieses Essen einfach hier schleife und es hier geladen wird und ich, ich bin, ich habe die Waffenkategorie ausgewählt. Wir müssen diese Benutzeroberfläche nicht wirklich aktualisieren , da sie dem Essen hinzugefügt wurde und ich mich in den Waffen befinde, sodass wir momentan nichts aktualisieren müssen. Denken Sie daran, wenn Sie hier auf neue Kategorien klicken, werden automatisch alle Slots aktualisiert, die wir bereits aktualisieren, wenn wir auf die Inventarkategorien klicken , wenn wir auf die Inventarkategorien Wir möchten jedoch nur aktualisieren, wenn wir uns bereits in dieser Kategorie befinden , da sie nirgends sofort aktualisiert wird . Also hier werde ich überprüfen , ob die angedeutete Artikelkategorie hier gleich ist, entspricht Aufzählung, ob sie der ausgewählten Kategorie entspricht , die ich gerade habe. Und wenn ja, lass uns hier eine Filiale eröffnen. Wenn es gleich ist, denken Sie daran, dass wir im Inventar-Slot-Widget unser Telefon gemacht haben, wir haben unser Event namens Updates, Inventar-Slot-UI gemacht. Und der Artikel, den wir anschließen müssen, das ist dieser Artikel und diese Menge. Jetzt wird diese Benutzeroberfläche aktualisiert , wenn ich meinen Artikel lade. Also, wenn ich mich bereits in dieser ausgewählten Kategorie befinde und dieser Artikel zu dieser ausgewählten Inventarkategorie hinzugefügt wird . Es wird meine Benutzeroberfläche sofort aktualisieren, damit ich die Änderung tatsächlich sehen kann, oder? Jetzt habe ich einige Umleitungsknoten erstellt und so sieht es aus, ein bisschen organisierter, organisiere sie vorher, stelle nur sicher, dass dein Code besser organisiert ist. Und jetzt, wenn Sie mit dem Ergebnis zufrieden sind, lassen Sie uns jetzt kompilieren, alles speichern und weitermachen. 40. 6.05 Einen Teilstapel finden: In Ordnung, willkommen zurück. Jetzt gehen wir zum zweiten Teil, in dem wir ein Makro erstellen, um einen Teilstapel zu finden , der bereits im Inventar vorhanden ist. Bisher haben wir versucht herauszufinden, ob der Artikel stapelbar ist oder ob es sich um Muttern handelt. Und wenn es nicht stapelbar ist, erstellen wir einen neuen Stapel und fügen diesen Artikel dem Inventar hinzu. Wenn der Artikel stapelbar ist, versuchen wir nun , im Inventar herauszufinden , ob wir diesen Artikel bereits haben. Was wir jetzt machen können wie zuvor hier, wo wir das Inventar haben. Lassen Sie uns das alles einfach hierher kopieren. Und ich werde diesen Loop auch kopieren. Kopiere das einfach, geh zurück und füge es ein. Im Grunde genommen werden wir, genau wie zuvor, diese Kategorie für diesen Artikel verwenden. Dann wählen wir die Kategorie aus. Denn je nachdem, um welche Kategorie es sich handelt, wollen wir in diesem speziellen Inventar nachschauen, z. B. wenn wir einen Trank anspielen, wählen wir den Trank aus und durchgehen das Inventar nach den Tränken, um zu sehen, ob wir den Gegenstand, den wir laden, bereits haben. Wenn das stimmt, lassen Sie uns hier einfach eine Verbindung zum Ausführungsplan herstellen und um herauszufinden, ob wir diesen speziellen Punkt haben, auf den wir anspielen, können wir daraus ableiten und ihn aufschlüsseln. Und hier in diesem Artikel, lass es uns noch einmal kaputt machen. Und denken Sie daran, dass wir hier einen Namen für den Artikel haben. Also ziehe ich von hier aus und sage gleich und wähle dieses für den Text, der genau gleich ist. Nun, wenn der Name genau diesem Namen für den Artikel entspricht, einschließlich, nehme ich diesen, unterteile ihn ebenfalls und verbinde den Namen hier. Verstecken Sie auch für diesen Pins, die nicht verbunden sind. Und lasst uns auch einen Zweig machen. Also, was wir jetzt tun, wir durchforsten das Inventar, z. B. Zaubertränke . Um also einen Trank zu laden und dann für jeden einzelnen Gegenstand darin, überprüfen wir tatsächlich, ob dieser Name für den Gegenstand existiert. Wir spielen an. Wenn der Name existiert, bedeutet das, dass sich der Artikel bereits im Inventar und wir hier einen Teilstapel gefunden haben. zweite Sache, die wir tun müssen, um sicherzugehen, dass wir gerade überprüfen, ob der Artikel im Inventar ist. Was aber, wenn der Artikel bereits die maximale Stack-Größe erreicht hat? Also z.B. Zaubertränke, sagen wir, ich kann fünf Heiltränke verlieren . Was wäre, wenn? Was ist, wenn ich den Artikel in meinem Inventar habe und einen Teilstapel gefunden habe Aber darauf habe ich schon volle Stapel, auf diese Staffelung, die ich habe. Nehmen wir an, überprüfen Sie nicht nur den Namen, sondern auch die Menge, die wir im Inventar haben. Also hier drüben, klicken wir auf diesen und zeigen die Artikelmenge für diesen Artikel in unserem Inventar an. Und diese Artikelmenge muss hier unter der maximalen Stapelgröße dieses Artikels liegen. Lassen Sie uns also die Max Stack-Größe zeigen und sie hier verbinden. Um also einen Teilstapel im Inventar zu finden, muss er genau den gleichen Namen haben wie der Artikel in unserem Inventar. Und der Artikel in unserem Inventar muss, die Menge muss unter der maximalen Stapelgröße für den Artikel liegen. Andernfalls müssen wir einen neuen Stapel finden und einem neuen Inventarplatz die Bearbeitung hinzufügen. Klicken wir hier, verstecken Sie einfach verbundenen Pins auch für diesen. Lassen Sie uns hier ziehen und sagen, Ende Boolean. Also verwenden wir diesen und Boolean. Wenn der Name also genau derselbe ist und die Menge unter der maximalen Stapelgröße liegt, können wir davon ausgehen, dass wir einen Teilstapel gefunden haben. Lassen Sie uns also einen neuen booleschen Wert erstellen. Und dieser, den ich anrufen werde, muss einen Stapel erstellen. Ich setze diesen Wert hier auf false, weil wir jetzt einen Teilstapel gefunden haben und die Menge von, die Menge ist nicht größer als die Max Stack-Größe. Sie ist niedriger als die maximale Stapelgröße, was bedeutet, dass wir dem Stapel tatsächlich Elemente hinzufügen können . Es muss also einen Stapel erstellen, der auf false gesetzt , und wir können das Element bearbeiten. Bevor ich das mache, genau wie zuvor, wählen wir das alles hier aus. Klicken wir mit der rechten Maustaste und machen daraus ein Makro. Und dieses Makro werden wir find partial stack nennen , so wie hier. Und für die Ausgabe muss ich wieder einen, einen Inventarartikel, hinzufügen. Also dieses Jahr schleppend. Also für die Ausgabe benötige ich all das. Auch hier, genau wie das, was ich mit dem neuen Stapel erstellen gemacht habe. Also lasst uns weitermachen und auf Teilstapel suchen klicken. Lassen Sie uns hier ein paar Variablen hinzufügen. Der erste ist ausgeglichen, also haben wir einen Gegenstand gefunden und das ist hier ein Ausführungs-Pin. Und lassen Sie uns das vorerst wegziehen. Also Artikel, der hier im Teilstapel gefunden wurde, wieder, genau wie zuvor, Artikel zum Hinzufügen. Und dann haben wir die Menge. Zum Hinzufügen haben wir dann den Slot-Index und den letzten hier haben wir die Inventarvariable. Der erste Artikel ist die Artikelinformation. Dies ist der Artikel, den wir hinzufügen möchten. Diese Menge ist nur eine Ganzzahl. Der Slot-Index ist ebenfalls nur eine Ganzzahl. Und den Inventarplatz habe ich eigentlich vergessen hinzuzufügen. Lassen Sie mich den Inventarplatz hinzufügen , der der Widget-Blueprint ist. Also Inventarplätze und Auswahl dieser Widget-Blueprints. Wenn ich es hier aufstelle, werde ich es hier einfach über den Slot-Index stellen . Das Inventar besteht aus den Inventarplätzen und wählt es dann als Array aus. Und dieses, ich nenne es nicht gefunden. Also, wenn wir keinen Artikel gefunden haben und das ist ein Execution Pen. Und ich möchte auch einen neuen namens Loop Complete machen, genau wie zuvor, mit dem wir hier etwas anfangen können. Die Schleife wird also abgeschlossen, nicht gefunden. Lass uns alles kompilieren und speichern. Ordnung, gehen wir also hierher zurück und lassen Sie uns die Dinge innerhalb dieses Makros ein wenig neu organisieren. Das ist also, was du bisher hast. Und wenn wir keinen Stapel erstellen müssen, können wir diesen dem Inventar hinzufügen. Was wollen wir also hinzufügen? Was wollen wir hinzufügen? Ist dieser Artikel hier, Artikel, Artikel, um Informationen hinzuzufügen. Lassen Sie uns das kopieren und hier einfügen, die Menge für den Artikel. Lassen Sie uns diesen Artikel ziehen, um ihn wie zuvor hinzuzufügen und die Menge zu sagen. Nehmen Sie diese Artikelmenge abrufen und fügen Sie sie hier hinzu. Für den Inventarplatz. Wir haben dieses Inventar hier, damit wir den Inventarplatz und den Index nutzen können . Lassen Sie uns die auch hier reinziehen. Dann haben wir wieder das Inventar. Es ist dieser hier. Lass es uns ziehen und verbinden. Okay, genau hier prüfen wir , ob die Artikelmenge im Inventar niedriger ist als die maximale Stapelgröße für den Plündergegenstand oder den angedeuteten Gegenstand hier. Und wenn ja, haben wir einen Gegenstand gefunden und müssen keinen Stapel erstellen. Lassen Sie mich jetzt hier raus gehen, bevor wir hier etwas tun, lassen Sie mich einfach eine weitere Logik hinzufügen, um sicherzugehen. Also hier drüben, im Moment gibt es etwas, nach dem wir nicht suchen. Wenn ich diese Menge nehme, um den Artikel hinzuzufügen, und fragen muss, ist sie niedriger oder entspricht sie dem Jahr? Lassen Sie mich das Element nehmen, um Informationen hinzuzufügen , es aufteilen und die hier angegebene maximale Stapelgröße nehmen. Nun, bevor wir den Inventarartikel überprüfen, überprüfe ich gerade die Menge, die ich gerade lerne. Ist es mehr, als ich in diesen Stapel stecken kann? Oder kann ich die ganze Menge in den Stapel füllen , den ich gerade gefunden habe? Also stelle ich nur sicher, dass ich hier keinen weiteren Stapel erstelle. Also lass es mich verbinden. Wenn also diese hinzuzufügende Menge kleiner oder gleich der maximalen Stapelgröße ist, werden wir keinen Stapel erstellen. Lassen Sie mich es also auch hier hinzufügen. Und lassen Sie mich den Artikel zuerst hinzufügen. Und dann ist say has to create stack auf false gesetzt. Und lass mich weitermachen und es kaputt machen. Im Moment haben wir also keinen Break-Execution-Pin, also lass mich darauf klicken und lass uns einen weiteren namens Break Loop erstellen . Stellen wir nun eine Verbindung zur Bremsschleife her. Also hier unten, wenn es stimmt, wie die Menge der Elemente, die wir hinzufügen müssen, wenn sie tatsächlich nicht unter der maximalen Stack-Größe liegt, was bedeutet, dass wir tatsächlich einen weiteren Stapel erstellen müssen. Also werden wir alles, was wir haben, zu diesem aktuellen Stack hinzufügen . Und dann erstellen wir einen weiteren Stapel. Also nochmal, genau wie zuvor, erinnere dich hier und an den Craig New Stack, hast berechnet, was du hier noch übrig hast. Also müssen wir eigentlich dasselbe tun. Lass uns das einfach kopieren und einfügen. Also werde ich das alles hier kopieren und hier zum Event Graph gehen. Und wir können es hier einfügen. Das hier müssen wir wieder zum Inventar hinzufügen, genau wie zuvor, wir müssen die Menge hinzufügen, ist die maximale Stapelgröße für diesen Artikel hier. Und lassen Sie uns den Artikel verbinden. Verbinden wir den Inventar-Slot, den Slot-Index sowie das Inventar. Und dann setzen wir diesen booleschen Wert auf true. Wir müssen also einen neuen Stapel erstellen, um diese verbleibende Menge an Artikeln hinzuzufügen. Stellen wir es also auf wahr. Und dann ziehe ich es und stecke es hier ein weil das zurück zu dieser Break-Loop geht. Doppelklicken wir hier. Lass es uns sauber machen. Gehen wir nun zurück zu diesem feinen Teilstapel und lassen Sie uns hier im Ganzen etwas tun. Und denken Sie auch daran, diese Pausenschleife hier drinnen einzulegen. Also stellen wir sicher, dass wir den Kreislauf tatsächlich komplett unterbrechen. Nehmen wir unsere Hände, um einen Stapel zu erstellen und einen Zweig zu erstellen. Jetzt fragen wir uns, müssen wir einen Stapel oder Nüsse machen? Was haben wir während dieser Runde eingestellt? Wenn wir einen Stapel erstellen müssen, möchten wir diesen auf item not found setzen, da wir einen neuen Stapel erstellen müssen. Wenn wir keinen neuen Stack erstellen müssen, wird die Schleife einfach so abgeschlossen. Lass es uns hier ablegen, einfach so. Wenn wir also einen neuen Stapel erstellen müssen, bedeutet das, dass der Artikel nicht gefunden wurde. Und wenn das Objekt nicht gefunden wird, ziehen wir es direkt hierher und erstellen einen neuen Stapel. Also jetzt wurde der Artikel nicht gefunden. Wir müssen einen neuen Stack erstellen. Okay, wenn das Objekt also nicht gefunden wird, erstellen wir einen neuen Stapel und die Schleife ist abgeschlossen, nur wenn wir den Stapel bereits gefunden haben und wir nichts tun müssen , damit wir einen Sound abspielen können oder was auch immer wir wollen. Gehen wir nun zurück zum feinen Teilstapel. Wir vermissen hier einen letzten Schritt. Nehmen wir an, wir haben hier einen Stapel, der dem Namen des angedeuteten Gegenstands entspricht, und die Menge des Gegenstands in diesem Inventar ist niedriger als diesem Inventar ist niedriger als die maximale Stapelgröße für den Artikel, auf den wir anspielen. Wenn das falsch ist, müssen wir etwas wie zuvor tun. Wir nehmen diese Schleife hier und sagen Plus, Plus. Also werden wir um eins erhöhen. Und genau wie zuvor achten wir darauf, dass das hier weniger ist als die Anzahl der Slots, die wir in unserem Inventar haben. Lass uns einen Zweig machen. Und wenn das stimmt, wenn es tatsächlich niedriger als der Betrag ist, lassen Sie uns das hier eintragen. Und wenn es tatsächlich niedriger ist als die Anzahl der Steckplätze, lassen Sie uns einfach weitermachen, einfach hier eine Schleife machen und einen, finden Sie einen Artikel im nächsten Index, oder? Also habe ich es nur ein bisschen organisiert. Jetzt ist es also größer als die Anzahl der Steckplätze, die wir haben. Dann nehmen wir an, dass dies einen Stapel erstellen muss, um auf true gesetzt zu werden, da wir auch hier kein Element finden können, auf das wir anspielen. Also müssen wir einen neuen Stapel erstellen und daraus ziehen und ihn in die Pause stecken. Denn jetzt müssen wir den Kreislauf unterbrechen. Und jetzt, wenn wir weitermachen und den Kreislauf unterbrechen, denken Sie daran, wenn der Vorgang abgeschlossen ist, da heißt es, ja, Sie müssen einen Stapel erstellen, und das geht zu dem Element, das nicht gefunden wurde, über das dann ein neuer Stapel entsteht. Okay, also lasst uns sicherstellen, dass das tatsächlich funktioniert und schauen, ob wir wie zuvor irgendwelche Bugs haben. Lass uns alles speichern. Jetzt haben die Bananen die stapelbare Einstellung auf true gesetzt, also können wir es mit den Bananen versuchen. Und stellen wir das auch hier ein. Lassen Sie uns tatsächlich überprüfen, was wir für die Bananen gesagt haben. Gehen wir also zu den Artikelinformationen, die Banane hat, wenn wir sie maximieren, hat sie die maximale Größe, Stapelgröße, zehn. Also lass uns diese Banane hier duplizieren und Alt gedrückt halten und ziehen, ich werde sie hier duplizieren. Also setze ich für diesen Artikel die Artikelmenge auf fünf. Und für diesen setze ich ihn auf vier. Und dann kopieren wir es noch einmal. Und setzen wir das wieder auf fünf. Lass uns alles speichern. Lass uns versuchen, es für den Server durchzuspielen. Wenn ich auf AI klicke, klicke ich hier auf E. Es wurde dem Essen hier hinzugefügt. Ja, wir haben fünf Bananen. Ich klicke hier darauf. Da steht, dass mit der Menge etwas dran ist. Wir stellen es hier falsch ein. Und wenn ich auf Ohr klicke, wird es auf fünf gesetzt, also stimmt etwas nicht. Es legt hier nur die Menge fest. Gehen wir zurück. Und natürlich sehe ich den Bug sofort hier in den Teilstapeln finden. Ich füge hier die Menge eigentlich nicht hinzu. Also lass mich das löschen, lass es eigentlich einfach sein. Was wir tun müssen, ist diese Artikelmenge zu nehmen und dann müssen wir mit dem bearbeiten, was sich bereits im Inventar befindet natürlich mit dem bearbeiten, was sich bereits im Inventar befindet. Also hier nehmen und sagen, addieren, also plus Verlust, den Betrag, der sich bereits im Inventar befindet. Also lass es mich hier einstecken. Und lassen Sie mich das in das von T2 ed einstecken und kompilieren. Und kurz bevor wir das Spiel ausprobieren, also hier in der Schleife, fertig, lasst uns den Gegenstand einfach wie zuvor zerstören , weil wir ihn dem Inventar hinzufügen . Lassen Sie mich das alles ein bisschen von hier wegbewegen. Lass mich das einfügen. Und um die Runde zu beenden, lasst uns weitermachen und die Gegenstände zerstören. Lassen Sie mich die Größe für Sie ändern. Lass mich hier auf E klicken. Jetzt verlieren wir fünf oder laden neun. Jetzt sollte es zehn heißen und das für nur 10,5. Und ich vermute, das ist jetzt richtig, aber ich vermute, wir haben wieder ein Problem mit einer Verzögerung, genau wie wir es hier mit der Erstellung eines neuen Stacks getan haben. Und wir haben den Code verschoben. Wenn ich ihn hier finde, haben wir den Code verschoben. Lass uns dasselbe tun, weil ich vermute, dass es hier tatsächlich dasselbe tut. Wenn das Element also nicht gefunden wird und es einen neuen Stapel erstellt, verzögern wir es wie zuvor um 0,03. Lass es uns einfach versuchen, bevor ich alles neu organisiere Lass uns auf Play klicken. Und ich werde mir das ansehen. Ich gehe zurück, ich gehe dorthin, ich werde das auch laden. Jetzt heißt es fünf, es nervt immer noch. Und was ist, wenn ich versuche, die Verzögerung zu erhöhen? Und ich versuche das nochmal? Jetzt funktioniert es perfekt. Es ist also eigentlich diese Verzögerung. Wir müssen diese Verzögerung hier beheben, vielleicht etwas 0,05. Ich bin kein Fan davon, das zu hoch zu stellen, weil du es im Spiel tatsächlich spüren kannst , wenn du es zu hoch stellst. Ich versuche nur, dass es richtig gut funktioniert. Also 0,05 funktioniert gut, du kannst es so haben, vielleicht auch 0,04 Wochen. Aber jetzt funktioniert es perfekt. Also fügen wir diese jetzt tatsächlich hinzu. Also, wenn wir auf Play klicken und ich habe die mit fünf einfach geliebt. Also diesen, ich werde auch diesen lassen, der fünf hat. Wenn ich jetzt diesen lade, wird er ebenfalls zum Inventar hinzugefügt. Und wenn ich dies und das anspiele, nehme ich die in mein Inventar auf. Denn denken Sie daran, dass wir zwei Messer und zwei Hackmesser hatten, dieses muss in der Verzögerung erhöht werden. Also vielleicht ist 0,05 eine bessere Zahl. Lassen Sie uns das auch hier im Create New Stack ändern, nur damit wir diesen Fehler nicht bekommen. Und als letzten Test lassen Sie uns das Spiel erneut ausführen. Lass mich das hier laden, ergibt fünf. Lass mich die Mitte laden. Das ist 2.2. Das ist richtig. Dieses Gesäß das, und das alles ist richtig. Jetzt, großartig. Das war es also für die Erstellung eines Teilstapels. Also lasst uns das für diese Verzögerung einfach etwas organisierter machen , lasst es uns einfach hier ablegen. Also was wir hier machen, jetzt haben wir einen neuen Stapel erstellt und wir finden auch einen Teilstapel, wenn wir ihn bereits im Inventar haben und der Gegenstand stapelbar ist, andernfalls, wenn er nicht gefunden wird. Wir haben also schon einen vollen Stapel. Wir werden dafür einen neuen Stack erstellen. Und hier, in der Schleife abgeschlossen, kannst du den Gegenstand zerstören. Sie können sogar einen Soundeffekt abspielen, und das werden wir später tun. Also mach weiter und organisiere deinen Code, damit er besser aussieht, und das war es für den Moment, speichere deine Arbeit und lass uns weitermachen. 41. 6.06 Optimiere das Inventar: Hallo und willkommen zurück. Deshalb möchte ich jetzt das Inventar optimieren , bevor wir weitermachen. Es gibt also einen kleinen Fehler. Nun, wenn ich diesen hier und diesen hier anspiele, ergibt das vier plus fünf, es sollten neun Bananen sein. Und das ist richtig. Wenn ich allerdings nochmal auf Play klicke und sie anspiele, ohne das Inventar zu öffnen, steht da richtig keine. Wenn ich den letzten Stapel verliere und es stehen zehn, das erste Deck, und für den nächsten Stapel, wird das nicht so angezeigt. Es werden nur vier angezeigt. Es sollte 10,4 sein. Also hier gibt es einen Bug. Das liegt daran, dass wir nicht all diese Widgets erstellen , es sei denn, wir haben das Inventar geöffnet. Du kannst also sehen, ob ich noch einmal auf Play klicke. Und wenn ich das Inventar öffne, alle Kategorien ansehe, das Inventar schließe und ich spiele hier alles an. Sie können sehen, wenn ich das Inventar öffne, es funktioniert tatsächlich. Der Grund, warum es von Anfang an nervt , ist, dass wir das Inventar nicht öffnen. Und das liegt auch daran, dass wir nicht alle diese Slots anzeigen oder alle erstellen , es sei denn, wir haben das Inventar geöffnet. Das ist ein kleiner Bug, den wir beheben wollen. Außerdem möchte ich das Inventar reparieren und optimieren weil ich weiß, dass der Code besser sein kann und lassen Sie uns das am besten machen. Aber gehen wir zum Player-Controller über. Gehen wir zum PC **** hier unten. Und bis jetzt haben wir dieses namens Create, Inventory Slot Widgets. Ich möchte die Schöpfung hier trennen. Was wir also tun müssen, anstatt es nur für die ausgewählte Inventarkategorie zu erstellen . Wir müssen dies für alle Kategorien erstellen , obwohl wir das Inventar nicht geöffnet haben. Und dann möchte ich eine separate Veranstaltung, bei der wir die Widgets für den Inventarplatz anzeigen. Also haben wir das Ganze von Anfang an geschaffen . Wenn wir also das Inventar geöffnet haben und auf verschiedene Kategorien geklickt haben, erstellen wir nicht ständig neue. müssen wir nicht, wir müssen das hier nur einmal erstellen und sie dem Array hinzufügen. Und dann zeigen wir einfach die bereits erstellten Slots , wenn wir auf die Kategorien klicken. Es gibt also diese Optimierung , die wir durchführen können. Lassen Sie mich also mit der rechten Maustaste klicken, zu benutzerdefinierten Ereignissen gehen und eines mit dem Namen Display, Inventar, Slot-Widgets erstellen . Und lassen Sie uns hier ein neues erstellen , indem wir die Kunden durchgehen. Also auf dem eigenen zuverlässigen Client laufen. Für diesen wollen wir also nur die Widgets anzeigen. Es ist also eigentlich dieser letzte Teil des Codes. Lass mich das einfach hier kopieren. Ich klicke auf Control X, um es auszuschneiden und hier einzufügen. Jetzt brauchen wir hier einen Verweis auf das Inventar. Also werde ich hier klicken und nach Inventar, AAC-Inventar, suchen und es Inventar nennen. Und dieser, Clear Children muss auch hier unten sein, weil dieser nur dazu da ist, die Inventarplätze anzuzeigen. Das ist also ein bestimmtes Wort, das angezeigt wird, und ich werde es hier hinzufügen. Und diesen Loop brauchen wir auch hier. Wir brauchen es auch hier oben. Also werde ich es einfach kopieren und hier einfügen, weil wir alle Widgets durchgehen und sie anzeigen müssen . Also brauchen wir das auch. Und ich brauche auch diese ausgewählte Kategorie. Ich kopiere es und füge es hier ein. Und lassen Sie uns das Inventar verbinden. nun an diese Zeilen und Spalten, denken Sie daran, Denken Sie nun an diese Zeilen und Spalten, denken Sie daran, dass wir hier gesagt haben, geteilt durch vier. Lassen Sie uns das einfach hier ausschneiden, hier einfügen, sie so verbinden und auch den Index mit diesem Jahr verbinden. Und hier für dieses Inventar können wir einfach daraus ableiten und sagen, bekommt, was bekommen wir? Wir bekommen diesen Index gerade hier. Und lass uns das nehmen und Pause sagen. Und jetzt zu dem Artikel, den wir hier für das Inventar aktualisieren wollen , ziehen wir ihn und stecken ihn ein. Die Menge ist auch nur diese. Nun zu diesem Inhalt hier, das merken Sie sich vor dem Inhalt oder dem Kind, um hier den Inhalt zu rasten . Der Inhalt ist dieses Widget, das wir erstellt haben. Denken Sie jedoch an dieses Widget, wir speichern es innerhalb dieses Arrays im Inventar-Slot und im Slot-Index hier und im Inventar-Slot. Lass mich das hier einfach löschen. Und ich kann es aus dem Inventar-Slot ziehen und hier zum Inhalt hinzufügen sowie die Benutzeroberfläche des Inventar-Slots aktualisieren. Dieser Folienindex hier. Lassen Sie mich es also verbinden und einige Umleitungsknoten hinzufügen. Es ist also gut anzusehen. Okay, hier habe ich Reroute Nodes hinzugefügt. Also, was wir genau wie zuvor machen, wir löschen die Kinder und dann durchgehen wir alle Widgets, die wir erstellt haben. Wir erhalten diesen Index, je nachdem welches Inventar wir uns gerade ansehen möchten. Und dann nehmen wir diese Artikelmenge, melden sie an, aktualisieren die Benutzeroberfläche und zeigen auch all diese Widgets für Inventare und Chargen an. Mit diesem Ereignis müssen wir jetzt nur noch alle Widget-Widgets erstellen. Denn jetzt, wenn wir auf die Inventarkategorie klicken , Widgets. Wir zeigen sie eigentlich nur an, ohne sie ständig zu erstellen. Also hier oben wollen wir das eigentlich auch beheben, denn im Moment werden nicht alle Widgets erstellt. Das kannst du hier sehen. Es wird nur das Widget für die ausgewählte Inventarkategorie erstellt . Also, was wir hier tun können, können wir so in die Länge ziehen. Und genau das, was wir hier oben mit den Kategorien gemacht haben, wir haben einfach alle Kategorien bekommen. Lass uns diesen kopieren. Ruft diese Tabellenzeilennamen für alle Kategorien ab. Das sind also die drei Kategorien, die wir haben. Und lassen Sie uns die Länge der Kategorien ermitteln. Jetzt werden drei gedruckt, weil wir drei Kategorien haben. Lassen Sie mich hier mit der rechten Maustaste klicken, zu einer Variablen heraufstufen und sie eine Menge von Kategorien nennen. Und das ist der Betrag, den wir berechnen werden. Wir werden also so viele Beträge wiederholen, um alle Widgets zu erstellen. Also lass es mich einfach erstellen. Es ist also nicht zu verwirrend. Und was die Länge der Anzahl der Kategorien angeht, ziehe ich von hier aus und sage minus eins weil wir sie von Null aus wiederholen werden. Also 01.2, also wir brauchen das nicht, um drei l zu sagen, also werden wir viermal mieten. Wir haben also drei Kategorien. Wir fangen an, bei Null zu drucken. Also 01.2, deshalb subtrahiere ich von eins. Und lassen Sie mich hier eine weitere Variable namens temporärer Zähler erstellen . Also werden wir diesen verwenden, um zu wissen, wie oft wir eine Schleife machen werden. Also, wenn diese Anzahl von Kategorien, nehmen wir diesen temporären Zähler setzen ihn auf eine Ganzzahl, sagen wir hier ausschneiden. Wenn also der temporäre Zähler kleiner oder gleich der Anzahl der Kategorien ist , denken Sie daran, dass der temporäre Zähler bei Null beginnt, die Standardeinstellung ist Null. Wenn es also weniger oder gleich ist, die Anzahl der Kategorien , also zwei, dann können wir weitermachen und die Kategorien durchgehen . Hier drüben. Lass es uns einfach verbinden und es hier durchgehen Anstatt die ausgewählte Inventarkategorie zu verwenden, . Anstatt die ausgewählte Inventarkategorie zu verwenden, lösche ich diese und lass uns stattdessen unseren temporären Zähler verwenden. Sie können hier mit der rechten Maustaste darauf klicken, und Sie können auf Pintyp ändern klicken, in eine Ganzzahl zu ändern . Jetzt verwenden wir eine Ganzzahl und werden das hier verbinden. Wie Sie hier sehen können, lassen Sie mich das einfach wegziehen. Lassen Sie mich das alles löschen. Zieh das hier her und trenne es vorerst auch einfach. Was also passieren wird, ist, dass wir mit Null beginnen , weil der Standardwert für die temporären Konten Null ist. Wir werden diese Option hier auswählen, die Waffen. Und jetzt wird gefragt, ob das temporäre Konto oder weniger oder gleich ist, die Anzahl der Kategorien , die Anzahl der Kategorien , in diesem Fall zwei. Also zuerst wird der erste Wert wiederholt, dann fügen wir einen zu diesem Zähler hinzu, sodass dort eins steht. Und dann wird es das durchgehen, dann wird es das durchgehen. Und wenn es drei wird, wenn es drei wird, dann wird diese tatsächlich höher sein als die Anzahl der Kategorien, die zwei sind. Und dann wird es nicht mehr schleifen. Also das machen wir. Lassen Sie uns dieses Inventar also mit diesen drei Kategorien verbinden . Und hier drüben, lassen Sie uns das wieder mit dem Array verbinden. Und lassen Sie uns das auch wieder mit den Gets hier verbinden . Lass uns kompilieren. Wenn wir nun die Schleife für die erste Runde abgeschlossen haben, nehmen wir den temporären Zähler, Drache und sagen Plus, Plus. Also fügen wir dem Zähler einen hinzu. Und dann werden wir das noch einmal durchgehen. Rufen wir es also einfach von hier aus an, erstellen Sie Widgets für Inventar-Slot-Widgets. Erstellen Sie Widgets für Inventarplätze. Und wir müssen das Inventar erneut erstellen. Wir können einfach von diesem ziehen und es hier einstecken. Jetzt funktioniert es also. Und wenn wir uns das hier ansehen, wollen wir dieses nicht, also lassen Sie uns die hier löschen und ich werde einige Umleitungshinweise erstellen, also ist es besser, sich das anzusehen. Jetzt habe ich es hier organisiert, wie Sie sehen können, sodass Sie den Code hier sehen können. Also bekommen wir zuerst, wie viele Kategorien haben wir? Und wir subtrahieren um eins, weil der temporäre Zähler bei Null beginnt. Wir haben also insgesamt drei Kategorien ab 01.2. Also diese drei Kategorien, wir werden sie hier durchgehen. Und jeden einzelnen werden wir die Kategorie durchgehen. Wir werden Widgets erstellen. Und wir werden, genau wie zuvor, die Kategorien oder Inventarplätze zu dem von uns ausgewählten Kategorie-Array hinzufügen die Kategorien oder Inventarplätze zu dem . Und wieder wählen wir jetzt einen temporären Zähler aus. Und als wir den Loop für den ersten beendet hatten. Wenn wir also den Loop für die Waffenkategorie abgeschlossen haben, gehen wir hier zur Vollendung über, wir fügen dem temporären Zähler eine hinzu. Also fängt es bei Null an, dann wird es bei eins. Und dann erstellen wir hier die Widgets für den Inventarplatz neu . Also wird es das wieder ausführen. Und jetzt ist der temporäre Zähler gleich eins. Und dann werden tatsächlich alle Widgets für die Lebensmittelkategorie erstellt . Und wenn es fertig ist, wird es auf zwei gesetzt. Und dann wird es für die Zaubertränke kreieren. Und wenn es hier drei wird, wird es falsch sagen. Und was wir hier am Ende tun können, wenn wir alle Widgets hier erstellt haben, können wir das Inventar anzeigen, also können wir dieses Ding mit dem Namen Inventar anzeigen, Slot-Widgets nennen . Lassen Sie mich den Kunden hier anrufen, bevor ich die Anzeige hier vergesse. Und das Inventar können wir hier reinziehen. Und nennen wir es hier drüben, wenn es gefaltet wird. Wenn wir alle Widgets erstellt haben, sagen wir Display-, Inventar-, Slot-Widgets. Und was das Inventar angeht, nehmen wir es hier auf, verbinden wir es hier mit den Umleitungsknoten und lassen Sie uns alles kompilieren und speichern. Also haben wir diese Logik auch für den Spieler. Also lasst uns eigentlich nicht hierher gehen, zum Blueprints Player gehen. Und denken Sie daran, dass wir am Anfang gesagt haben, das Inventar initialisieren zu müssen. Wir passen ihr Rennen an. Das ist in Ordnung. Und hier erstellen wir die Kategorie-Widgets , das ist in Ordnung. Und die Inventarplätze auch. Das ist also richtig. Gehen wir jetzt zurück zum Inventar. Ich denke, wir haben da eine gewisse Logik, die wir ändern müssen. Im Komponenteninventar. Wir haben diesen , wenn wir im Inventar auf eine Kategorie klicken . Und eigentlich kann ich nur zur Klarstellung zurückgehen. Denken Sie daran, dass wir für die Inventarkategorie , wenn wir darauf drücken , die Inventarkategorie festlegen, wenn wir darauf drücken. Und wenn Sie hier doppelklicken, ist es dieser Code hier. Wir erstellen die Inventar-Slot-Widgets. Jetzt haben wir das Inventar optimiert, also werden wir es löschen und stattdessen einfach die Widgets für Inventarplätze anzeigen. Jetzt können wir sie einfach anzeigen und das Inventar ist optimiert. müssen wir nicht, wir müssen diese Widgets nicht immer wieder erstellen. In Ordnung, also lass es uns testen, bevor wir etwas anderes tun. Und ich denke, wir haben alles. Alles sieht gut aus. Lass uns kompilieren, Lass uns speichern. Lass uns auf Play klicken und sehen, ob wir irgendwelche Fehler haben. Also lass mich rübergehen und alles wie zuvor plündern und schauen, ob ich sie jetzt tatsächlich laden kann. Wenn ich also auf Ich habe mein Inventar geöffnet klicke, werden sie korrekt geladen. Das Gleiche gilt für die hier. Wenn Sie jetzt die Inventarkategorie wechseln, wird eigentlich nur das angezeigt was wir bereits erstellt haben. Das ist jetzt also viel zu optimieren. Es ist sehr optimiert der Inventarfehler behoben und das Inventar optimiert wurde. Fahren wir mit der nächsten Lektion fort. 42. 7.01 Hinzufügen von Drag & Drop-Operation: Ordnung, jetzt sind wir bereit, Gegenstände aus dem Inventar zu ziehen. Gehen wir also zur Benutzeroberfläche und gehen wir zum Inventar-Slot. Was wir jetzt tun werden, ist aus dem Inventar zu ziehen. Wenn ich also auf Abspielen klicke, möchte ich, falls ich einen Gegenstand hier habe, diesen Gegenstand ziehen und ihn auf den Boden legen. Das ist es also, was wir versuchen zu tun. Gehe in den Inventarschlitz. Gehen wir zur Grafik. in diesem Diagramm Gehen wir in diesem Diagramm zu den Funktionen und klicken Sie auf die Schaltfläche Überschreiben. Jetzt gehen wir runter und sehen uns hier an, lassen Sie uns dieses auswählen, das bei gedrückter Maustaste aufgerufen wird. Und es erstellt diese Funktion hier. Und hier wollen wir einfach von hier aus ziehen und sagen: „Sekte“, „Ziehen“, wenn gedrückt. Also musst du das tun, damit es deine Maustaste erkennt und wenn du hier klickst und ich klicke auf meine linke Maustaste, oder du kannst es einfach hier finden. Und für das Mausereignis verbinden wir es mit den Zeigerereignissen. Und für den Rückgabewert verbinden wir sie hier miteinander. In Ordnung, lassen Sie uns jetzt kompilieren. Und wieder in den Funktionen hier oben klicken Sie erneut auf das Override. Und lassen Sie uns nach einem erkannten Widerstand suchen. Also hier oben ist der Luftwiderstand erkannt. Wählen Sie dieses hier aus. Und hier lassen Sie uns einfach eine Zeichenfolge drucken und Sie können sehen, was passiert. Also werde ich einfach Hallo sagen. Lass uns kompilieren und lass uns auf Play klicken. Und wenn ich mein Inventar öffne und hier klicke, kannst du sehen, dass dort Hallo steht. Wenn ich klicke und ziehe, wird jetzt tatsächlich erkannt , dass ich ziehe. Und es steht hier tief. Jetzt können wir hier etwas Code hinzufügen. Bevor ich also etwas unternehme, lassen Sie uns einen Verweis auf den Player und den Player-Controller werfen. Wir befinden uns also wieder in einer Benutzeroberfläche und für uns können Sie Get Owning Layer sagen. Dadurch erhältst du den Player-Controller. Und wenn du get Owning Player Pawn verwendest, bekommst du, der Spielercharakter bekommt diesen hier, um den Spielercontroller von dort wegziehen zu lassen und sagt, er bekommt Layer-Controller. Und wieder, das ist von der Blueprint-Schnittstelle, die wir verwenden können. wir mit der rechten Maustaste auf eine Variable heraufgestuft und nennen sie Layout-Controller. erneut mit der rechten Maustaste und sagen Sie diesmal „Get Owning layer on“. Also können wir den Spieler holen und von hier aus sagen, er bekommt Layer Eric oben. Dieser bekommt ihre Referenz. Und wenn wir die Spielerreferenz erhalten, können wir mit der rechten Maustaste klicken, Ihre Variable hochstufen und die Ebene speichern. Okay, was wir jetzt hier versuchen zu tun , wenn wir auf Play klicken. Also, ich möchte, dass du tust, was ich für diesen Artikel habe. Ich möchte nur die Informationen in diesem Gegenstand sehen, denn wenn ich hierher ziehe, möchte ich das Symbol anzeigen , das ich von der Spielfigur ziehe. Lass uns das Inventar nochmal holen, Inventar. Scrollen wir nach unten und wählen dieses Inventar aus. Und genau wie zuvor benötigen wir alle Kategorien. Wenn Sie also eine Kategorie schreiben, können Sie die Kategorie Waffen und die Kategorie Lebensmittel und dann die Kategorie Zaubertrank erhalten. Und genau wie zuvor benötigen wir das ausgewählte Inventar, weil wir wissen müssen , welches Inventar wir gerade ausgewählt haben. Also wie zuvor, wir mit der rechten Maustaste und wählen hier die Auswahlfunktion aus, wählen Sie Knoten, Hals und dann Inventar aus. Und wieder, verbinde einfach all diese Inventare. Je nachdem, was wir hier ausgewählt haben, ziehen wir also und sagen, bekommt. Und jetzt werden Sie gefragt, welchen Inventarplatzindex Sie erhalten möchten. Denkt daran, dass wir uns im Inventar-Slot befinden. Sie haben also bereits diesen variablen Slot-Index. Also lass es uns hier verbinden. Jetzt haben wir also den Index, auf den wir klicken. Bevor wir nun den Drag-Code zur Erkennung ausführen, stellen wir einfach sicher, dass wir einen Artikel haben da ich nicht möchte das Ziehen für Inventarplätze funktioniert , die leer sind. Also hier Pause machen. Für diese Artikelmenge ist sie also nicht gleich. Also können wir das schreiben. Wenn es nicht gleich Null ist, möchte ich, dass der Code ausgeführt wird. Wenn es jedoch Null ist, möchten wir den Code nicht ausführen lassen, da der Inventarplatz leer ist. Aber jetzt das Wichtigste, das ist die Funktion , die sehr wichtig ist. wir mit der rechten Maustaste und mit der rechten Maustaste wird eine Drag-and-Drop-Operation erstellt. Also dieser zieht das Symbol und fragt Sie, was das Standard-Drag-Visual ist, welches ist das Symbol, das wir ziehen. Denkt noch einmal daran, dass wir uns innerhalb des Inventar-Slots befinden. Also können wir einfach dieses hier nehmen, das Bildinventar oder eigentlich das Bildelement hier. Stecken Sie es hier ein. Und jetzt haben wir das Objekt angeschlossen und stellen nur sicher, dass der Slot, aus dem wir ziehen, nicht leer ist. Wir haben also tatsächlich ein Symbol, das wir ziehen. In Ordnung, das war es also. Lass uns jetzt hier eine Verbindung herstellen. Und für die Operation verbinden wir es so miteinander. Sie können hier klicken, auf die Höhe klicken, um es sauberer zu machen , klicken Sie auf die Höhe ohne Verbindung und lassen Sie es uns ausprobieren. Also lasst uns kompilieren, lasst uns auf Play klicken. Und wenn ich so ziehe, passiert nichts. Wenn ich rübergehe und das lade, ziehe ich. Sie können jetzt sehen, dass ich das Symbol ziehe. Es sieht toll aus. Wenn ich das z.B. für die Banane mache und ziehe, ziehe ich jetzt die Banane. Sie können jetzt also sehen , dass es funktioniert. Aber jetzt brauchen wir den Code, um dort zu funktionieren, wo wir den Artikel tatsächlich ablegen. 43. 7.02 Gegenstände aus dem Inventar fallen lassen: Okay, jetzt wollen wir den Artikel löschen und dazu gehen wir hier zur Haupt-UI. Und hier drinnen, lasst uns zur Grafik gehen. Und wieder, genau wie zuvor, und die Funktionen klicken auf das Override. Und wählen wir dieses namens On Drop aus. Denn wenn du das Spiel hier spielst und einen Gegenstand nimmst und ihn aus dem Inventar fallen lässt, lässt du ihn tatsächlich über deiner Haupt-Benutzeroberfläche fallen. Wir werden diesen Code hier hineinschreiben. Bevor es funktionieren kann, kannst du hier sehen, ob ich im UNDRIP eine Zeichenfolge für das Haupt-UI drucke , es braucht hallo. Sie können also sehen, dass der Code funktioniert. Im Moment ist es jedoch nicht per Drag & Drop. Du kannst sagen, dass es kein Hallo sagt. Der Code, den wir hier schreiben, funktioniert eigentlich nicht. Damit es funktioniert, können Sie zum Inventarplatz gehen. Und hier, in der Grafik hier, für den erkannten musst du für den erkannten Zug den Player-Controller nehmen. Wir haben diesen Hinweis bereits gemacht. Nimm den Player-Controller, nimm sie als Hauptvariable der Benutzeroberfläche. Und Sie müssen tatsächlich die Sichtbarkeit der Leinwand festlegen . Wenn Sie jetzt auf die Leinwand klicken, können Sie sehen, dass die Sichtbarkeit nicht getestbar ist und dass sie hier tatsächlich sichtbar sein muss , damit sie funktioniert. Wir möchten es jedoch nicht standardmäßig ändern, da sichtbar bedeutet, dass es deine Maus blockiert, wenn du herumspielst. Wir wollen es also nur ändern, wenn wir den Artikel fallen lassen. Gehen wir also zurück zum Inventarplatz. Und hier, nehmen wir das und sagen, Sichtbarkeit festlegen. Und wir wollen die Sichtbarkeit auf sichtbar setzen . Das ist also richtig. Nehmen wir es hier und lassen es fallen kurz bevor wir die Operation beenden. Wir machen dieses Menü I sichtbar. Und lassen Sie uns einige Umleitungsknoten erstellen und sie einfach so verbinden. Ordnung, also lasst uns kompilieren und lasst uns zur Haupt-UI zurückkehren. Und wenn wir jetzt versuchen, runterzufallen, werden wir Hallo sagen. Also lass uns hier spielen. Gehen wir zu diesem Hackmesser. Lassen Sie uns ziehen und ablegen. Und du kannst sehen, dass da Hallo steht. Jetzt funktioniert der Code hier in der Andhra-Funktion für die Hauptoberfläche. Also hier, bevor wir anfangen, genau wie zuvor, möchte ich einen Hinweis auf meinen Spieler. Also klicken wir mit der rechten Maustaste und sagen Get Owning Layer auf, ziehen wir und sagen Get Player Reference. Und lass es uns miteinander verbinden. Und lassen Sie uns mit der rechten Maustaste klicken und dies zu einer Variablen heraufstufen und sagen, Ebene auf. Was soll nun passieren, wenn ich das Symbol hier auf das Level fallen lasse, es muss erneut ein Objekt spawnen. Jetzt muss ich den Gegenstand spawnen. Wir brauchen etwas Laichlogik. Normalerweise machen wir das Spawning im Player-Controller. Gehen wir also zum Player-Controller. Und im Player-Controller kannst du übrigens sehen, dass ich Kommentare für alles nur für dich erstellt habe, wenn ich dir den gesamten Code gebe. Das ist also sehr schön zu sehen und Kommentare zu verfassen. Wenn Sie es nicht wissen, können Sie einfach über einige der Elemente klicken und auf Ihrer Tastatur auf C klicken Dadurch werden Kommentare erstellt. Es ist so schön, so organisiert zu sein. In Ordnung, also lass uns hier runter gehen und mit der rechten Maustaste klicken und ein neues benutzerdefiniertes Ereignis erstellen. Und nennen wir das ein Drop-Item. Und um den Gegenstand fallen zu lassen, müssen wir ihn im Level spawnen. Also zieh her und sag Spawn-Schauspieler von Plus. Und jetzt brauchen wir den letzten Gegenstand, den wir spawnen. Ziehen wir das einfach hin, stecken wir es hier ein, auch diese Anleihentransformation. Und für das Kollisionsmanagement kannst du einfach sagen, versuche den Standort anzupassen, aber spawnen immer. Und wenn wir den Gegenstand gespawnt haben, wollen wir auch die Menge dafür spawnen. Wenn wir also von hier wegziehen , ist das ein, widerspricht ein Akteur. Wir können also nicht einfach die festgelegte Artikelmenge sagen, wie wir sie hier in der, falls Sie sich erinnern, in der Artikelbasis haben , wenn ich zur Artikelbasis gehe, haben wir diese eine festgelegte Artikelmenge. Ich benötige jedoch zuerst einen Verweis auf den Artikel , wenn Sie sagen können, dass Sie die Artikelreferenz abrufen können, die wir zuvor mit der Schnittstelle erstellt haben. Und jetzt kannst du Set Item einmal pro t sagen. Jetzt müssen wir auch die Menge festlegen , wann wir das gleiche Objekt gespawnt haben je nachdem, wie viele wir aus dem Inventar geworfen haben. Ich ziehe das und verbinde es hier. Und ich ziehe es einfach direkt über oder direkt unter die Klasse, die Klasse, ich nenne sie stattdessen Item. Die Anzahl der Gegenstände ist gut und die Spawn-Transformation ist ebenfalls gut. Ordnung, wenn wir also Dinge spawnen, gehen wir normalerweise durch den Spielmodus. Und der Grund, warum wir den Spielmodus durchgehen, wenn ihr euch an das Multiplayer-Kompendium erinnert, ist, dass der Spielmodus immer auf dem Server existiert, er existiert nie auf dem Client. Durchlaufen des Spielmodus achten wir darauf, dass der Client keine Dinge nach dem Zufallsprinzip spawnt und schummelt. Also müssen wir den Spielmodus durchlaufen. Bei diesem arbeiten wir jetzt eigentlich rückwärts. Wir müssen aus der Inventarkomponente spawnen. Ich habe jedoch hier angefangen. Es ist also eigentlich klarer, wo das Ding ist, das Hauptziel hier ist, diesen namens Spawn Actor zu verwenden und wir antworten auf den Gegenstand. Also lasst uns jetzt rückwärts arbeiten. Gehen wir in den Spielmodus, da der Spielmodus dieses Ereignis aufrufen muss . Gehen wir also zurück. Entwirft einen Modus. Öffnen wir den vollständigen Blueprint-Editor. Und hier erstellen wir ein neues benutzerdefiniertes Ereignis namens request. Artikel fallen lassen. Und dieser muss das vom Player-Controller aus aufrufen . Lassen Sie mich also einfach hier klicken und eine Variable für den Player-Controller erstellen. Und es ist PC **** down, so haben wir es genannt. Und sagen wir Layout-Controller. Und lassen Sie uns vom Player-Controller aus diese Drop-Item-Funktion ziehen und aufrufen. Wir sind ein Event, das wir gemacht haben. Für die Artikel. Lass uns einfach klicken und ziehen und ablegen. Und für diese Bindungstransformation lassen wir uns von hier aus weiterziehen und sagen, transformieren. Normalerweise mache ich die Transformation im Spielmodus und an weiteren Orten erneut und klicke sie einfach an und ziehe sie per Drag-and-Drop in das Anforderungselement. Nun, hier müssen wir nicht replizieren und auf dem Server ausführen, denn denken Sie noch einmal daran, dass der Spielmodus immer auf dem Server läuft. Du kannst hier keine Client-Inhalte ausführen, der Client kann nicht auf den Spielmodus zugreifen. Alles oder create here läuft immer auf dem Server, wir müssen es also nicht so einstellen, dass es hier auf den Server repliziert wird. Okay, der letzte Schritt, diese Anfrage, das Drop-Item muss von den Komponenten, der Inventarkomponente, aus ausgeführt werden . Gehen wir zurück zu den Komponenten. Und das alles, alles beginnt hier, also arbeiten wir eigentlich rückwärts. Also hier klicken wir mit der rechten Maustaste und erstellen ein neues benutzerdefiniertes Ereignis. Nennen wir das, Drop. Hallo Tim. Hier. Lass uns einen neuen erstellen, der über den Server läuft und Drop Item heißt. Einfach so, zuverlässig auf einem Server laufen. Und diesen nennen wir den Server ein Server-Drop-Item. Und hier müssen wir den aus dem Spielmodus anrufen. Also werde ich mit der rechten Maustaste klicken und sagen, dass ein Modus angezeigt wird , und dann ziehe ich von hier aus und wir müssen die Spielmodus-Referenz abrufen. Ich glaube jedoch nicht, dass wir eine Schnittstelle erstellt haben, Blueprint-Interfaces für den Spielmodus. Also lass es uns hier machen. Du kannst es alleine machen, wenn du willst, oder Sport treiben, und du kannst es mit mir machen. wir nun mit der rechten Maustaste, gehen wir zu Blueprints, erstellen Sie eine Blueprint-Schnittstelle, einen Modus. Öffnen wir es und erstellen hier eine neue Funktion namens Gets Game Mode reference. Nun, hier müssen wir sagen, auf was wir verweisen wollen? Wir versuchen, auf die Bugtown zu verweisen. Dieser, das ist unser Spielmodus, und nennen wir ihn einen Modus. Jetzt kompilieren und speichern wir alles. wir zurück zum Spielmodus, gehen wir zu den Klasseneinstellungen und fügen dann diese Schnittstelle hinzu , den Interface-Spielmodus. Klicken wir nun hier und auf die Schnittstellen und rufen wir die Selbstreferenz auf. Jetzt haben wir definiert, was diese Variable ist. Jetzt können wir wieder zur Inventarkomponente zurückkehren. Wir können hierher ziehen und sagen, erhält eine Modusreferenz. Jetzt verbinden wir es. Und von hier aus wollen wir das von uns erstellte Request Drop Item Event starten . In Ordnung, also lass uns sie jetzt einfach hier verbinden. Lassen Sie uns den Player-Controller, den Gegenstand, die Artikelmenge und den Standort verbinden . Und jetzt haben wir sie hier oben im Drop-Item. Und wir werden dasselbe tun. Der Spielercontroller, der Gegenstand, die Artikelmenge und auch der Standort. Und jetzt können wir dieses in der Haupt-UI verwenden. Also lass uns das benutzen. Was also passieren wird, ist, dass wir über die Haupt-Benutzeroberfläche aufrufen. Und es wird hier durchgehen, den Server durchgehen, nur um sicherzugehen, dass es nicht ablehnt, es zu betreiben. Und es wird den Spielmodus durchlaufen. Es wird darum bitten, den Gegenstand hier im Spielmodus abzulegen . Und wenn das möglich ist, wird es den Gegenstand fallen lassen, den Spielercontroller, wo er sowohl den Gegenstand als auch die Menge bindet. Gehen wir also hier zur Haupt-UI. Also hier von der Spielfigur, lasst uns das Inventar machen, denn jetzt wollen wir dieses Event hier ausrufen. Sie gehen hier rein und nehmen die AAC-Inventarvariable hier unten. Wir können jetzt Artikel ablegen sagen und ihn hier auswählen. Jetzt brauchen wir ein Plugin für den Controller, damit wir einfach aus dem Play auf den Player-Controller ziehen und ihn speichern können . Wir haben hier bereits eine Variable erstellt, fügen sie hier ein und jetzt benötigen wir die Elementklasse. Also, wie bekommen wir diesen? Genau wie zuvor gehe ich zum Inventarplatz und kopiere das alles hierher. Also das alles kopieren und auch das kopieren. Ich gehe zurück zur Hauptoberfläche und füge sie hier ein. Ich werde diesen Slug-Index löschen, also habe ich ihn einfach hier. Und für das Inventar können wir es einfach verbinden. Nehmen wir den Player Pawn, nur um ihn sauberer zu machen. Anstatt das hier zu verbinden, nehmen wir hier noch einmal die Spielfigur, die die Inventarvariable AAC genannt wird , und verbinden sie dann mit all dem. Und jetzt zum Index müssen wir wissen, was wir ziehen. Denn wenn wir jetzt ein Element ziehen, müssen wir eigentlich wissen, aus welchem Slot-Index wir ziehen. Also gehe ich zurück in die Benutzeroberfläche und öffne das Inventar und gehe zur Grafik. Und hier füge ich eine neue Variable hinzu, diese Variable nenne ich Dragged Slot Index, und ich setze sie auf eine Ganzzahl. Und lass uns kompilieren. Gehen wir nun zurück zu den Inventarplätzen. Also hier im Inventar-Slot, wenn wir daraus ziehen, lassen Sie uns den Drogen-Slot-Index hier festlegen. Also werde ich das hier ein bisschen vorantreiben. Nehmen wir den Player-Controller und rufen wir die WB-Inventarvariable auf. Und von hier aus haben wir den Dragged-Slot-Index erstellt. Ich stelle das hier ein und ziehe es einfach hierher, stelle es ein. Und auf was werden wir es einstellen? Wir setzen es hier einfach auf diesen Slot-Index, weil dies der Slot-Index ist, den wir ziehen. Wenn ich jetzt kompiliere und zur Hauptoberfläche zurückkehre, kann ich den Player-Controller nehmen. Also nehme ich die Spielfigur, ich nehme den Spielercontroller. Und von hier aus können wir die WB-Inventarvariable verwenden. Und jetzt können wir den Drag-Slot-Index aufrufen. Wir können es mit dem hier oben verbinden , um die Artikelinformationen zu erhalten. Jetzt können wir das machen und Pause sagen. Ich nehme das alles und schiebe es hier einfach nach hinten. Für die Artikelklasse haben wir sie also in diesem Artikel. Also, wenn du es nimmst und sagst, Pause und öffne es hier, dann haben wir diese Gegenstandsklasse. Wir können es in den Artikel stecken, was die Menge angeht, die wir hier haben. Also schließen wir es an und fragen nach dem Standort. Platzieren wir es einfach dort, wo sich der Spieler gerade befindet. Wenn man also den Spruch Player Pawn nimmt, erhält man den Standort des Schauspielers. das hier nehmen, können Sie es in den Standort einstecken, indem Sie auf diesen klicken und sowohl unverbundene Stifte ausblenden als auch auf diesen drücken, unverbundene Stifte ausblenden als auch um unverbundene Dinge zu verbergen. In Ordnung, jetzt lassen wir den Artikel also tatsächlich fallen. Wir müssen jedoch auch das Inventar aktualisieren. Also nehme ich diesen hier und sage set array elements. Und lassen Sie uns ihn hier verbinden, oder den Artikel, den wir benötigen, um den Artikel aus dem Inventar zu entfernen. Also sagen wir hier und sagen machen. Und wir werden diesen Inventarplatz machen. Für den Artikel werden wir also nichts hinzufügen, was den Artikel aus dem Inventar löscht , ebenso wenig wie die Menge, die wir hinzufügen werden. Wir müssen jedoch weiterhin unseren Inventarplatz und unseren Slot-Index behalten unseren Inventarplatz und unseren Slot-Index , damit sie nicht gelöscht werden. also hier auf den Inventarplatz klicken, zeigen wir auch unser Inventar, unseren Inventarplatz und unseren Index an. Ziehen wir sie hier rein. Und als einziges werden wir den Artikel löschen und die Menge auf Null setzen. Klicken Sie jetzt hier, um nicht verbundene Pins auszublenden. Und jetzt zum Index, den wir einfach aus diesem gezogenen Slot-Index ziehen können . Wir können es einfach kopieren, wenn du willst. Und es kann es hier einkleben, nur um es sauberer zu machen , und du kannst es hier einstecken. Jetzt müssen wir auch die Benutzeroberfläche aktualisieren. Denken Sie daran, das auch zu tun. Also direkt vom Inventar-Slot aus, Inventar aktualisieren, gibt es eine Logik, die es für den Artikel verbindet. Wir werden nichts einstecken , was den Artikel aus dem Inventar löscht und die Menge auf Null setzt. Denken Sie jetzt daran, dies zu tun, jetzt haben wir alles aktualisiert, was wir aktualisieren müssen, und lassen Sie es uns jetzt hier verbinden. Und denken Sie daran, hier auf das Boolesche Ticket zu klicken. Es ist also wahr und lasst uns kompilieren und das Spiel jetzt ausprobieren. Also speichere alles, klicke auf Play. Lassen Sie uns jetzt weitermachen und etwas verlieren. Und lass es uns klicken und in die Welt ziehen. Und du kannst sehen, dass es laicht, großartig. Und das werde ich auch schleppen. Es laicht. Und wenn ich einfach auf die Banane klicke, sie hochnehme, sie ziehe und ablege, dann ist sie da. Droppt hier. Wenn ich darauf klicke, nochmal angedeutet, wird die richtige Menge geladen. Wenn ich hier klicke, lasse ich diesen Wert um zehn fallen. Dieser ist für, ich habe ihn geliebt. Es sollte sich eigentlich zuerst diesen ansehen. Da stehen vier. Ich werde diesen laden, indem ich hier sechs hinzufüge und dann hier vier sage. Es funktioniert also tatsächlich so, wie es jetzt , wo wir Gegenstände aus dem Inventar fallen lassen, fügen wir etwas Physik hinzu, damit es gut aussieht, wenn wir sie fallen lassen und sie nicht in der Welt schweben. 44. 7.03 Aktivieren der Weapon: Um die Physik für die Gegenstände zu aktivieren, klicken wir auf die Elemente und die Baupläne. Öffnen wir die Artikelbasis. Und wenn Sie hier auf die Klasse klicken, befinden sich die Standardwerte tatsächlich im Mesh und im Element hier. Sie können hier im Detailbereich sehen, Sie können hier im Detailbereich sehen dass wir etwas namens Physik haben. Und hier kannst du auf Physik simulieren klicken , damit es auf den Boden fallen kann. Sie können jedoch sehen, dass wir ihn nicht anklicken können. Was wir also tun können, ist, hier mit der rechten Maustaste zu klicken. Und am Anfang können wir, wie bei Ereignissen, dieses Objekt direkt von hier aus ziehen und sagen, Physik simulieren. Stellen Sie also Physik simulieren und wir setzen es auf „Wahr“. Jedes Mal, wenn eine Waffe oder ein Gegenstand spawnt, wird die Physik also auf die Probe gestellt. Jetzt klicken wir auf Play und sehen, was passiert. Und wenn ich jetzt hier klicke und es fallen lasse, kannst du sehen, dass es immer noch schwebt und dass es etwas mit der Kollision zu tun hat. Also klicken Sie auf den Artikel. Und wenn wir hier runter zur Kollision gehen, können Sie sehen, dass sie auf keine Kollision eingestellt ist. Und anstatt keine Kollision zu sehen, klicken Sie auf Benutzerdefiniert. Und hier, Religion aktiviert, klicken wir darauf und sagen, Religion ist aktiviert. Es ist also Query und Physik, wir brauchen die Physik hier. Die Kollision ist also aktiviert. Und wir werden alles außer der Weltdynamik und der Weltstatik ignorieren . Und das ist der Boden, damit er nicht durch den Boden fällt. Lass uns jetzt kompilieren und lass uns auf Play klicken. Und lass mich einfach etwas verlieren. Und wenn ich klicke und fallen lasse, kannst du sehen, wie es herunterfällt, aber es ist falsch durch den Boden. Und wenn dir das passiert, habe ich tatsächlich herausgefunden, warum das passiert ist, als ich versucht habe, es zu machen. Und das liegt daran, dass die Kollision für diese Artikel, die ich heruntergeladen habe, wirklich schlimm ist . Wenn Sie also nur eines der Assets öffnen, z. B. einen Artikel, der so clever ist, lassen Sie uns dieses Problem beheben. Also dieser clevere Artikel, wenn du auf Show klickst, passiert das vielleicht auch deinem Projekt. hier also die einfachen Kollisionen zeigen, ist dies eine einfache Kollision. Und was Sie tun müssen, ist hier in den Kollisionen eine vereinfachte Box-Kollision hinzuzufügen. Sie können sehen, dass diese einfachen Fehler hinzugefügt wurden. Wenn du darauf klickst. Jetzt drücke ich R für das Skalierungswerkzeug. Und ich werde es vergrößern. Ich werde stattdessen meine Skalierung auf diese reduzieren. Reduzieren wir die Kamerageschwinde ein wenig. Ich werde es ein bisschen vergrößern. Wir können also sehen, dass es hier zu einer gewissen Kollision kommt. Dies ist die Kollisionsbox , die wir hoch und runter skaliert haben. Ich werde einfach so etwas skalieren und auch so an den Seiten. Ich werde es hier für das Messer testen. Lassen Sie uns weitermachen und vereinfacht auf das Kollisionsfeld klicken. Sie können jetzt darauf klicken und es auf diese Weise vergrößern. Und auch einfach solche Wörter hoch. Ich mache es auch. Lass mich das auch für die Banane machen. Lassen Sie mich zu Kollision und dann zu Box Simplified übergehen. Und ich werde es vergrößern. Und der Grund dafür ist, die Kollision wirklich schlimm ist, also fällt sie so durch den Boden. Also lasst uns jetzt alles speichern und es einfach mit den Artikeln testen, die wir bereits haben. Jetzt kannst du sehen, dass es ein bisschen schwebt, und das sind nur die Gegenstände. Sie sind eine wirklich schlimme Kollision. Also lasst es uns aufnehmen, lasst es uns fallen lassen. Und du kannst jetzt sehen, dass es nicht durch den Boden fällt. Sie können also die Kollision an Ihrem Artikel beheben und ihn jetzt genauer formulieren. Diese sind sehr schnell erledigt. Also werde ich die Kollision auch für meine Zaubertränke hinzufügen. Aber jetzt kannst du sehen, dass sie nicht durch den Boden fallen und alles perfekt funktioniert. 45. 8.01 Informationen zum Ablagefach erhalten: Okay, jetzt ist es an der Zeit, die Gegenstände zwischen den Inventarplätzen zu verschieben . Also, wenn wir hier einen Artikel verlieren und die Menge auf zwei gesetzt ist, spiele ich darauf an. Aber du kannst sie sehen, ich kann sie nicht zwischen den verschiedenen Inventarplätzen verschieben den verschiedenen Inventarplätzen , weil wir das nicht getan haben. Wir können sie einfach per Drag & Drop in die Welt ziehen und erneut laden. Wir können sie jedoch nicht in neue Inventarplätze ziehen, und daran werden wir arbeiten. Gehen wir zur Benutzeroberfläche und drücken Sie auf den Inventarplatz. Und innerhalb des Diagramms wir weiter und machen zwei Funktionen. Also hier oben in den Funktionen, lasst uns auf das Plus klicken und lasst uns die erste aufrufen , bekommt Slots gezogen. Und fügen wir einen weiteren hinzu, der heißt Gets New Slots, Slot und get the new slots. Deshalb möchten wir einige Informationen über diese beiden Slots erhalten , da wir sie aktualisieren werden. Gehen wir zum ersten, lassen Sie uns den Slot ziehen. Und hier drinnen nehmen wir den Spielercontroller oder den Spieler und die Inventar-AAC, die Inventarvariable. Jetzt wollen wir die drei Kategorien abrufen und nach Kategorien suchen. Zuerst die Kategorie Waffen, die Kategorie Essen und die letzte, die Kategorie Zaubertränke. Und hol dir auch diese, erhält die ausgewählte Inventarkategorie. Und wie zuvor wählen wir hier das Negative aus und verbinden all unsere Kategorien, Inventare. Und das haben wir jetzt schon oft gemacht. Jetzt wollen wir uns nur ein paar Informationen über den Dragged-Slot holen . Je nachdem, welches Inventar wir ausgewählt haben, möchten wir diesen Artikel erhalten. Und welcher Gegenstand ist es jetzt? Es ist aus dem Drogen-Slot. Und denk daran, dass wir bereits einen Index für die gezogenen Inventarplätze erstellt haben, und er befindet sich innerhalb des Player-Controllers. Was wir also tun können, ist hier, der Spieler-Bauer und der Spieler-Controller . Gehen wir zurück zu den Unentdeckten und wir haben sie hier drinnen gemacht. Ich werde sie von hier aus ausschneiden und sie stattdessen in das erste Spielevent einfügen Ziehe den Player einfach so darauf und verbinde ihn hier. Okay, das ist also miteinander verbunden. Gehen wir zurück zum Event-Graph und lassen wir es mit dem Spielen beginnen. Und hier werden wir diese beiden hier hinzufügen , damit sie definiert werden wann immer wir das Spiel beginnen. In Ordnung, gehen wir zurück zu den Get Dragged-Slots. Und hier drinnen nehmen wir den Player-Controller, sagen wir das WB-Inventar, also die Inventar-Widget-Variable . Und hier haben wir diesen namens Dragged Slot Index. Und lass es uns hier einstecken. Jetzt bekommen wir also den Dragged-Slot-Index. Und von da an können wir jetzt Pause sagen. Und diese Information, fügen wir sie einfach zu einem Rückgabeknoten hinzu. Also von hier aus zurück ziehen und einen Rückgabeknoten hinzufügen. Und lassen Sie uns alle Variablen in den zurückgegebenen Knoten ziehen , damit wir sie später verwenden können. Da wir gerade ein paar Informationen bekommen, können wir auf diese Funktion klicken und auf Pure klicken. macht es also zu dieser grünen Funktion, einfach nur darum geht , Informationen zu erhalten. Sie können also das Ereignisdiagramm sehen. Wenn ich das hier in die Welt ziehe, ist es nur diese grüne Get-Funktion , die keine Ausführungs-Pins hat, weil wir sie auf Pure gesetzt haben . In Ordnung, lassen Sie uns jetzt dafür sorgen, dass dieser einen neuen Slot-Index erhält. Also, während ich gezogen werde, kopiere ich einfach die ganze Sache. Ich werde mir einen neuen Slot-Index besorgen. Ich füge das Ganze hier ein. Und jetzt können wir von hier aus wieder ziehen einen Rückgabeknoten erstellen. Und verbinden wir einfach, genau wie zuvor, alle Variablen hier. Und anstatt den Slot-Index zu machen, nehmen wir einfach diesen Slot-Index. Dies ist der neue Slot, Slot-Index. Also lasst uns alles kompilieren und speichern. Und das war's für den Gets Dragged Slot-Index und den neuen ****-Index. Und wir werden sie verwenden, um das Inventar zu aktualisieren. 46. 8.02 Aktualisiere die Informationen zum Spielautomaten: Okay, jetzt haben wir den Slot Get Dragged gemacht und bekommen neue Slot-Funktionen. Moment werden wir das Update noch einmal machen, hier klicken und eine neue Funktion erstellen. Nennen wir das erste Update, Dragged Slugs und erstellen ein neues namens Update New Slots. Gehen wir in den Dragge-Slot für das Update. Und wieder benötigen wir nur die Dragged-Slot-Informationen. Also gehe ich zurück und sie werden geschleift. Ich kopiere das Ganze und gehe zurück in den Drag-Slot für das Update und füge sie hier ein, und um den Slot wieder wie zuvor zu aktualisieren, ziehe von hier aus die Array-Elemente. Und jetzt verbinden wir es hier. Jetzt wollen wir den Index für den Dragged Slot aktualisieren und für den Gegenstand ziehen wir ihn hierher und sagen Inventarplatz erstellen. Und hier werden wir neue Variablen erstellen. Lassen Sie uns hier zwei erstellen. Aber der erste wird als Drag-Slot-Artikel bezeichnet, und der zweite heißt New Item Quantity. Lassen Sie uns diese in eine Ganzzahl und die erste in eine Artikelinfostruktur ändern . Das ist also der Artikel, dieser Arzneimittelartikel wird einfach in diesen Artikel hier für dieses Array sowie für die Menge aufgenommen. Lassen Sie uns das ziehen und wir werden es später verwenden. Aber lass mich einfach alles runterziehen. Was den alten Inventarplatz und den Slot-Index angeht, wollen wir diese nicht ändern. Sie bleiben gleich. Wir werden es hier also dem direkten Slot-Index entnehmen. Wir schließen sie einfach wieder an , weil wir sie nicht ändern wollen. Das einzige, was wir im Drogen-Slot ändern wollen, ist der Artikel und die Menge, die sich aus diesem Input ergeben. Und was den Slot-Index hier für das Array angeht, können wir diesen Slot-Index einfach ziehen und anschließen. Und jetzt aktualisieren wir das Inventar. Denken Sie jedoch daran, dass Sie auch die Benutzeroberfläche aktualisieren müssen. Also ziehe ich aus diesem Inventar-Slot und sage Update, aktualisiere die Benutzeroberfläche des Inventar-Slots. Und lass es uns anschließen. Was den Artikel betrifft, lassen Sie uns einfach diesen Artikel und erneut sowie die Menge dafür eingeben. Also werde ich ein paar Notizen erstellen. Du kannst auf diesen klicken und dann auf Nicht verbundene Pins ausblenden klicken, oder? Also habe ich ein paar Umleitungshinweise hinzugefügt und alles organisiert. Was wir jetzt tun, ist einfach den Drag-Los-Index abzurufen oder den Artikel abzurufen. Und hier brauchen wir nur den Inventar-Slot und den Slot-Index und schließen sie wieder an den neuen an, weil wir diese Informationen nicht verlieren wollen. Das einzige, was wir ändern, ist der Artikel sowie die Menge für den Index für den Dragged-Slot oder den Gegenstand, den wir ändern, wenn wir ihn im Inventar hin- und herziehen daran denken, auch die Benutzeroberfläche zu aktualisieren. Am Ende werde ich das für das Update des neuen Slots jedoch für das Update des neuen Slots jedoch tatsächlich löschen und lassen Sie uns einfach hier mit der rechten Maustaste klicken und auf Duplizieren klicken. Und nennen wir es einfach Update Mu Slots. Und das einzige, was wir hier wirklich ändern werden. Wir werden diesen Index für Drogen löschen und stattdessen diesen neuen Slot-Index verwenden. Lassen Sie mich den Code einfach ein wenig verschieben und ihn organisieren. Und das ist eigentlich alles, alles andere bleibt beim Alten. Dies ist immer noch der Drogen-Slot, den Sie später sehen werden, und alles ist beim Alten. Das einzige, was wir hier tun, ist diesen neuen Slot-Index zu bekommen und wir behalten auch die Informationen über das Inventar-Chargen-Widget und den Slot-Index. Lassen Sie uns nun alles kompilieren und speichern. Jetzt haben wir diese. Wenn ich zurück zum Event-Graph gehe, haben wir diesen. Lassen Sie den Festplatten-Slot indexieren, holen Sie sich den neuen Steckplatzindex. Eigentlich dieser, nochmal auf Pure klicken. Also haben wir es so. Und dann haben wir den Update-Drag-Slot und aktualisieren den neuen Slot. Jetzt haben wir diese und können sie verwenden, um das Inventar zu aktualisieren. 47. 8.03 Dropping Item auf Inventarplatz: Okay, jetzt sind wir bereit, den Gegenstand auf den neuen und den alten Inventarplätzen abzulegen . Gehen wir also zurück zum Inventarplatz. Gehen wir zur Grafik. Und hier, genau wie zuvor, klicken Sie auf das Override, gehen Sie nach unten und wählen Sie dieses aus, das On Drop genannt wird. Lassen Sie uns jetzt einfach eine Zeichenfolge drucken und sehen, was passiert. Prüfen Sie, ob der Code ausgeführt wird. Also sollte es Hallo sagen, wenn ich ziehe, also wenn ich auf Play klicke und von hier nach hier ziehe, passiert gerade nichts, weil es keine Gegenstände gibt. Wenn ich es also hierher ziehe und hier ablege, können Sie sehen, dass da Hallo steht. Aber für Inventarplätze, an denen ich keine Gegenstände habe, da nichts, also ist das gut. Aber wenn ich hier hinziehe und es fallen lasse, heißt es Hallo, also funktioniert alles so, wie es soll. Lassen Sie uns jetzt hier eine neue Variable erstellen, und sie ist ein boolescher Wert, und ich nenne sie stapelbar. Was wir jetzt tun wollen, ist für uns eine Sache zu überprüfen und diese so einzustellen , ob der Artikel stapelbar ist oder ob der Artikel nicht stapelbar ist. Gehen wir rüber und holen Sie sich den neuen Slot und holen Sie sich auch den direkten Slot. Zunächst möchten wir überprüfen, ob wir dasselbe Element übereinander ziehen. Also nehmen wir diesen Artikel mit der Aussage Pause sowie diesen Artikel mit der Aufschrift Pause für den neuen Gegenstand, in den wir uns hineinziehen. Steht dieser Name auf dem neuen Item-Slot, ist er derselbe wie der Gegenstand wir aus dem Treiber-Slot ziehen? Wenn ja, bedeutet das, dass es sich um denselben Artikel handelt. Und wir müssen auch prüfen, ob der Artikel stapelbar ist. Wenn Sie mit der rechten Maustaste und rechts und B klicken, sehen Sie dieses und den booleschen Wert. Also zuerst hier, das erste Objekt. Lass uns das ziehen, ist stapelbar und stecke es hier ein, wie hier, und grüß die nicht verbundenen Pins. Ist dieser Artikel also stapelbar? Und ist der Name derselbe wie der Drag-One? Das bedeutet, dass es sich tatsächlich um denselben Artikel handelt. Und nur um sicherzugehen, klicke ich hier auf dieses Plus und füge ein weiteres hinzu. Und genau hier unten, achte auch darauf, dass der Drag-Item-Slot auch stapelbar ist, hier nicht verbundene Pins versteckt werden. Also, was wir hier sagen, wir überprüfen, ob der Name auf dem neuen Slot und dem Slot identisch ist . Wir prüfen also, ob es sich um denselben Artikel handelt, und wir prüfen auch, ob dieser Artikel stapelbar ist. Und wenn ja, werden wir eine Filiale gründen. Und lassen Sie uns es verbinden und sagen, ja, es ist stapelbar. Jetzt müssen wir noch etwas überprüfen. Was ist, wenn wir diesen Gegenstand aus dem Drogenslot in den neuen Slot ziehen ? Und der neue Slot ist leer. Aber die Handlung ist immer noch stapelbar. Im Moment prüfen wir, ob es den gleichen Namen hat, es wird nicht den gleichen Namen haben. Wenn dieser Slot hier leer ist und es keinen Gegenstand gibt, müssen wir das ebenfalls überprüfen. Also was wir tun werden, wir nehmen diese Artikelmenge aus dem neuen Slot, in den wir ziehen, und wir sagen gleich. Wenn das also gleich Null ist, bedeutet das, dass sich in diesem Steckplatz keine Gegenstände befinden. Dieser Artikel für den Drogeneinschub ist jedoch stapelbar. Also brechen wir von hier ab und sagen und boolesch, wenn es Null ist und die Medikamente, dieser Artikel ist stapelbar, dann ist er tatsächlich auch stapelbar. Dieser kann wahr sein und dieser kann wahr sein. Um das zu tun, können wir von hier aus ziehen und OR Boolean sagen und dann diesen hier verbinden und dann diesen hier verbinden. Jetzt sagen wir, ob das stimmt oder ob das stimmt, dann können wir weitermachen und sagen, dass der Artikel stapelbar ist. Und hier im falschen Fall setzen wir es einfach auf „None Stackable“ und wir werden das etwas später verwenden. Und dann erstellen wir eine neue Funktion , die wir in der nächsten Lektion verwenden werden. Also mach dir jetzt keine Sorgen darüber. Aber nennen wir es Update Inventory Slots. Und gehen wir zurück zum Event Graph, genauer gesagt zum UNDRIP hier. Und lassen Sie uns diesen ziehen und die Inventarplätze aktualisieren. Lass es uns hier einfach mit beiden verbinden. Und denk dran, wenn du ziehst, also beim Ziehen, das wir zuvor erkannt haben, haben wir gesagt, dass die Haupt-UI sichtbar ist, die Haupt-Leinwand, wir müssen daran denken sie auch wieder auf „Kein Treffer“ zu setzen, damit sie auch getestet werden kann. Sie werden weitermachen und diesen Code kopieren, zurück zum Andhra gehen und ihn hier einfügen. Und weniger verbunden verbinde auch diesen und setze diesen auf wahr. Jetzt müssen wir auch daran denken, dieses Festival auf ein Non-Hidden-Festival umzustellen. Und wir müssen auch zur Haupt-UI zurückkehren, diese hier, und zur Grafik gehen, zum UNDRIP gehen. Und auch hier, wenn wir es oben im Menü I ablegen, müssen wir es wieder auf nicht testbar setzen. Weil dieser hier und der Inventarplatz funktioniert dieser nur, wenn wir ihn auf einen anderen Inventarplatz fallen lassen . In diesem Jahr ändern wir es auch wieder, sobald wir damit fertig sind , den Gegenstand auf die Leinwand fallen zu lassen. Also hat Ellis statt dieser Plaque-Kontrolle gelöscht. Nehmen wir den Spielerbauern, nehmen wir ab diesem Spiel den Spielercontroller. Und jetzt können wir es hier verbinden und einfach den Code so drücken, sie verbinden und denken Sie daran, das zu nehmen und es auf None Hate Testable zu setzen. Jetzt ändern wir es und ändern es auch wieder. Okay, jetzt sind wir mit der Auspackfunktion fertig. Wir prüfen lediglich, ob das Objekt wir ziehen, stapelbar ist oder nicht. Und das werden wir in der nächsten Lektion verwenden , wenn wir diese Funktion hier erstellen. Speichern wir also alles und fahren wir mit der nächsten Lektion fort. 48. 8.04 Aktualisiere die Inventory: Hallo und willkommen zurück. Lassen Sie uns nun diese Aktualisierung der Inventarplätze vornehmen. also zunächst Lassen Sie mich also zunächst die neuen Slugs ziehen und lassen Sie sich hier ziehen. Zunächst prüfen wir, ob wir das Element nicht an dieselbe Stelle ziehen. Wenn ich also auf Abspielen klicke und gerade gezeichnet habe, nimm hier ein Objekt. Wenn ich es ziehe, möchte ich nur den Code ausführen. Wenn ich es hierher zu diesem Inventarplatz ziehe, möchte ich den Code nicht ausführen, wenn ich ihn per Drag-and-Drop auf denselben Inventarplatz ziehe. Also überprüfen wir zuerst ob der Folienindex der neuen Inventarplätze dem alten entspricht, was bedeutet, dass wir ihn gerade auf demselben Inventarplatz abgelegt haben. Wenn das stimmt, wollen wir eigentlich nichts tun, nur für meine eigene Lektüre. Ich werde es von hier aus versuchen und nein sagen und dieses NICHT Boolean wählen. Wenn es sich also nicht um denselben Slot-Index handelt, werden wir den Code ausführen. Wenn es jedoch falsch ist, wenn es sich um denselben Slot-Index handelt, möchten wir nichts tun. Später werden wir dann fragen, ob der Artikel stapelbar ist oder nicht. Denn wenn es stapelbar ist, werden wir sie zusammenfügen. Wenn sie nicht stapelbar sind, werden wir sie einfach untereinander austauschen. Also lass uns zuerst hier runter gehen. Nehmen wir an, der Artikel ist nicht stapelbar. Was passiert? Nehmen wir diesen, aktualisieren, Slots ziehen und den neuen Newsletter und die Drogenfolie aktualisieren . Und lass uns sie hier verbinden und sie so verbinden. also beim neuen Slot daran, dass wir den Gegenstand aus dem Fahrer-Slot nehmen und ihn auf den neuen Slot legen. Dann ist ein neues Slot-Item das Objekt, das aus dem direkten Slot hierher gezogen wurde. Nehmen wir also den Slot Get Dragged. Lassen Sie uns den Artikel hier nehmen und ihn zusammen mit der Artikelmenge ablegen . Was den direkten Schlitz betrifft, müssen wir den Gegenstand aus dem neuen Schlitz, den getrockneten Schlamm, hineinlegen . Also wechseln wir zwischen diesen beiden. Wir nehmen den Gegenstand im Drogenfach und legen ihn in den neuen Slot. Und dann brauchen wir den neuen Slot-Gegenstand und legen ihn in den Drafts-Slot. Jetzt haben wir gerade den neuen Slot-Artikel aktualisiert. Es ist also unmöglich, diese Informationen zu erhalten. Jetzt können wir das nicht einfach nehmen und so machen, denn hier haben wir diesen Artikel gerade aktualisiert. Dieser Artikel hier ist eigentlich jetzt dieser Artikel hier. Also können wir das nicht so machen. Was wir tun können, ist, diesen Platz zu nehmen und uns einen neuen Platz zu besorgen. Und bevor wir das hier tun, wir mit der rechten Maustaste auf remote zu einer lokalen Variablen. Eine lokale Variable ist nur eine temporäre Variable. Das nenne ich, neues Slot-Item. Und wir können mit der rechten Maustaste auf diese Variable klicken, zur lokalen Variablen hochstufen und diese eine neue Slot-Artikelmenge nennen . Lassen Sie uns sie nun miteinander verbinden und auch mit diesem verbinden. Und jetzt können Sie diese Variablen verwenden, um sie hier hinzuzufügen. Also der neue Slot-Artikel und dann die neue Slot-Artikelmenge. In Ordnung, also das ist jetzt richtig. Du kannst das Spiel einfach spielen und sehen, ob das funktioniert. Das ist also der Fall, wenn der Artikel nicht stapelbar ist. Also klicken wir auf Play. Und ich werde das hier lauten , das hier. Und wenn ich diese beiden einfach miteinander vertausche, können Sie sehen, dass sie jetzt umschaltbar sind. Wenn ich sie hierher schleppe, funktioniert das auch. Okay, hier funktioniert also alles und ich kann sie auch zusammen austauschen. Das ist nett. Ich kann es fallen lassen. Ich kann die wechseln und das auch fallen lassen. Sie können sehen, dass es perfekt funktioniert. Jetzt. Es funktioniert jedoch nicht mit den stapelbaren Artikeln, da wir diesen Code nicht erstellt haben. Sie können also hier sehen, dass der Artikel stapelbar ist. Es passiert nichts, weil wir hier nichts getan haben. Also das funktioniert jetzt, lass uns hier hochgehen. Bevor wir also etwas für die stapelbaren Artikel tun, wollen wir die Mengen zusammenzählen. Denn du kannst dir vorstellen, dass, wenn du vier Bananen im ersten Slot hast und du fünf Bananen im zweiten Slot hast, wir vier plus fünf hinzufügen müssen, weil wir den stapelbaren Gegenstand in den nächsten ziehen. Nehmen wir also den Drogen-Slot und auch den neuen Slot hier oben. Jetzt habe ich die und lassen Sie uns die Menge aus dem neuen Slot nehmen . Fügen wir es zusammen mit dem direkten Steckplatz hinzu. Und jetzt haben wir gerade diese eine neue Stückzahl für den Slot-Artikel festgelegt. Also lass mich es einfach hierher ziehen und es einfach hier einrichten, hier verbunden. Und das nächste, worauf wir achten müssen ist diese neue Artikelmenge. Ist es größer als die maximale Stapelgröße für diesen Gegenstand im neuen Slot? Lassen Sie uns also hier eine Pause machen und prüfen, ob dies größer als die maximale Stapelgröße ist , weil wir das Ganze nicht hinzufügen wollen , wenn es größer als die maximale Stapelgröße wird Lassen Sie uns hierher ziehen und einen booleschen Wert erstellen. Sagen wir also zuerst: Nein, es ist nicht größer als die maximale Stackgröße. Also fügen wir einfach z.B. für Bananen zusammen mit fünf Bananen hinzu. Das ist also falsch. Sie ist nicht größer als die maximale Stapelgröße. Ziehen wir den Slot „ Neues Objekt aktualisieren und lassen Sie uns das Update, den gezogenen Slot ziehen und sie miteinander verbinden. Also für den neuen Slot, genau wie zuvor, ist das neue Slot-Objekt nur das aus dem direkten Slot, weil wir es einfach dorthin gezogen haben. Also nehmen wir das, stecken es und fragen nach der neuen Artikelmenge, wir haben sie hier einfach zusammengezählt. Also kannst du. Nehmen Sie das, schließen Sie es an und erstellen Sie Umleitungsknoten. Und wir können jetzt für das Falsche, das hier angeschlossen ist, anstatt dies zu tun einfach dieses verwenden. Lassen Sie uns das löschen und nehmen wir einfach dieses hier, damit wir einfach diese Variable verwenden können die wir gerade erstellt haben. Es ist ein bisschen sauberer, so etwas zu verwenden. Und jetzt zum Direkt-Slot für das Update, jetzt haben wir einfach das direkte Slot-Objekt über dem neuen Slot hinzugefügt . zieht viel weiter in die Länge, wir haben eigentlich keinen Artikel mehr. Wir lassen es einfach so sein, die Menge Null und der Artikel wird aus dem alten Slot gelöscht. Okay, was ist, wenn der Gegenstand, den wir auf den neuen Slot legen , mehr als die maximale Stapelgröße für diesen Gegenstand erreicht Lass uns das jetzt noch einmal kopieren und hier einfügen. Also nochmal für den Newsletter, es ist einfach so, als ob der Artikel nur der Artikel aus dem Drogen-Slot ist und die Menge für den neuen Slot nur die maximale Stack-Größe , weil sie nicht höher sein kann. Was den Drogen-Slot hier angeht, ist der Artikel mit getrocknetem Schlamm wieder genau dieser. Also werde ich das einfach kopieren und hier einfügen. Jetzt müssen wir für die neue Artikelmenge diese neue Menge von der maximalen Stapelgröße subtrahieren . Nehmen wir hier also die Menge, sagen wir abzüglich der maximalen Stapelgröße. Nehmen wir zum Beispiel an, der Drogen-Slot war zehn und der neue Slot war vier, das ergibt uns 14. Für die Bananen beträgt die maximale Stack-Größe jedoch zehn, also heißt es 14 minus zehn. Das gibt uns vier. Denken Sie daran, dass wir gerade zehn auf den neuen Slot gezogen haben. Wir haben also die vier, die im getrockneten Schlamm übrig bleiben. Also sagen wir hier Minus und ich werde einige Umleitungshinweise erstellen , damit es etwas klarer ist. Und lassen Sie uns das hier oben mit diesem verbinden, und jetzt sollte es funktionieren. Also lasst uns alles kompilieren. Mal sehen, ob wir irgendwelche Bugs haben. Lass uns auf Play klicken. Lass mich weitermachen und einige der Gegenstände plündern. Und jetzt habe ich 10.4. Wenn ich ihnen einen neuen Slot ziehe, verschwindet er tatsächlich. Also muss ich eigentlich sehen, was passiert. Lass mich hierher zurückkehren und auf das Update des neuen Slots klicken und nur überprüfen, ob das korrekt ist und das für mich in Ordnung aussieht. Wenn wir nun zum Andhra zurückkehren und zu den Aktualisierungsfolien für die Inventarisierung zurückkehren, funktioniert IF hier. Und ich kann sehen, dass der Fehler tatsächlich hier ist. Wir benötigen die maximale Stack-Größe aus den Drugged-Slots. Weil wir die Max Stack-Größe aus dem neuen Slot nicht benötigen . Denn wenn ich hierher ziehe, siehst du, dass die neue Folie gerade Nullen hat. maximale Stack-Größe ist also Null, weil es keinen Artikel gibt, der tatsächlich das Geld kostet. Also anstatt hier, verbinden wir es einfach, verbinden wir stattdessen dieses und erstellen Umleitungshinweise. Es sieht also gut aus. Jetzt kompilieren wir und es sollte funktionieren. Das war nur ein kleiner Fehler. Lass uns nochmal alles plündern. Und jetzt haben wir die richtige Max Stack-Größe. Ziehen wir es also zum nächsten, und jetzt funktioniert es. Und wenn ich diese Zehn auf die Vier ziehe, sollte es 10,4 heißen. Das sollte also einfach so untereinander wechseln. Es funktioniert also, jetzt funktionieren die stapelbaren Artikel. Und wenn ich es hier fallen lasse, lasse ich dieses fallen, ich lade sie. Cfi, lass mich das tatsächlich zeichnen, ich sammle das ein , lege es hier hin, es sollte zuerst diesen Platz hier füllen. Dann wird es die Dinge, die mehr sind, hier platzieren. Dadurch werden sie in den ersten Steckplatz gebracht. Okay, jetzt funktioniert also alles. Wir aktualisieren alles. Ich werde weitermachen und alle Artikel auf den Boden legen und das Endprodukt testen. 49. 8.05 Hinzufügen von Soundeffekten: Um es etwas interessanter zu machen bevor wir diesen Kurs beenden, fügen wir einige Soundeffekte hinzu. Also habe ich in den Audioordner einige Soundeffekte aufgenommen. Wir können natürlich weitere hinzufügen, aber lassen Sie uns diese vorerst ausprobieren. Bei diesen Soundeffekten können Sie also auf den ersten klicken und die Umschalttaste gedrückt halten auf den letzten klicken und mit der rechten Maustaste klicken. Sie fahren fort und erstellen mehrere Warteschlangen. Also erstellen wir diese Soundhinweise. Ich werde sie umbenennen. Z.B. Ich kann den ersten umbenennen. Anstatt hier eine Warteschlange aufzurufen, nenne ich es SC für Sound Cue und dann den Namen des Soundeffekts. Jetzt habe ich sie alle umbenannt, schauen Sie also zunächst nach dem Sound Cue. Und ich kann sie jetzt spielen, aber sie sind sehr laut. Ich denke, es wird dir erlaubt sein. Bevor ich das mache, werde ich den ersten öffnen. Und jetzt für das hier oben, für den Lautstärke-Multiplikator, kannst du den Ton reduzieren. Das ist Bottom Hoover. Also lass mich 0,5 schreiben und die Warteschlange spielen. Und vielleicht ist 0,4 besser. Lass es uns schließen. Öffnen wir den nächsten Tastendruck, sagen wir 0,4. Ich denke das ist in Ordnung. Nun zum Losinventar, versuchen wir es mit 0.4. Das ist in Ordnung. Nochmals, ich gehe zum Drop-Item, vielleicht 0,5 für diesen, das ist sehr leise und die Ludditen geben ihm 0,50, 0,4. Ich denke, es ist besser. Okay. Und das letzte, das offene Inventar. Versuchen wir 0,4 als sehr laut. 0,3. Ich denke, 0,25, vielleicht, so etwas. Speichern wir jetzt alles, da wir den Ton reduziert haben. Jetzt als kleiner Trick, wenn du verschiedene Sounds willst. Im Moment können Sie also sehen, wie es sich anhört. Aber wenn du willst, dass es bei jedem Öffnen ein bisschen anders klingt , kannst du es einfach von hier ziehen und den Modulator hier hinschreiben, diesen einen Modulator und hier angeschlossen. Jetzt hast du also einen Modulator dazwischen. Und Sie können sagen, dass die minimale 0,9 und die maximale Tonhöhe 1,1 beträgt. Und wenn du es jedes Mal abspielst, wenn du es hörst, ist es ein anderer Soundeffekt. Jedes Mal. Es ändert sich leicht in der Tonhöhe nach oben und unten. Es liegt also an dir, z. B. die Lautengeräusche, das Drop-Item. Sie können sie jedes Mal, wenn Sie laden, etwas anders gestalten. Also das ist vorerst in Ordnung. Fügen wir also zunächst den Button Hover und den Button hinzu. Gehen wir also zur Benutzeroberfläche. Und das erste Jahr für die Kategorie. Lass uns darauf klicken. Und hier klicken wir auf die Button-Kategorie. Du kannst hier runter gehen und du hast ein gedrücktes Geräusch und ein schwebendes Geräusch. Sie klicken hier und wählen die Schaltfläche aus, die Mauszeiger verbunden ist, und drücken Sie die Taste Lassen Sie uns kompilieren und speichern, was wir tun können. Wir können es auch zu den Inventarschaltflächen hinzufügen. also auf die Hauptoberfläche Wenn wir also auf die Hauptoberfläche klicken und auf diese Schaltfläche klicken, können wir hier dasselbe hinzufügen. Taste drücken, den Mauszeiger bewegen. Lass uns alles kompilieren und speichern. Du kannst es ausprobieren. Du kannst versuchen, auf Play zu klicken und zu sehen, was hier für den Client passiert. Wenn ich auf Beschäftigt klicke, funktioniert es jetzt. Es ist also ein bisschen interessanter als überhaupt kein Ton. Nun, lassen Sie uns es schließen und als Nächstes müssen wir das Inventar schließen und das Inventar öffnen. Gehen wir zu den Bauplänen. Und lass es uns zuerst versuchen. Wir haben hier und den Spieler, wir öffnen und schließen das Inventar. Also können wir es hier ablegen, oder wir können es innerhalb des Player-Controllers abspielen. Wenn wir zum Player-Controller gehen und du hier machen kannst, was du willst, dann liegt es an dir. Wir können hier auch angeben, wann Sie das Widget öffnen, das Inventar öffnen, oder wenn wir das Widget schließen, das Inventar schließen. Es kann es also entweder hier oder dort machen . Lass mich es einfach hier abspielen, indem du den Player von hier ziehst, sag den späten Ton zu D, und kopiere es auch und füge es hier ein. Also hier schließen wir das Inventar. Also klicken Sie hier und wählen Sie das niedrigste Inventar aus. Und hier unten öffnen wir das Inventar. Also wähle ich Inventar öffnen und füge sie auch hier in den Kommentar ein. Okay, lass uns kompilieren und lass uns auf Play klicken und sehen, was passiert. Also, wenn ich darauf klicke, um das Inventar zu öffnen, und ich klicke auf OK, um es wieder zu schließen. Okay, das funktioniert jetzt auch. Das Letzte, was uns hier im Audio fehlt, ist das Drop-Item und das Lauten-Item. Für den Ladungsgegenstand drücken wir E, um den ISM zu plündern und er wird den Server durchqueren und zum Inventar hinzufügen. Wir haben hier jedoch noch nicht geladen. Gehen wir also zum Inventar und spielen wir es hier in der Schleife ab, fertig. Wenn wir den Gegenstand zerstören, haben wir ihn hier geladen. Lass uns von hier wegziehen und Ton abspielen zu D sagen. Und die Sache, die wir spielen wollen, ist wie angedeutet. Es ist also ein anstößiger Gegenstand. Und lass es uns auch kopieren und hier einfügen. Wir laden auch hier hoch. Okay, der letzte Sound, der uns hier fehlt, ist der Drop Item. Also für das Drop-Item, falls du dich daran erinnerst, lass uns zur Benutzeroberfläche gehen und dann zu WB Main gehen. Hier drin haben wir diese Andhra-Funktion oder den Gegenstand fallen lassen. Und wir haben diesen einen Drop-Item aus dem Inventar und er landet, wenn du dich daran erinnerst, im Player-Controller. Er wird genauso reagieren, wenn wir ihn fallen lassen. Wenn du es jedoch hier spielst, denk daran, dass dieses Event über den Server läuft. Es läuft also nie über den Client. Also, wenn du hier Play Sound hinzufügst, funktioniert das nicht. Der Kunde wird es nicht hören. Also lass es uns hier tatsächlich innerhalb von WB Main machen. Wenn wir bereit sind, den Artikel abzulegen, lassen Sie uns fortfahren und den Artikel fallen lassen. Sie können es sogar einfach hier drüben legen, um die Benutzeroberfläche zu aktualisieren. Lass es uns einfach hier spielen, bevor wir diese letzte Sache machen. Und denken Sie daran, das Drop-Item-Soundsignal auszuwählen. Und lass uns kompilieren und auf Play klicken. Also, wenn ich jetzt herumlaufe, habe ich einen Gegenstand angedeutet. Öffne das Inventar, auf das ich anspiele. Okay, klingt nett. Und wenn ich den Artikel fallen lasse, kannst du das auch hören. So fügen Sie Soundeffekte hinzu. Dies kann natürlich nur von Ihnen selbst gehört werden, da dies schließlich eine Bestandsaufnahme ist. Und wir wollen nicht, dass all diese Geräusche auch von der anderen Ebene gehört werden. Also jetzt klingt alles gut. Und lass uns weitermachen. 50. 8.06 Teste das Endprodukt: Ordnung, jetzt sind wir bereit, das Endprodukt zu testen und zu sehen, ob wir eine Box haben. Also wenn wir hier auf Play klicken und jetzt ist es der Server und den Server fragen, ich werde eine Waffe anspielen und ich lade sie. Ich lade den nächsten. Das ist das Messer. Alles funktioniert. Ich kann sie bewegen und wenn ich noch einmal anspiele, wird es hier geladen. Das funktioniert also richtig? Einfach so, ich verliere einen Zaubertrank und werde hier drücken. Und das sind drei Zaubertränke auf dem Boden, die diese 13 Ausdauertränke laden mehr Ausdauertränke laden. Das war einer vor Ort. Wenn ihr hier nachschaut, wird es mehr Zaubertränke geben. Ich denke, die maximale Stapelgröße beträgt zehn für den Trank, also sechs für die Quotienten. Und jetzt können Sie sehen, dass sie auf einem neuen Stapel hinzugefügt werden. Und ich glaube, ich kann das für die Manipulationen bei fünf belassen. Es wird also ein neuer Stapel erstellt. Also funktioniert alles perfekt. Ich werde die Bananen laden. Diese funktionieren, wie Sie wissen, wir haben sie einfach oft getestet. Perfekt. Diese funktionieren also. Ich werde das Fleisch verlieren. Und du kannst das Fleisch sehen. Dieser ist, glaube ich, sechs Teile. Und eigentlich nicht dieser. Dieser besteht aus sechs Teilen, also wird er 5,1 hinzufügen. Und das funktioniert. 5.1. Das ist richtig. Und jetzt können Sie sehen, dass das perfekt funktioniert. Und wenn ich einfach weiter Waffen verschmutze, okay, dann funktioniert alles so, wie es soll. Ich kann sie bewegen. Wenn ich Teile verschiebe, die nicht stapelbar sind , werden sie nicht gestapelt. Also diese ausländischen Fünf, ich kann sie untereinander austauschen und ich kann sie fallen lassen, wenn ich will. Jetzt müssen wir als Kunde wissen, dass wir dasselbe tun können. Wenn Sie also auf Play klicken, ist dies der Server. Also zurück zum Kunden, ich werde das ein wenig minimieren. Gehen Sie zum Kunden und drücken Sie auf das Auge, um das Inventar zu sehen. Ich kann mir das ansehen, das funktioniert super. Das Fleisch ist hier im Essen. Das ist großartig. Ich werde all diese Dinge anspielen und es funktioniert auch perfekt. Nun zum Client, wenn ich ihn fallen lasse, sollte der Server sie sehen können. Und ich kann mir das vorstellen, dieser Rückgang ist gerade gesunken. Das sind also, wenn ich schon angedeutet habe, fünf Zaubertränke. Wenn ich es also hier ablege, können die Artikel, der Kunde kann es sehen und der Kunde kann auch diese fünf Ozeane laden. Es wird hier gestapelt, bevor es hier gestapelt wird. Okay, also als letztes, lassen Sie uns es zwischen zwei Clients testen weil wir die Serverlogik nicht wollen, also sollte sie auch korrekt sein. Wenn zwei Clients zusammen liegen, sagen wir auf einem dedizierten Server. Lassen Sie uns also als erster Kunde weitermachen. Lass uns plündern und lass uns einfach diese fünf Bananen fallen lassen. Ich kann sie auch sehen. Und der neue Kunde hier wird sie verlieren. Und das sind eigentlich fünf Bananen. Nehmen wir an, ich habe sie stattdessen hier fallen lassen. Und ich kann sie bei den anderen Kunden sehen. Es funktioniert also sowohl für den Client als auch für den Server alles gut. Das war es für das Inventar. Ich hoffe, dir hat der Kurs gefallen. Es hat viel Spaß gemacht, es zu machen. Wenn Sie an meinen anderen Kursen interessiert sind, besuchen Sie bitte pixel helmet.com. Ich werde weiterhin jeden Monat Kurse veröffentlichen. Also mach weiter und schau nach, wenn du Hilfe brauchst. Ich kann dir auch auf meiner Website helfen oder wenn du unserem Discord-Server beitreten möchtest, der wird dir danken, dass du hier bist und wir sehen uns beim nächsten.