Willkommen zurück, Meine Lieblingsspielentwickler.
Wie Sie jetzt sehen können, haben wir drei Feinde, x2, sehr beängstigend.
Lassen Sie mich das Spiel maximieren.
Und wir haben ein Unrecht damit, nicht nur Türen zu haben,
wir haben auch Feinde,
die drei Skelette sind.
Diese Skelette sind die Typen, die wir töten müssen, um die Türen zu öffnen.
Aber im Moment machen wir sie einfach mit einer Liste im Akt.
Also habe ich das Spiel maximiert,
hätte ich nicht tun sollen.
Ich laufe jetzt wieder weg.
Wenn ich in die Räume und heute schaue, sehe ich,
dass ich die Feinde hier habe und die beiden Türen habe, aber die Magie ist, dass wir sie gefangen haben
, ohne sie manuell hinzuzufügen.
Sie können sehen, dass es automatisch mit Kontaktfiltern geschieht,
Listen verwenden und viele coole Sachen verwenden.
Verschwenden wir also keine Zeit mehr und lasst uns anfangen.
Oh, Fall.
Jetzt haben wir also die Türen geschlossen.
Es ist Zeit, sie zu öffnen.
Wie öffnen wir die Türen?
Wir erlauben es ihnen zu öffnen, wenn wir alle Feinde loswerden
, die wir in der aktuellen Karte haben.
Was wir also tun werden, ist, dass wir
eine Variable erstellen, die zunächst sicherstellen wird, dass sich
alle Türen öffnen, wenn alle Feinde getötet werden.
Vielleicht muss das Level, das du geschaffen hast, nicht alle Feinde töten.
Vielleicht ist es zum Beispiel ein Level für den Laden,
genau wie wir es in Hades hatten.
Deshalb fügen wir diese Variable hinzu.
Also lasst uns anfangen.
Also hier drin haben wir den feindlichen Controller.
Wie Sie sehen können, habe ich alles organisiert.
Wie auch immer, verschwenden wir keine Zeit, denn im falschen Manager
werden wir das Volumen genau hier hinzufügen.
Und das heißt Türen zu öffnen oder zu öffnen.
Wann und ich ist Dy.
Da gehst du. Das sparen wir uns.
Wir werden hier wieder reingehen und wir sorgen dafür, dass dieser
besondere Raum wahr wird, wenn Feinde sterben.
Okay, großartig.
Das nächste, was wir tun müssen, ist, dass wir eine Referenz auf alle Feinde erhalten müssen.
Nun, wie machen wir das?
Wir werden offensichtlich mehrere Feinde haben.
Das bedeutet, dass wir höchstwahrscheinlich eine Art Array bekommen müssen.
Aber warum wollen wir kein Array verwenden?
Denn wenn wir ein Array haben,
wie werde ich das demonstrieren?
So kannst du zum Beispiel genau hier sehen,
ob ich hier auf eines dieser Arrays klicke,
und wenn ich das Minus verwende,
wird dies einfach die Tür aus unserem Spiel entfernen.
Es löscht nicht das gesamte Element.
Wir haben also immer noch zwei Türen hier,
aber eine von ihnen fehlt.
Wenn es um die Tür geht,
ist das kein großes Problem, da wir bereits wissen, dass wir nur zwei Türen haben werden.
Wir werden sie nicht zählen.
Wir werden sie nicht loswerden.
Sie sind da, sie sind statisch,
sie bewegen sich nicht.
Aber wenn es um die Feinde geht,
wollen wir einen Verweis auf alle Feinde in der Karte erhalten.
Und wenn wir sie langsam nacheinander töten,
werden wir sie zählen.
Und wenn wir feststellen, dass sie alle verschwunden sind ,
öffnen wir die Tür.
Und das wird ein Problem verursachen, wenn wir einen Tarif verwenden.
Deshalb werden wir etwas Besseres benutzen,
was die Liste ist.
Eine Liste ist also wie ein Array.
Es stellt eine stark typisierte Liste von Objekten dar.
Und das sind übrigens die Dokumentationen von Microsoft für das C-Sharp,
nicht die Unity-Dokumentation,
aber es ist ziemlich dasselbe.
Sie können Beispiele finden,
Sie können finden, was immer Sie wollen, und listet
das Tolle an ihnen auf, da sie viel besser sortieren können,
sie sind viel besser darin zu sortieren und zu manipulieren.
Was wir also tun können, ist, wenn jeder Feind stirbt,
wir können ihn von der Liste entfernen, ohne uns über irgendwelche Arten von Fehlern Gedanken machen zu müssen,
die Liste wird sich selbst anpassen.
Das erklärte, ich lasse Sie die Liste,
die Klasse, finden Sie die Dokumentation davon.
Und ich werde dir die Herausforderung wieder stellen, genau wie die letzte Herausforderung, die ich kenne.
So nervig, wenn man etwas alleine machen muss, ohne zu sehen, was ich zuerst gemacht habe.
Aber es ist Zeit, erwachsen zu werden, an der Zeit,
echte Spieleentwickler zu werden,
nach Problemen zu suchen und Dinge zu tun, denen wir noch nie zuvor begegnet sind.
Das ist das Schöne daran.
Schau dir die Dokumentation an und finde heraus, wie wir ein neues instanziieren können.
Lassen Sie uns eine serialisierte Feldliste erstellen.
Wir wollen die Liste im Inspektor sehen.
Später müssen wir es offensichtlich privat machen,
aber wir wollen prüfen, ob alles funktioniert.
Und schließlich wird der Typ der Liste ein Collider für D. Suchen Sie also die Dokumentation,
gehen Sie durch, erstellen Sie eine neue Liste,
die die Liste der Feinde vom Typ Collider 2D ist.
Wir sehen uns in ein bisschen.
Okay, willkommen zurück.
Wie bist du darauf gekommen?
Ich hoffe, du bist nicht zu wütend auf mich.
Wie auch immer, lasst uns ein serialisiertes Feld erstellen.
Und das wird eine Liste sein.
Und wie Sie sehen können,
haben Sie im Beispiel gesehen,
lassen Sie uns einfach überprüfen und sehen, wie es erstellt wurde.
Sie können also sehen, dass es die System-Punktsammlungen benötigt,
die genau hier sind.
Ups, tut mir leid, was es uns ermöglicht, Listen zu erstellen.
Mal sehen, was wir hier haben.
Sagen wir, ich scrolle nach unten,
wie erstellt man bitte Listen?
Wie erstelle ich eine Liste?
Wo ist es? Wo ist es?
Okay, also los geht's.
So erstellen Sie eine Liste.
Also müssen wir die Art dieses Typs eingeben, die wir in diesen beiden unnatürlichen haben,
wie sie genannt werden, und sagen, dass es einer neuen Liste entspricht.
Also hier drin,
der Typ Collider 2D,
habe ich dir schon gesagt.
Und du wirst in nur ein bisschen sehen, warum es ein Collider 2D ist.
Also Feinde, und es ist gleich
einer neuen Liste von Collider für die Feinde und wir schließen es mit diesen beiden Klammern ab.
Nun, offensichtlich haben Sie nur ein bisschen länger gedauert, um alles zu finden,
vielleicht schauen Sie sich die Dokumentation an, aber das ist gut.
Jetzt können Sie stolz sagen, dass der Schuh die Dokumentation durchsucht
, die Sie selbst erfahren haben, wie Listen erstellt werden,
und dies wird Ihnen viel mehr Selbstvertrauen geben
wenn Sie Ihre Spieleentwicklungsreise durchlaufen.
Ich werde nicht immer hier sein.
Manchmal bin ich nicht manchmal ich habe keine Zeit, dir zu antworten.
Das ist also eine großartige Übung.
Ich liebe diese Übungen.
Ich hoffe, du bist nicht zu wütend.
Lasst uns weitermachen. Was müssen wir gerade tun?
Wir müssen genau hier in die Räume gehen
und wir werden ein neues leeres Spielobjekt erstellen,
das die Feinde sein wird.
Und das wird alle Feinde halten, die wir haben.
Der Skelettfeind hier, dass C braucht er irgendwas?
Auch der Schießstand.
Machen wir es etwas kleiner, damit wir nicht wollen, dass die Feinde uns erschießen.
Wir wissen, dass alles funktioniert.
Das ist gut und wir werden ihre Gesundheit schaffen.
Aber kleiner, vielleicht drei.
Also nimmt er drei Treffer, wendet die Änderungen an.
Und ich werde ihn zu den Feinden bringen.
Ich gehe auch in die Prefabs und füge ein paar Feinde hinzu.
Und hier, also der Feind,
wird das Skelett noch eins hinzufügen.
Hier. Noch eins, so großartig.
Jetzt haben wir drei Skelette, die den Spieler jagen und erschießen werden.
Das werden wir speichern.
Okay, großartig.
Das nächste, was wir tun wollen, ist, dass wir das bekommen wollen,
einen Hinweis auf all diese Feinde und können sie zählen.
Was wir nun natürlich tun können,
wenn wir fortfahren können,
wählen Sie diese drei aus und ziehen Sie sie hierher und legen Sie sie manuell fest.
Das wäre gut,
das würde funktionieren.
Aber wir wollen eine dynamischere Möglichkeit haben, auf diese Feinde zuzugreifen.
Eine dieser dynamischen Möglichkeiten ist die Verwendung von Fundobjekten des Typs,
bei denen wir alle Objekte durchgehen und alle finden.
Dies ist auch eine gute Idee,
aber es belastet das System sehr.
Sie müssen alle Elemente durchgehen,
beginnend mit der Kamera und unten, bis Sie all diese Feinde vom
Typ oder Objekt des Typs finden.
werden wir nicht tun.
Stattdessen werden wir zunächst etwas viel komplizierteres tun,
aber viel effektiver und weniger belastend für das System.
Und es ist eine großartige Möglichkeit, etwas ganz Neues zu lernen.
Und wir haben bereits die,
sagen wir mal die Infrastruktur dafür, indem wir die Collider der Feinde und den Collider des Raumes haben
.
Wovon rede ich also?
Du hast es gerade gesehen.
Es ist der Collider, 2D-Überlappungscollider.
Was macht das?
Es nimmt einen Kontaktfilter auf ,
den wir uns nur ein wenig ansehen werden.
Und es gibt uns die Ergebnisse aller Collider-2D-Objekte.
Ein Kontaktfilter, der verwendet wird, um die Ergebnisse unterschiedlich zu filtern.
Was meinen wir damit?
Wir meinen, wir haben den Collider des Zimmers genau hier.
Also haben wir den Collider,
wir haben alle Objekte drin.
Wir wollen den Spieler nicht fangen,
zum Beispiel interessieren wir uns nur für die Skelette.
Wir müssen also diesen Kontaktfilter hinzufügen, der versteht, wie er verwendet wird.
Aber lass uns weitermachen.
Also Kontaktfilter und das Ergebnis,
das Ergebnis, Es ist das Array.
Um die Ergebnisse zu erhalten.
Wir können ein Array verwenden,
wir können auch eine Liste verwenden.
Mach dir darüber keine Sorgen.
Lasst uns eins fortsetzen.
Was brauchen wir?
Es gibt also die Anzahl der Ergebnisse zurück, wenn wir eine Rücksendung wünschen,
und dann werden wir prüfen, was ein Kontaktfilter ist.
Also gebe ich dir alle Möglichkeiten, wie wir kreieren.
Ehrlich gesagt hatte ich keine Ahnung was ein Kontaktfilter ist.
Dies ist das erste Mal, dass ich bei der Erstellung dieses Spiels begegnet bin,
obwohl ich viel Erfahrung in der Spieleentwicklung hatte. Dies ist wirklich das erste Mal,
dass ich es tatsächlich in das verwendet habe,
also habe ich danach gesucht.
Okay, also schau mal, wir haben viele Immobilien.
Und wenn Sie zurückgehen,
können wir genau hier die Ergebnisse anders sehen.
Und was haben wir sonst noch?
Wir haben etwas namens Bi-Layer-Maske.
Ich weiß, was Ebenenmaske ist,
also muss ich nachsehen und finde es.
Legen Sie die Ebenenmaske fest, ausgezeichnet.
Dadurch wird die Ebenenmaske basierend auf einer Art von bereitgestelltem Parameter oder so festgelegt.
Großartig. Ich klicke darauf,
ich sehe Kontaktfilter, Ebenenmaske.
Ich gebe ihm eine Ebenenmaske.
Ich weiß, was die Ebenenmaske ist und ich zeige dir, wie wir sie benutzen werden.
Aber wie auch immer, das sind die Schritte, die sogar ich manchmal unternehme.
Denken Sie also nicht an NEU,
erinnern Sie sich nicht an alles und Sie sollten wissen, nein,
Sie sollten Ihre eigenen Nachforschungen anstellen.
Schauen Sie sich immer die Dokumentation an und lassen Sie uns jetzt loslegen.
Also gehe ich hier wieder rein und erstelle zuerst
einen privaten Collider 2D,
und das wird der Raumcollider sein.
Spar dir das auf.
Und dann ein, ein weiterer privater Kontakt
wurde nach D gefiltert und es wird der Kontaktfilter für D sein.
Ich behalte den Namen einfach so, wie er ist.
Also jetzt und fange an,
was werden wir tun?
Nun, zuerst brauchen wir einen Hinweis auf den Raumcollider.
So ist Raumcollider gleich, um Komponenten zu erhalten.
Und es wird der Collider 2D sein.
Toll, jetzt haben wir einen Hinweis auf den Collider im Raum.
Als Nächstes wollen wir den Kontaktfilter 2D bekommen.
Und wir werden die Ebenenmaske so einstellen, wie wir es gesehen haben.
Und was haben wir gesagt, dass wir innerhalb der eingestellten Ebenenmaske brauchen,
wir brauchen die Ebenenmaske.
Wie bekommen wir die Ebenenmaske?
Nun, wir wissen, welche Ebene ist,
aber was ist die Maske?
Die Maske ist eine Möglichkeit, uns sagen zu lassen, zu konvertieren,
um zu verstehen, was die Ebenen sind.
Was können wir also tun?
Wir können etwas verwenden, das als Ebenenmaske bezeichnet wird.
Und wir können hier eine Methode verwenden, die besagt, dass wir die Maske bekommen sollen.
Und wie kriegen wir die Maske?
Wir können es tatsächlich kaufen den Namen der Layer.
Großartig, jetzt haben wir Zugriff auf den Namen der Ebene.
Und was bedeutet die Schicht, es ist der Feind.
Und da dies eine String-Referenz ist,
stellen Sie sicher, dass der Schuh richtig vergossen wurde,
kopieren Sie ihn sogar, wenn nötig.
Aber was hier passiert,
wir haben den Ebenennamen.
Wir verwenden die Get-Maske, eine Methode,
die in der Ebenenmaskenbibliothek verfügbar ist.
Wir verwenden diese gesamte Ebenenmaske und legen die Ebenenmaske im Kontaktfilter fest.
Kompliziert, ich weiß.
Und jetzt benutzen wir den Raumcollider, Gedankenüberlappung Collider.
Und was brauchten wir hier drin?
Wir brauchen den Kompaktfilter zum,
was sind die Ergebnisse?
Wo wollen wir unsere Ergebnisse werfen?
Und du siehst genau hier den Pfeil,
wenn du darauf klickst, los gehst du.
Sie können es zu einer Liste hinzufügen oder wir können es einem Collider 2D hinzufügen, basierend auf dem, was wir ihm geben.
Wenn wir ihm also ein Array geben,
wird dieses Ergebnis ein Array sein.
Aber da wir ihm derzeit eine Liste geben,
wird dies als Liste sein, speichern Sie diesen Datensatz.
Lassen Sie uns das noch einmal durchgehen.
Wir haben einen Kontaktfilter erstellt.
Wir haben verstanden, welche Kontaktfilter durch die Unit-Dokumentationen sind.
Wir haben einen Collider 2D hinzugefügt.
Das ist ganz einfach.
Wir haben eine Referenz, die die get-Komponente verwendet.
Wir wissen bereits, wie wir das machen.
Wir greifen auf den Kontaktfilter zu.
Wir verwenden eine Methode namens „Ebenenmaske einstellen“.
Diese gesetzte Ebenenmaske benötigt eine,
sogenannte Ebenenmaske,
nicht nur eine Ebene, eine Ebenenmaske.
Was wir also machen,
wir nach „Layer Mask“ gesucht.
Und das wird für Sie tatsächlich eine Herausforderung für Sie sein.
Suchen Sie nach Ebenenmaske,
holen Sie sich die Ebenenmaske und stellen Sie fest, wie wir diese Methode gefunden haben.
Das ist also ein ganz anderer Prozess.
Wir verwenden die get-Ebenenmaske,
die Teil der Ebenenmaske und der Unity-Engine-Ebenenmaske ist,
und verwenden den Namen der feindlichen Ebene.
Was passiert jetzt, sobald dieser Raummanager anfängt?
Zuallererst findet es bei Trigger Enter den Feind.
Zweitens schaut es durch alle Feinde, die bereits hier sind.
Und wie gesagt, gibt es viele Möglichkeiten, Feinde zu fangen.
Es gibt Fundobjekte vom Typ.
Wir können den Unternehmer benutzen können, aber ich dachte,
dies ist eine großartige Gelegenheit, sich über Listen zu informieren.
Erfahren Sie mehr über den Kontaktfilter in „Nie wissen wann“.
Manchmal befinden Sie sich möglicherweise in einer Situation und
Programmierung, in der Sie es ohne Kontaktfilter einfach nicht tun können.
Also spar dir das alles auf.
Wir gehen zurück in Unity und schauen uns jetzt unsere Feinde an, sobald wir rennen,
sollten wir die drei Feinde hier sehen.
Hoffentlich führe das Spiel aus.
Da sind wir los. Exzellent.
Und Sie können sehen, dass wir alle Collider von Skelett eins,
Skelett und Skelett drei haben,
oder wie Sie es nennen möchten.
Hervorragend, Wir haben einen Hinweis auf sie.
Der nächste Schritt besteht also darin, alle zu töten
und die Türen mit Blau zu öffnen, die im nächsten Video sicherstellen,
dass Sie Ihre Änderungen abschließen.
Stellen Sie sicher, dass Sie eine Rezension hinterlassen und wir sehen uns im nächsten Video.