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.