Willkommen zurück Meine Lieblingsspielentwickler
zum letzten Video und in diesem
werden wir all diese kleinen Details in Bezug auf das UI-Display beheben
, die sich auf den Bitcoin beziehen,
der von Level zu Level kommt
und alles das andere lustige Zeug.
Verschwenden wir also keine Zeit mehr und lasst uns anfangen.
Oh, okay, jetzt müssen wir das Problem beheben
, dass unsere Feinde den Spieler nicht finden.
Wir möchten auch sicherstellen, dass
wir den Game-Manager als Singleton-Muster haben
, da wir natürlich unsere Bitcoins von Level zu Level auf dem Laufenden halten wollen
.
Dafür werde ich eine Herausforderung stellen, und deine Herausforderung besteht darin,
den Spieler zu finden
und ihn zu finden.
also zunächst sicher,
dass die Feinde weiterhin
nach dem Spieler suchen, bis wir sie gefunden haben.
Dies muss also eine Weile Schleife innerhalb des Updates und des gegnerischen Controllers sein
innerhalb des Updates und des
. Das ist ein kleiner Er.
Wir wollen unsere Bitcoins von Szene zu Szene halten.
Machen Sie den Spielmanager also zu
einem Singleton-Muster, genau wie wir es mit der Ebene getan haben.
Stellen Sie sicher, dass Sie dasselbe für den Spielmanager tun.
Erscheint es in der Hierarchie und der Bewohner zerstört?
Denken Sie also daran, als wir den App-Layer Aidan zerstören ließen,
erschien er in der Hierarchie unter einer bestimmten Registerkarte,
die aufDestroy getan hat.
Wird der Spielmanager auch erscheinen?
Testen Sie es also, weil wir sicherstellen müssen, dass
der Spielmanager kein Kind der Manager ist.
Der einzige Weg, um sicherzustellen, dass er
nicht zerstört wird, besteht darin, sicherzustellen
, dass er kein Kind der ganzen Manager-Spielobjekte ist
, die diese Informationen so gut haben.
Pausiere das Video jetzt und mach es alleine.
Oh, okay, willkommen zurück.
Als erstes gehen wir also
in den feindlichen Controller.
Scrollen wir hier nach oben, um zu aktualisieren und zu einem Update.
Ich werde überprüfen, dass der Spieler, den man jagen soll, zwar
gleich Null ist,
den Spieler dazu bringen werden, dipolar zu jagen
oder zu setzen, um Objekte des Typs zu finden.
Objekt fünf, tut mir leid.
Und es wird der Spieler-Controller sein.
Und es wird V-Punkt-Transformation sein
, weil deklariert zu jagen,
wie wir uns erinnern, ist ein Transport.
Also greifen wir auf die Transformation zu, nachdem wir das Objekt verfeinert
haben, das den Spieler-Controller auf sich hat.
Das sollte also funktionieren,
aber solange wir hier sind,
gehen wir zum Wo ist der Spielmanager?
Scrolle die Instanz nach oben.
Und hier drin finde ich den Spieler-Controller.
Und es spielt jetzt, okay,
also Spieler-Controller, es ist genau hier.
Ich kopiere
genau denselben Code und
füge ihn hier ein und entferne diese Instanz.
Spar dir das auf. Jetzt haben wir also ein Singleton-Muster.
Wir prüfen, ob es eine Instanz gibt, wir zerstören sie.
Wenn die Instanz anders ist als null,
haben wir zerstört und eine neue Instanz festgelegt.
alles sparen wir.
Gehen wir zurück in unser Spiel
und schauen wir uns an, was wir hier drin tun müssen.
Das erste, was wir tun müssen, ist, dass wir
den Spielmanager hier öffnen müssen,
und wir müssen den Spielmanager hier entfernen.
Nein, es wird mir nicht erlauben, dass wir im Prefab sehen
, ob ich bereits die Gain-Manager habe.
Also Manager, der Spielmanager.
Also öffne ich die Manager
und entferne den Spielmanager.
Dadurch wird der Spielmanager
aus allen anderen Szenen entfernt.
Und ich sorge dafür, dass ich
nur den Spielmanager hier drin habe.
Also keine anderen Manager,
einer, tut mir leid.
Wir brauchen den Spielmanager nur in der Szene.
Jetzt haben wir den Spielmanager,
wir haben 0 aber Münzen.
Lasst uns das alles retten.
Mach das nur ein bisschen größer.
Lass es uns nochmal laufen lassen.
Und mal sehen, was passiert.
Also heben wir die Waffe auf,
werden ein bisschen Münzen,
wir werden einmal getroffen.
Gehen wir zum nächsten Level.
Mal sehen, wir gehen zum nächsten Level.
Und los geht's, Wir sind auf der neuen Ebene und wir können
sehen, dass wir aus irgendeinem Grund die Feinde haben,
die folgen?
Nein, sie folgen nicht.
Irgendwas stimmt nicht.
Und wie Sie sehen können, wurden die Bitcoins und die Gesundheit offensichtlich
nicht aktualisiert.
Und das liegt daran, dass wenn wir uns den Spieler anschauen,
wenn wir den Spielmanager nicht zerstören,
die Bitcoins auch nicht waren.
Wenn wir uns also den Spieler ansehen,
werden Sie feststellen, dass seine Gesundheit 490 beträgt,
aber er wird nicht direkt hierher geschickt.
Warum? Da wir nur aktualisieren,
lassen Sie mich sehen, und den Gesundheitsmanager der Spieler,
aktualisieren wir die Spielergesundheit erst
wir getroffen werden und nicht, wenn wir tatsächlich anfangen.
Also müssen wir das auch beheben.
Aber bevor wir das tun,
gibt es etwas, das
mit der MS nicht ganz richtig ist.
Also werde ich das Spiel hier pausieren
und mal sehen, was das Problem ist.
Sie können also sehen, dass jeder unserer
Feinde uns nicht finden kann.
Also doppelklicke ich.
Und das Problem liegt bei dem Spieler Chase genau hier.
Mal sehen, was wir dagegen tun werden.
Oh, okay, also habe ich ein paar Dinge durchgemacht
und endlich die Lösung gefunden.
Das Problem hier drin war also,
und es ist sehr einfach,
wir müssen diese während des ganzen Loops hier oben verschieben
.
Und vielleicht möchten wir
dies in eine Art Methode extrahieren.
Also rufe ich diese Methode auf, um
Spieler zu finden oder sicherzustellen, dass wir den Spieler haben.
Warum schieben wir es hier hoch?
Nun, denn wenn wir versuchen, die Bewegung in Richtung zu rufen
, speichern Sie das.
Was ist also das ganze Problem im ganzen Problem und
das Ganze, was dies verursacht, ist, wenn wir
auf ein neues Level gehen, bevor die Ebene,
die nicht zerstört wird,
auf die nächste Stufe kommt.
Die Feinde haben bereits ein Ziel,
das der vorherige Spieler war.
Sobald wir ihn also zerstört haben,
können wir ihn nicht mehr finden.
Wenn wir das also versuchen,
sagen wir, wir wollten sie auf dem neuen Level haben,
wir haben alle Spieler gleich hier am Anfang gesetzt
und dann zerstören wir ihn.
Und dann versuchen wir, den Spieler zu jagen
oder uns auf den Spieler zu bewegen,
und von dort kam der Fehler.
Genau hier versuchen wir den Spieler zu jagen.
Und sobald es hier einen Fehler gibt,
funktioniert nichts darunter.
Das Update stoppt, alles hört auf.
Deshalb müssen wir den suchende Spieler haben.
Als erstes machen wir ein Update, bevor wir fortfahren,
während wir vielleicht nur die if-Aussage hier brauchen
, glaube ich,
aber lasst es uns auch behalten,
nur für den Fall, dass es ein bisschen fünf dauert.
das also aus dem Weg ist,
wir das sehen, wenn wir jetzt das Spiel ausführen
sollten wir das sehen, wenn wir jetzt das Spiel ausführen, wenn wir zum nächsten Level gehen.
Los geht's, wir haben keine Fehler.
Wir öffnen das und los geht's.
Die feigen Feinde
rennen davon und sie schießen darauf.
Was also aus dem Weg ist,
als Nächstes müssen wir natürlich
die Player-Benutzeroberfläche aktualisieren.
Also gehe ich in den UI-Manager.
Wir beenden das Spiel. Ja, das haben wir.
Zurück im UI-Manager.
Hier erstelle ich eine Methode, die die öffentliche Void-Update-Layer-Benutzeroberfläche sein wird
.
Und wir werden hier ein paar Dinge machen.
Das erste, was wir tun werden, ist, dass wir
einen Gesundheitshandler für Spieler erstellen.
Tiefe Schicht Gesundheit gefärbt,
und es wird gleich null sein.
Und du wirst sehen warum in nur ein bisschen,
denn wir werden eine While-Schleife erstellen, die auf
die Gesundheit des Spielers überprüft.
Und obwohl es null ist,
werden wir weiterhin danach suchen
die Spielergesundheit gleich ist, um Objekte des Typs zu finden.
Und es wird der Layer-Health-Handler sein.
Und sobald wir das gefunden haben,
können wir die While-Schleife verlassen.
Und dann werden wir hier drin weitermachen
und zuerst den Maximalwert des
Health-Schiebereglers erhalten.
Und es wird gleich dem Lebenspunkt des Spielers sein
, der den maximalen Wert erhält.
Offensichtlich müssen wir also eine Art Möglichkeit schaffen, auf das Maximum des
Spieler-Gesundheitshandlers zuzugreifen.
Was haben wir jedes Jahr, Okay,
also sind sie serialisiertes Feld.
Lassen Sie uns weitermachen und ein Publikum schaffen und
maximale Gesundheit der Ebene erhalten.
Und wir werden einfach V-Max zurückgeben.
Habe es nicht getan.
Wir haben schon einen von denen.
Nein, tun wir nicht.
Lasst uns weitermachen und die gute Schicht schaffen,
aktuelle Gesundheit auch, solange wir hier sind.
Also die aktuelle Gesundheit und was brauchen wir sonst noch von hier?
Wir könnten das brauchen,
Nein, ich denke, das ist alles, was wir brauchen.
Jetzt können wir also maximale Gesundheit bekommen.
Und dann müssen wir den Wert des Integritätsschiebereglers so einstellen
, dass er dem Layer-Integritätspunkt entspricht
, der den aktuellen Zustand erhält. Spar dir das auf.
Was müssen wir sonst noch tun?
Wir müssen auch einen Weg finden, unseren Text zu aktualisieren.
Also sage ich das, wie hieß es?
Der Gesundheitstext, hieß er Health-Tech-Schritt?
Los geht's und es ist auch öffentlich.
Großartig.
Scrollen Sie also hier runter.
Der gebeugte Punkttext für Gesundheit und Gesundheit entspricht also
dem aktuellen Lebenspunkt des Spielers.
Die aktuelle Gesundheit.
Und es ist plus der Schrägstrich.
Und war die maximale Gesundheit.
Also Spieler Gesundheit Punkt GetMax selbst.
Da sind wir los. Also ist alles bereit,
aber ich werde hier etwas machen.
Und das stimmt, ein Debug-Punkt-Protokoll.
Und ich möchte nur die gleichen Handlungen im Auge behalten Gesundheit.
Und lass mich das einfach holen.
Und das wird in nur ein bisschen Sinn ergeben.
Ich verärgert das hier drin.
Und du wirst sehen warum in nur ein bisschen.
Also werde ich das alles retten.
Ich gehe zurück nach Unity.
Ich führe das Spiel aus.
Ich werde Wohnung wählen, die die Bitcoins wird.
Werden Sie getroffen.
Bitte hol es dir. Okay, also los geht's.
Geh durch die Welt,
gehe durch das Portal, gehe zum nächsten Level,
und du kannst sehen, dass es hier 100 sind,
obwohl wenn ich auf die Ebene drücke, es für 90 ist.
Was denkst du ist das Problem?
Ich gebe dir nur ein paar
Sekunden, um darüber nachzudenken.
Das Problem war und ich sage dir, was das Problem ist.
Zuallererst müssen wir die Spielergesundheit aktualisieren.
Aktualisieren Sie also den Layer-Health oder die Player-Benutzeroberfläche.
Jetzt lasst uns weitermachen und es testen.
Vielleicht hast du es im Debugger gesehen.
Mir ist gerade aufgefallen, dass wir sie nicht einmal Methoden genannt haben.
Also los gehst du. Debug funktioniert,
ich bekomme es.
Geh durch den Larven,
geh durch das Portal.
Und was ist die Gesundheit?
Die maximale Gesundheit beträgt also 50 und der aktuelle Gesundheitszustand ist 0.
Was denkst du ist das Problem?
Nun, das Problem ist
wie wir im vorherigen Video gesagt haben,
wir hatten bereits einen Spieler in
der Szene und dieser Spieler wurde zerstört.
Sobald wir diese Hausleiste und die Steuer setzen wollen,
werden sie basierend auf dem alten Spieler festgelegt.
Um den neuen Spieler zu setzen,
was denken Sie, dass wir tun sollten?
Zwar gibt es viele Lösungen für dieses Problem,
aber ich fand, dass es am besten ist
dies einfach von einer öffentlichen Stimme in eine öffentliche Kunst und einen Zähler umzuwandeln
.
Und dann werden wir Rendite zurückgeben.
Neu. Warte vier Sekunden.
Und lass uns einfach 0.1 warten und
es wird die Zeit sein, in der
wir ein Ohnmachtsbild haben
, das wir ausgeschaltet haben, nur
um den Testprozess zu beschleunigen.
Was also passieren wird, ist, dass wir 0,1 Sekunden warten
und während dieser Zeit
wird der ältere Spieler zerstört,
der neue Spieler wird gefunden
und wir werden sofort unser Update erhalten.
Also hier drin beginne ich anstelle des Update-Players
eine Co-Routine,
die die Aktualisierungsschicht sein wird, die Sie haben.
Ich speichere das wieder in unser Spiel.
Wir führen das Spiel aus. Wir haben es kapiert.
Wir gehen raus, wir machen das durch und los geht's.
Wir können sehen, dass unsere Gesundheit aktualisiert wurde
und sie sehr nahtlos ist.
Also los geht's,
Wir können sehen, dass alles einwandfrei funktioniert.
Und zuallererst haben wir auch die Bitcoins,
also müssen wir das auch hier beheben.
Und was wir auch tun wollen, ist, dass wir sicherstellen wollen
, dass wir in der richtigen Position hervorgebracht haben.
Antworten Sie also derzeit direkt neben dem Portal,
was nicht hilfreich ist.
Unser Ziel ist es , zu diesem Portal zu gelangen
und nicht nur dort zu spawnen.
Also werde ich
zuerst hier drin sehen,
was wir tun müssen.
Wir müssen also den Bitcoin-Text haben,
die BTC-Effekte. Da sind wir los.
So BTC-Text, der Text ist gleich find oder nein,
wir haben den Spielmanager, die on-Instanz.
Geht, aber fortlaufend. Wir gehen,
ich glaube, dieser gibt die Bitcoins zurück
, die das alle als Bitcoin kennen.
Wenn ich also zum Spielmanager gehe, hol dir den
aktuellen Bitcoin, damit ich
aktuellen Bitcoin bekomme, speichere das.
Und das sollte funktionieren, außer dass es nicht
daran liegt, dass Sie den Typ und zwei Strings implizit konvertieren können
.
Also die beiden Strings,
das konvertiert alles Playstring, speichere das.
Testen wir das ein bisschen aus dem Spiel.
Und jetzt holen wir eine Münze und gehen zum nächsten Level.
Okay, jetzt sollten wir sehen, dass wir
zehn hier drin haben, los geht's.
Es braucht Zeit, aber es wird nicht auffallen,
besonders wenn wir das Schicksalsbild haben,
aber jetzt müssen wir den Spieler an einem bestimmten Punkt spawnen.
Also gehe ich in
den Level Manager und mache das
beim Level Manager.
Und ich scrolle hier nach unten.
Und ich erstelle eine neue Methode.
Also hier unten werden wir eine neue Methode erstellen
, die eine öffentliche Leere ist und ihre Spot-Ebene und
der Punkt- und Eingabe-Player in Punkt
Wir werden die Punktinstanz des Player-Controllers bekommen,
Punkt nicht instanziieren, Punkt tanz,
spiele einen Bullet-Controller.
Okay, also Layer-Controller-Instanz.
Und wir werden die Punkttransformationsposition verwenden
die Punkttransformationsposition
und sie wird einer Art Spawnpunkt entsprechen
, der Position.
Und jetzt kopiere ich das und
erstelle hier oben ein serialisiertes Feld.
Von der Transformation und es wird der Spawnpunkt sein.
Scrolle nach unten und sieh, wie das aussieht. Ja, da sind wir los.
Was hier passiert ist, dass wir den Spieler von Anfang an auf
den Punkt bringen.
Wo fängt es an?
Hier drin werden wir den Ebenenpunkt setzen.
alles sparen wir.
Und was hier passiert ist, sobald
der Level-Manager startet, denken Sie daran,
dass es kein Tonnenzerstörer ist,
es ist kein einziger Kampf auf der Punktinstanz-Punktposition des Spieler-Controllers
Punktinstanz-Punktposition
es ist kein einziger Kampf auf der Punktinstanz-Punktposition des Spieler-Controllers sofort an Ort und Stelle.
Also zurück hier drin
haben wir diese Handflächenpunkte bereits.
Wir sind Spawn-Punkte 1.
Also werde ich hier ein neues erstellen und es wird
Layer auf Spawn sein.
Und wo ist es und die Szene.
Mal sehen, und es wird ungefähr hier sein.
Wenn wir auf eine andere Ebene gehen,
können wir dies tatsächlich außer Kraft setzen.
Also im Manager überschreiben
Sie und Sie können wählen, was Sie überschreiben möchten?
Denken Sie daran, dass wir die Spawn-Punkte nicht überschreiben möchten
, da
für jede einzelne Ebene
es für jede einzelne Ebene einen anderen Spawnpunkt geben wird.
Also werde ich den Levelmanager des Prefab Managers überschreiben
,
vielleicht auch Overwrite Prefer-Manager anwenden.
Da sind wir los.
Und hier spawnt der Spieler Punkte.
Lassen Sie uns weitermachen und
das Prefab auch auf den ganzen Vorzug anwenden.
Okay, großartig. Stellen Sie also sicher, dass Sie sich nicht bewerben.
Alles, spar dir das alles auf.
Und jetzt führe ich das Spiel aus.
Ich gehe auf ein neues Level.
Und das sollten wir. Nein, haben wir nicht.
Das liegt daran, weil wir oh, okay.
Okay. Okay.
Das Problem ist also hier und 11 Manager,
was ist das Problem hier drin?
Wenn wir zu ihnen scrollen,
spawnen wir Point und den Level-Manager.
Was scheint das Problem zu sein?
Außerdem los geht's, es ist hier drin.
Wir müssen es einstellen. Und jetzt müssen wir zu
den Level-Managern gehen und die Änderungen anwenden.
Wenn wir jetzt rennen,
sollten wir sehen, ob wir zum nächsten Level gehen.
Nein, es funktioniert immer noch nicht.
Also was ist das Problem?
Die Variable wurde nicht zugewiesen.
Also denke ich, dass hier etwas nicht schnell festgelegt ist.
Wenden Sie sich also an Prefab Level Manager.
Und was ist sonst noch das Problem?
Also denke ich, dass auf der anderen Ebene
der Spawnpunkt nicht richtig eingestellt wird.
Also versuche ich die Änderungen zu übernehmen.
Vielleicht wird es dieses Mal funktionieren.
Nein, das tut es immer noch nicht, denn wenn wir
zum Levelmanager des Managers gehen,
Spawn-Punkt des Spielers auf dem Level-Manager,
ist es nicht einmal eingestellt.
Was denkst du also von einem Problem hier drin ist,
dass wir einen Fehler gemacht haben
weil alles hier drin zurückgesetzt wurde.
Sie können also genau hier sehen, dass diese nicht eingestellt werden.
Also werde ich mich vorerst alles bewerben.
Das ist nicht die beste Idee,
aber machen wir uns darüber vorerst keine Sorgen.
Ich gehe zum nächsten Level und stelle sicher, dass
wir endlich den richtigen Punkt spawnen.
Aber im Moment werden wir auch Laichen haben.
Und hier, wie Sie sehen können,
aber das wollen wir nicht, weil
jedes Level seine eigenen Feinde hat, seine eigenen
Ebenen hat, Entschuldigung,
Wellen und so weiter und so weiter und so weiter.
Aber wie Sie sehen können, funktioniert alles.
Das einzige Problem in unserem Spiel ist
die Tatsache, dass wenn wir zur Tür gehen,
dies das erste Mal auftaucht und wenn wir es öffnen,
wenn wir weggehen,
es nicht geht.
Ich meine, die Worte erscheinen nicht
wieder und die Tür schließt sich nicht wieder.
Warum? Denn in dem Raum
, den du geschaffen hast und das war ein Fehler von mir.
Wir schalten die Tür aus.
Also schalten wir die Tür aus,
aber die Textanzeige befindet sich immer an der Tür.
Also überlasse ich Ihnen das als letzte Herausforderung.
Tun Sie außerhalb des Reiches der Partituren.
Alles, was Sie tun müssen, ist
diesen angezeigten Text von der Tür zu entfernen
und ihn direkt hier auf das Portal zu legen
und ihn dann genau hierher zu verschieben.
Die Leinwand muss also an die Tür geklopft werden,
sie muss sich auf dem Portal befinden und Sie müssen
die Tür basierend auf dem Text ein- und ausschalten,
es wird ein paar Änderungen am Code geben.
Aber ich denke, zu diesem Zeitpunkt
bist du ein so guter Spieleentwickler auf einem so hohen Niveau geworden
mit all den langen,
langen Videos, die ich dir beigebracht habe.
Ich hoffe, dir hat dieses Video gefallen.
Ich hoffe, dir hat der ganze Kurs gefallen.
Ich hoffe, du hast viel gelernt.
Ich hoffe, Ihnen gefällt die Reise und den Prozess.
Und ich hoffe, du warst nicht zu wütend, als ich Fehler gemacht habe.
Ich hoffe, Ihnen gefällt
die Transparenz, die ich Ihnen zeige.
Und wenn Sie mir natürlich noch nicht
eine Rezension hinterlassen, stellen Sie sicher,
dass Sie sich der Zwietracht anschließen
und ich sehe Sie
vielleicht nicht im nächsten Video, denn dieses
ist das letzte.
Vielleicht werden wir eines Tages in Zukunft
in Kontakt bleiben.
keine Sorgen. Vielen Dank fürs Zuschauen.
Auf Wiedersehen.