Transkripte
1. Einführung in meinen Einheitskurs: Hallo, ich bin Nico fing mich auf Muskel Student für Informatik und alle seltsamen Nerd für alles Spiel Entwicklung im Zusammenhang. Seit fast acht Jahren programmiere ich in Unity sowohl aus Freizeit- als auch aus beruflichen Gründen. Die erstaunliche Kraft der Unity-Engine gibt Ihnen kostenlos immer noch verblüfft mich bis heute. In dieser vollständigen Einheit und C-Sharp-Klasse lernen
Sie alle Fähigkeiten, die Sie brauchen, um tolle Spiele in
Unity oder von den ganz einfachen bis fortgeschrittenen Themen zu machen . Zunächst werden Sie gründlich in die Programmiersprache C-Sharp eingeführt. Diese Grundlagen werden Ihnen helfen, die Einheit in ihrer ganzen Schönheit zu verstehen. Und so sind auch absolute Anfänger in der Programmierung in dieser Klasse sehr willkommen. Nachdem wir die Grundlagen von C Sharp gelernt
haben, gehen wir zu den grundlegenden Konzepten der Einheit über, wie zum Beispiel dem Editor, wie Skripte funktionieren, Texturen und Sprites und vieles mehr. Sobald die Grundlagen fertig sind, Sie Ihren eigenen ersten Gang erstellen, Sie ist Clicker. Dieses Projekt ist von ihm inspiriert, Cookie Clicker. Und wir verwenden alle C-scharfen Grundlagen sowie alle grundlegenden Konzepte, die Sie bis dahin gelernt haben. Und dann werden wir weiter mit weiteren Zwischenthemen wie einem ausführlichen Abschnitt über das USU I-System, sowie dem Neuerstellen, Speichern sowie dem Neuerstellen, Speichernund
Speichern von persistenten Daten sowie der Verwendung von Kachel-Sets, unter anderem. All das und mehr erwartet Sie in dieser kompletten Klasse zur Unity-Spielentwicklung. Also, worauf warten Sie jetzt auf die Anmeldung in dieser Klasse? Und lasst uns der erste Schritt der fantastischen Reise sein, um erstaunliche Unity-Spiele zu erschaffen. Die Macht liegt in deinen Händen. Ich werde Sie in der ersten Lektion sehen.
2. Unity: Ordnung, willkommen zu diesem Vortrag, wo wir durchgehen, wie man Unity herunterladen und installieren kann. Diese URL ist also als Ressource verfügbar, so dass sie sehr leicht darauf zugreifen können. Es wird einfach bei unity.com Slash Download gespeichert. Und dann stellen Sie sicher, dass Sie alle diese Kriterien hier erfüllen. Und man könnte einfach sagen: Ja, ich ergreife all diese Kriterien. Dies ist im Grunde, wenn Sie einfach eine einzige Person sind und Sie dies in keiner Art von Unternehmen oder so etwas tun, dann können Sie die Unity persönliche Lizenz hier verwenden und ja,
und laden Sie einfach Unity Hub herunter. Es wird also ein Programm geben, das für alle möglichen Dinge nützlich sein wird. Ich werde das hier schnell in diesen Ordner einfügen. Das ist also einfach eine EXE, Sie können es einfach starten. Und dann musst du das vielleicht tun. Es hat Admin-Zugriff und dann werden Sie von den Nutzungsbedingungen begrüßt. Sie werden diese einfach akzeptieren und dann sagen, wo immer Sie dies installieren möchten. Jetzt habe ich es persönlich bereits installiert. Sie werden einfach auf Installieren klicken und dann wird alles von dort aus funktionieren. Nachdem Sie es installiert haben, werden Sie wahrscheinlich aufgefordert,
sich im Grunde anzumelden, wenn Sie bereits ein Unity-Konto haben, das ist großartig. Wenn Sie dies nicht tun, können Sie einfach eine auf der Unity-Website erstellen und sich dann mit diesem anmelden,
nachdem Sie sich angemeldet haben . Jetzt werden Ihre Projekte wahrscheinlich leer sein, aber das ist völlig normal. Aber das erste, was wir tun müssen, ist eine bestimmte Instanz der Einheit zu installieren. Also in unserem Fall, wie Sie sehen können, habe ich 20 1946, ich habe 2020 zu 0. Dies ist eine Beta-Version. Und dann habe ich die 2023 0-Version, die im Grunde diejenige ist, mit der wir meistens arbeiten werden. Wenn Sie nun zu dieser Schaltfläche „Hinzufügen“ gehen, wird ein neues Pop-up geöffnet und Sie können sehen , dass Sie entweder einige empfohlene Releases erhalten können. So gibt es tatsächlich vier neue fremde Versionen wurden seit dem 2020 Punkt drei Zeiger 0
freigegeben. Und dann gibt es auch andere offizielle Versionen sowie Pre-Releases. Jetzt in unserem Fall wollten wir eigentlich die 2020-0.3-Version, was auch immer die Zahl danach ist, bedeutet normalerweise , dass es nur einige Bugfixes und einige kleinere Änderungen gibt. Also lasst uns nächstes Jahr klicken. Und dann, wenn Sie es nicht selbst installiert haben. Wenn Sie also Visual Studio nicht haben, empfehle
ich Ihnen dringend, dies zu Ihrer Installation sowie zu einem Modul hinzuzufügen. Weil ich Visual Studio verwenden werde und es möglicherweise einige in Kongruenzen geben wird. Wenn Sie eine andere Entwicklungsumgebung verwenden, Sie
grundsätzlich Dokumentation unbedingt haben. Und dann könnten Sie theoretisch auch einige verschiedene Sprachpakete hier haben, wie Sie sehen können, und alle Plattformen interessieren uns nicht wirklich. Vielleicht, wenn Sie im Grunde auf einem Mac oder Linux sind, dann würde ich natürlich sagen, dass Sie das auch auf jeden Fall nehmen sollten, damit Sie Ihr Spiel tatsächlich auf Ihrem eigenen Rechner bauen können. Sonst wäre das nicht so schlau. Stunde, aber ich glaube, dass Einheit, der Hub tatsächlich erkennt, auf welcher Art von System Sie sind und sollte das automatisch installieren. Aber ja, also denke ich definitiv, dass Sie dieses Visual Studio hier haben sollten. Ich habe das bereits installiert, also brauche ich es nicht, aber ich habe es dringend empfohlen. Und dann klicken Sie einfach auf Fertig. Jetzt, wie Sie sehen können, wird dies ab und zu auch installiert. Dies wird eine Weile dauern, abhängig von Ihrer Internetverbindung sowie Ihrer Geschwindigkeit Ihres Computers. Nachdem die Installation abgeschlossen ist, können
wir zu Projekten zurückkehren. Und jetzt werden wir tatsächlich gehen, um unser eigenes erstes riesiges Projekt hier zu erstellen. Also wirst du nach New gehen. Und normalerweise gehe ich zu diesem Dropdown-Menü, damit Sie
auswählen können , welche Version von Unity Sie auswählen möchten. Wählen wir hier die neueste Version aus. Und dann wird es hier ein neues Fenster erstellen , das besagt, Erstellen Sie eine neue Version mit dieser bestimmten Version. Da dies ein 2D-Kurs ist, wollten
wir im Grunde nur D, als Vorlage hier
ausgewählt. Wir können einen Ort auswählen, ich bin in Ordnung mit diesem Ort. Und dann der Name des Projekts. In diesem Fall werden wir nur das Installationsbeispiel in unserem Fall für Sie verwenden, denn danach werden wir sofort in die C-scharfe Einführung beginnen. Vielleicht wäre das ein besserer Name für dich. Also vielleicht hat das Projekt C scharfe Einführung für Sie genannt. Ich werde beim Installationsbeispiel bleiben, dann klicken Sie auf Erstellen, dann wird Unity Hub geschlossen und eine Einheit wird geöffnet. Möglicherweise müssen Sie ja zu dem eigentlichen Windows Defender sagen, der die Firewall verwenden möchte. Wir werden nur ja sagen, natürlich, weil das okay ist. Und dann in nur einer Weile nachdem es einige Sachen importiert und sogar ein paar weitere Dinge heruntergeladen hat, dann wird es für uns geöffnet, je nachdem, wie gut Ihr PC ist. Das könnte etwas länger oder kürzer dauern, und da haben wir es. Das erste, was ich tun werde, ist, dass ich
das Layout in mein persönliches Layout ändern werde, das ich benutze. Ich habe dies unter KJ Layout gespeichert. Und wenn ich das auswähle, dann ist dies das Layout, in dem wir in diesem Kurs verwenden werden. Jetzt habe ich Ihnen das hier als Layout gegeben,
Baumwolle allgemeines Layout, W LTE. Dies ist die Datei, die auch als Ressource zur Verfügung steht. Und dann können Sie es im Grunde importieren, indem Sie zu kJ gehen, dann Layout aus Datei laden sehen und diese Datei auswählen. Und dann sollten Sie genau das gleiche Layout haben. Wenn Sie möchten. Das musst du nicht unbedingt haben. Es ist nur, dass dies das Layout ist, an das ich mich gewöhnt habe. - Ja. Eine weitere Sache, die Sie überprüfen müssen, bevor Sie fortfahren können ist, dass Sie zum Bearbeiten gehen und dann zu Einstellungen gehen. Und das wird hier ein Präferenzfenster öffnen. Und dann stellen Sie in externen Tools
sicher, dass Sie hier den richtigen Skript-Editor ausgewählt haben. Also für uns, dies für Sie, wird
dies wahrscheinlich Visual Studio Community 2019 sein. Ich Visual Studio 2019 selbst. Also, nur damit Sie wissen, dass Sie diese auswählen müssen. Andernfalls verwenden Sie den Standard-Skript-Editor, was ist? Es wird ein bisschen anders aussehen als das, was du mit mir sehen wirst. Aber das wäre es für diesen. Dies ist die Installation abgeschlossen. Dann, wenn Sie mit diesem Kurs fortfahren, haben
Sie im Grunde auf einige davon sind einige der Abschnitte. Sie haben zwei Möglichkeiten. So können Sie entweder das komplette Paket für etwas oder ein leeres Paket bekommen. Das bedeutet also im Grunde, dass Sie entweder alles
erledigen können oder Sie mit grundsätzlich nichts anfangen und es aufbauen können, während ich es mache. Um dies zu importieren, können
Sie zu Assets gehen, Paket
importieren, benutzerdefiniertes Paket. Dann öffnet es hier einen bestimmten Ordner. Und wir gehen einfach zu unserem Ordner, in dem ich das habe. Und wie Sie sehen können, gibt es einige dieser Pakete, die
alle als Ressource verfügbar sind. Also zum Beispiel, was wir wollen, ist die C-Sharp komplett. Also lasst uns das öffnen. Und dann, wie Sie sehen können, ist alles hier bereits für Sie
getan, so dass Sie einfach Import sagen müssen. Und dann wird es all diese Klassen und all diese Szenen importieren. Und dann können Sie grundsätzlich Vorlesung 10 Datentypen starten. Da ist es. Und wenn ich damit anfangen würde, dann können Sie sehen, dass es sofort mit funktioniert, nun, es wird neu geladen und dann, wie Sie sehen können, funktioniert
es und alles ist in Ordnung. Also, das wäre im Grunde, es ist sehr wichtig. Sie müssen also wählen, ob Sie
die komplette Version wollen oder ob Sie die leere Version davon wollen. Und ja, das wäre es im Grunde für die Installation. Das wäre alles, was du wirklich brauchst, damit
du den Weg für die Programmierung in Unity beginnen kannst. Ja, ich hoffe, Sie fanden das nützlich und die Installation war erfolgreich. Wenn irgendwelche Fragen bleiben, natürlich, zögern Sie nicht zu fragen, und ich werde sicher sein, zu antworten. Und ja.
3. (C#) Erstellung unseres ersten Unity: In Ordnung, willkommen zu diesem Vortrag. Und das ist nur eine schnelle Ergänzung hier. Du weißt also, was du tun musst. Denn nächste Vorlesung werden wir sofort mit dieser C-scharfen Einführung beginnen. Und im Grunde wollte ich Ihnen nur noch einmal zeigen, ein neues Projekt zu erstellen und dann im Grunde das eigentliche Paket zu importieren, das ich hier bereitgestellt habe. Das war der Vortrag vorher. Das war das komplette und das leere Paket. Sie sind Unity Package Files. Und ja, im Grunde, wenn Sie Unity Hub geöffnet haben, klicken
Sie einfach auf diesen kleinen Pfeil und wählen Sie dann die neueste Version. Und wenn Sie darauf klicken, öffnet sich hier
ein neues Fenster. Erstellen Sie ein neues Projekt mit Unity 2020 drei, und dann, was auch immer die aktuelle Version sein mag, ME sicher, die 2D-Vorlage hier auszuwählen. Und dann würde ich etwas wie
C scharfe Einführung als Projektname oder so etwas vorschlagen . Natürlich müssen Sie auch Ihren Standort angeben. Wo soll das erstellt werden? Sagen wir einfach, ich bin damit zufrieden. Und wie ich schon sagte, C-Sharp Einführung, die am sinnvollsten ist. Und dann erstellt es das neue Projekt. Sie müssen also tatsächlich ein neues Projekt erstellen. Insgesamt würde ich sagen, dass wahrscheinlich für jeden Abschnitt. C-Sharp kommt dann die Grundkonzepte. Und dann können wir im Grunde unser erstes Spiel bauen, die Wangen Clicker, Einheit, DUI und so weiter. Also würde
ich Ihnen für jeden dieser Abschnitte raten, ein neues Projekt dafür zu erstellen, dann werden Sie immer in der Lage sein, unabhängig von den tatsächlichen Inhalten zu importieren. Für die C-scharfe Einführung haben
Sie die Möglichkeit, zwischen den folgenden beiden zu wählen. Also, wenn ich sie hier rüber kriege, dann gibt es die C-Sharp. Wie Sie sehen können, das komplette Unity-Paket und das leere Unity-Paket. Beide kommen mit einem vordefinierten, so dass Ordner und Szenen bereits angelegt und fertig sind. Die Leere sind einfach im Grunde leere Skripte. Und die vollständigen sind die kompletten Skripte, die
bereits sind , die wir im Grunde in der C-scharfen Einführung tun. Was auch immer Sie sich anfühlen, ist besser für Sie, C-scharf zu lernen. Sie können entweder alles bereits erledigen oder dies leer haben, gleich mit allen anderen Abschnitten. Das sind sie. Sie können entweder die kompletten Pakete erhalten, die sie sind oder im Grunde das gesamte Projekt erstellen, während wir mit den Vorträgen gehen. Also mal sehen, noch einmal, in der Regel sollte das Layout hier anders sein. Wenn Sie zurück in die Einheit Isolierung schauen, sie sind, ist Nummer eins eine Ressource oder Nummer 2, Ich sage Ihnen, dass wir das Layout zu diesem ändern. Und das ist auch das Layout, das wir während des gesamten Kurses hier verwenden werden. Und Sie können zu Assets gehen, Pakete
importieren oder Paket importieren, benutzerdefiniertes Paket. Und dann wird es Sie im Grunde diesen Dateidialog öffnen lassen. Und dann können Sie entweder das komplette Paket oder das leere Paket auswählen. Wie ich schon sagte, das MD-Paket wird auch alles enthalten. Allerdings werden die Skripte
leer sein , außer möglicherweise für die ersten beiden, weil das ist, das ist das grundlegendste Zeug, das ich ein paar Dinge erklären möchte, die sie sind. Und im kompletten wird
alles darin sein. Der Import selbst sieht also sowohl für den vollständigen als auch für den leeren gleich aus. Allerdings sind in der vollständigen gefüllt, die wir grundsätzlich nur aus Gründen des Arguments hier überprüfen können. Gehen wir zum Beispiel zu Skripten und lassen Sie uns einfach auf alles klicken. Und dann, wie Sie sehen können, ist dies bereits ausgefüllt, manchmal auch mit ein paar Kommentaren, so dass Sie das auch überprüfen können. Aber ja, von hier an werden
wir sofort mit dem Vortrag eins beginnen, Datentypen. Ich hoffe, Sie werden Spaß mit dem Kurs haben und dass Sie etwas Neues lernen. Und ich sehe dich in der ersten Vorlesung.
4. (C#) Einführung in C#: Alles klar, Willkommen bei der C-Sharp Einführung hier für den Einheitskurs. Und in diesem ersten Vortrag werden wir einen Blick auf Datentypen werfen. zunächst, Vergewissern Sie sichzunächst,dass hier die Lecture 1-Datentypen geöffnet sind. Und dann gehen Sie einfach zu Skripten und doppelklicken Sie auf Datentypen und dann öffnet sich das Datentyp-Skript. Nun, es gibt ein paar Dinge, die ich zuerst sagen möchte, das erste ist, dass wir das meiste ignorieren werden, was hier oben ist. Wir werden das vorerst nur ignorieren. Das kommen wir später runter. Und das werde ich im Detail erklären. Aber im Moment müssen wir zuerst mit ein wenig anderen Fundament beginnen. Sagen wir einfach, dass wir all dies brauchen, um das Programm laufen zu lassen. Sagen wir einfach so und dann wird es uns gut gehen. Und dann alles andere da oben, werden
wir einfach ignorieren. Und wir werden reinschauen,
in diesen Anfang hier, also sehen wir den Anfang. Und dann haben wir diese lockige Klammer und alles, was hier drin steht. Das ist es, was wir uns ansehen werden. Also im Code, zum Beispiel in C Sharp. Und auch, ich denke, wie im Grunde jede andere Programmiersprache, wir gehen immer von oben nach unten. Also jede dieser Zeilen, Glück gibt es hier auch nummeriert. Jede dieser Zeilen wird seriell ausgeführt. Also im Grunde wird zuerst Zeile 10 ausgeführt und dann Zeile 11 und dann Zeile 12 und so weiter und so weiter. Es gibt ein paar Dinge, bei denen Sie zum Beispiel ein paar Zeilen
zusammenfassen und dann ausführen lassen können. Aber im Moment werden wir es nur
denken, während wir von oben nach unten durchgehen werden. Und alles ist in Müsli passiert, oder? Und jetzt Datentypen. Also was? Die erste Frage ist, was sind Datentypen? Datentypen sind im Grunde eine Möglichkeit,
Informationen zu speichern , und es gibt verschiedene Arten von Informationen. In C-Sharp haben wir also Wahrheit oder boolesche Werte. Wir haben Nummern. Dies können ganze Zahlen oder Gleitkommazahlen sein. Und wir haben auch im Grunde Text. Dies sind entweder Zeichen oder mehrere Zeichen, Zeichen nebeneinander, die Strings genannt werden würden. Beginnen wir nun mit den Wahrheitswerten oder booleschen Werten. Ein paar Dinge für die grundlegende Syntax als auch. Wenn wir also eine neue Variable erstellen wollen, dann schreiben wir den Typ, den wir wollen. In diesem Fall ist dies ein boolescher Wert. Also schreiben wir bool und dann schreiben wir den Namen der Variablen, und dann beenden wir jede Zeile mit einem Semikolon. Dies würde eine Erklärung genannt werden. Wir werden uns das in der nächsten Vorlesung noch einmal ansehen, ein bisschen mehr, die Syntax von allem. Aber im Moment ist das die Idee. Also haben wir jetzt eine Variable erstellt, wie Sie sehen können, lokale Variable vom Typ bool, die aufgerufen wird, geerdet. Und dann können wir diese Variable mit diesem gleichen Operator einen Wert zuweisen. In diesem Fall sagen wir gleich wahr. Also in diesem Fall, nachdem Zeile 12 geerdet ist gleich wahr. Das ist also die Aufgabe. Und Sie können sich zum Beispiel
vorstellen, dies ist der Grund, warum eine Erkältung es geerdet ist. Die Variable ist geerdet könnte etwas sein, das den
Überblick hält , wenn Sie wie ein 2D-Jump'n'Run haben, wo Mario zum Beispiel hin und her läuft und sobald Mario Sprünge geerdet wird, würde auf false gesetzt werden, weil jetzt er in der Luft ist. Und dann, sobald er den Boden wieder berührt ist geerdet wäre wahr. Dies ist also etwas, wo man es zum Beispiel so
machen könnte, dass man nicht unendlich hoch springen kann weil man auf dem Boden sein muss, um springen zu können. Das ist wie eine Art echtes Beispiel, das Sie in einem Spiel verwenden können. Und dann haben wir hier die Unity-spezifische Ausgabe, nur damit wir sehen können, was die Variable tatsächlich mit sich bringt. Wir werden uns die Ausgabe am Ende ansehen, wenn ich mit der Erklärung hier fertig bin. Und dann wäre dies die Wahrheit und boolesche Werte, die nützlich sind, um im Grunde zu entscheiden, ob etwas wahr oder falsch ist oder nicht. Weil das die möglichen Werte darin entweder wahr oder falsch sind. Und das war's. Dann schauen wir uns die ganze Zahl an. Ganzzahlen sind also ganze Zahlen. In diesem Fall sind wir, machen
wir eine Variable, die
Punkte vom Typ Integer genannt wird , und wir weisen ihm sofort eine 50. In diesem Fall würden
Deklaration und Zuweisung zusammen in einer Zeile Initialisierung genannt. Und das setzt sofort nur die Punktevariable 250. Und dann haben wir auch eine lange. Ein langer hat einfach ein höheres Limit. Damit wir größere Zahlen dort speichern können. Und ich habe das eigentlich gerne hier nur als Referenz. Der Maximalwert einer normalen Ganzzahl ist also 2 Milliarden, und dann ist der Maximalwert eines Long fünf Quintillion, glaube ich. Aber am Ende ist es so groß, dass es selten verwendet wird. Und ich habe auch, in, vor allem in Spielen, in der
Regel das ganzzahlige Maximum ist genug. Und ja, die Lungen sind da. Wenn Sie sie jemals brauchen, dann können Sie dies tun und haben es im Grunde neun Quintillion sein. Und es sollte dir gut gehen. An diesem Punkt glaube ich. Richtig? Und dann sind Gleitkommazahlen im Grunde Zahlen mit einem Dezimalkomma. Sie werden jedoch mit einer wissenschaftlichen Notation gespeichert. Wissenschaftliche Notation sind also Dinge wie zehn. Lassen Sie uns wie 3,5 mal zehn zu den vier machen, zum Beispiel, dies ist wissenschaftliche Notation und so werden die Fließkommazahlen gespeichert. Und es gibt zwei Arten von Fließkommazahlen gibt es hier interessant. Einer ist ein Float und einer ist ein Double. Und der Unterschied zwischen diesen beiden ist im Grunde die Genauigkeit von Zahlen, die sie speichern kann. So können Gleitkommazahlen bis zu acht Punkte Präzision sparen. Also können wir hier acht Zahlen haben. Also entweder vor oder nach dem Dezimalpunkt, und es wäre immer noch genau. Und das Double kann bis zu 16 Zahlen machen. Also bis zu 16 Zahlen vor und nach dem Dezimalpunkt. Also, aber um es richtig zu machen, also wenn wir so etwas wie
Ro haben , so etwas Verrücktes wie dieses. Dann würden Sie 123 zählen, und dann würden Sie hier 456 und so weiter zählen. Und wenn das 16 ist, dann oder ist es, wenn es größer als 16 ist, dann würde es nicht. Es würde auf- oder runtergehen. Es würde sich runden. Das ist also wichtig zu wissen. Wenn Sie wie Präzision brauchen. Es ist am besten, ganze Zahlen zu verwenden, wenn Sie keine Dezimalstellen benötigen. Ja, das sind Fließkommazahlen. Wir werden sehen, wie diese auch in zukünftigen Vorträgen funktionieren. Aber diese sind auch sehr wichtig sein kann. Und dann gehen wir zu den Charakteren und dem Frühling. Also Zeichen, gibt es ein Zeichen, Variablentyp, einen Datentyp und eine Zeichenfolge. Ein Zeichen ist einfach ein einzelner Buchstabe und Sie schreiben es mit diesen einfachen Anführungszeichen hier. Und eine Zeichenfolge ist ein mehrere Zeichen nebeneinander. Und das schreiben Sie mit diesen doppelten Anführungszeichen. - Ja. Und die Idee ist einfach, dass, wie ich sagte, der Brief ein einzelner Buchstabe ist. Nun kann dies ein a sein, es könnte theoretisch eine Zahl sein, aber dann ist es nicht die Zahl selbst, aber es ist die Textdarstellung von zwei. Und dann auch, zum Beispiel, Sonderzeichen wie eine I'm Leertaste oder ein Unterstrich oder so etwas, wären in diesem Fall auch Zeichen. Und dann ist eine Zeichenfolge einfach wie gesagt, mehrere Zeichen nebeneinander. Und doch, eine Sache, die ich auch erwähnen wollte, hat
C-Sharp etwas, das implizite Typen genannt wird. Was wir zuvor gesehen haben, ist, dass wir immer den Typ, den Datentyp,
den es war, bestimmt haben . Also char eine Zeichenfolge, ein Double, und so weiter. Wir können jedoch auch einfach var schreiben, also VAR, und dann den Namen der Variablen und dann sagen,
wie es einfach etwas zuweisen und dann wird es nur wissen, okay, das ist jetzt eine ganze Zahl. Und wie Sie sehen können, wenn ich den Mauszeiger darüber führe, ganzzahlige Gesamtpunkte. Und hier haben wir String Player zu nennen. Das funktioniert also auch. Persönlich benutze ich das nicht sehr oft oder wo auch immer weil ich nichts daraus bekomme. Einige Leute verwenden dies, wenn Sie
vielleicht lange Datentypnamen haben , weil wir in Zukunft
zum Beispiel unsere eigenen Datentypen erstellen können . Das hilft manchmal. Normalerweise habe ich festgestellt, dass es besser ist, wirklich spezifisch zu sein, oder in unserem Fall explizit, richtig? Dies ist also ein impliziter Typ und dann wäre dies expliziter Typecast. Wir geben es explizit ein. Hey, das ist eine Zeichenfolge, das ist ein Zeichen, das ein Float ist. Also ja, aber du kannst das natürlich benutzen. Und Sie könnten es in Code sehen, den andere Leute geschrieben haben. Das ist also immer wichtig, Dinge zu wissen, auch wenn Sie sie nicht benutzen oder wenn Sie sie nicht benutzen möchten. Aber es hat alles mit Stil zu tun und nichts damit zu tun , ob es besser oder schlechter in Bezug auf Leistung oder so etwas ist oder nicht. Das Schlüsselwort var ändert nichts. Ob ich var oder eine Zeichenfolge dort schreibe oder nicht. Nachdem alles auf allen kompiliert ist, spielt das keine Rolle. Es ändert nichts. Es ist nur der Lesbarkeit willen. Und das ist auch eines der Dinge, die wichtig sind. Der Code muss für Personen lesbar sein. Und es wird sehr einfach tatsächlich, Sie können Code schreiben, der funktioniert. Aber es muss auch für jemanden lesbar sein, der den Code noch nie gesehen hat. Und das ist wirklich schwer, oder? Mal sehen, was passiert, wenn wir das tatsächlich ausführen. Was wir also erwarten würden, das erste, was herausgebracht wird, geerdet, wahr. Und dann sollten die Punkte 50 mal neun sein, Viertellion oder Fortsetzung. Und dann haben wir einen beschädigten 3.5, großen Schaden, eine 100, dann der Brief eine NICU als Spieler 1, James Spieler zwei, und dann die Gesamtpunkte wären 100. Das ist eine Art von dem, was wir hier erwarten würden, ausgelöscht zu werden, oder? noch einmal sicher, dass Sie Vorlesung eine offen haben. Und dann können wir hier einfach den Play-Button drücken. Und wie wir sehen können, gehen wir. Also, wenn wir hier unten schauen, können
wir tatsächlich ein bisschen scrollen und dann ist geerdet ist wahr. Dann haben wir Punkte 59, Quintillion, 3,5 Schaden. Wir haben auch großen Schaden, eine 100, und dann Charakter, ein Charakter, ein Spieler eins ist NICU Spieler 2 James, und dann Punkt spawnen eine 100. Eine Sache zu beachten ist hier, dass die 100, tatsächlich der Dezimalpunkt abgeschnitten wird. In diesem Fall, weil es eigentlich
keine nützlichen Informationen enthält , weil es ohnehin 0 war. Es war also nicht wirklich wichtig, ob wir zum Beispiel 0.01 haben. Und dann lassen wir es ein bisschen sitzen und spielen dann wieder. Dann werden wir sehen, dass es das tatsächlich tut. Wichtig zu beachten, dass
dies in meinem Fall Kommas sind, das liegt nur an der Lokalisierung, weil mein Rechner die deutsche Lokalisierung ausführt
, so dass Kommas oder keine Dezimalstellen in
zwei Kommas konvertiert werden und Kommas für die 1000-Trennzeichen werden in Punkte umgewandelt oder, wissen Sie. - Ja. Also, das ist nur wichtig zu wissen. Sei einfach nicht verwirrt darüber. Das ist alles in Ordnung. - Ja. Und das war es im Grunde für die Einführung in die Datentypen. Und wie gesagt, nur ein grober Überblick. In den zukünftigen Vorträgen werden wir diese verschiedenen Arten wirklich
nutzen , was sie tun können. Und wir werden sie manipulieren. Wir werden zum Beispiel
die Zahlen, die wir mit ihnen mathematische werden, richtig? Also werden wir das Zeug berechnen. Das ist also alles, was kommen wird. Und ich hoffe, du hast es nützlich gefunden. Wenn es irgendwelche Fragen gibt. Natürlich, fühlen Sie sich immer frei zu fragen und ich werde sicher sein, zu antworten. Und ja.
5. (C#) C# Syntax erklärt: Alles klar, willkommen zurück zur C-scharfen Einführung für den Einheitskurs. Und in diesem Vortrag werden wir einen Blick auf die C Sharp Syntax werfen. Also lassen Sie uns einfach das Skript hier öffnen, das Syntax-Skript. Und lasst uns einfach durchgehen und sehen, was wir sehen können. Also zuerst, wenn wir hier zwei Schrägstriche haben, ist
dies ein Kommentar, wie es sagt. Und dann können wir auch mehrzeilige Kommentare haben. Wenn wir einen Schrägstrich und dann Stern machen, und dann im Grunde einen anderen Stern und einen umgekehrten Schrägstrich oder Schrägstrich machen. Und jedes Mal, wenn wir im Grunde Enter drücken, erstellen
wir eine neue Linie, neue Linienstärke, oder wir können kommentieren. Das wären also mehrzeilige Kommentare. Manchmal kann es wichtig sein, Codeabschnitte zu erklären. Oder vielleicht haben wir etwas zu tun und dann können wir einfach
etwas schreiben wie zu tun und dann einfach mehr Sachen hinzufügen. Das ist eigentlich irgendwie, manchmal kann es wichtig sein. Für Commons. Wir werden nicht in die Art von ideologischen Argumenten geraten, ob Commons gut oder schlecht sind oder nicht. Ich bin nur hier, um Ihnen zu sagen, dass es im Grunde Kommentare gibt, oder? Wir haben bereits die Deklaration gesehen, in der wir einfach den Typ der Variablen, den Datentyp in den Namen der Variablen einfügen. Und dann weist die Zuweisung dieser Variablen einfach einen Wert zu. Hier setzen wir tatsächlich Ausgabe einer Zeichenfolge, geben Sie die I-Variable ein. Das haben wir bereits in der letzten Vorlesung gesehen. Nun, dies ist einfach eine Möglichkeit, dass wir in diesem Fall grundsätzlich eine Variable
sowie eine Zeichenfolge kombinieren und dann beide ausdrucken können. Debuggen Sie Punktprotokoll. Im Moment müssen wir nicht auf die Besonderheiten eingehen. Was bedeutet das? Nun, es bedeutet einfach, dass wir etwas an die Konsole innerhalb von Unity ausgeben. Aber sehr wichtig, dies ist spezifisch für die Einheit. Und ja, wenn Sie also nur C-scharf verwenden, würde das nicht funktionieren. Sie müssten etwas anderes verwenden. Das ist der Grund, warum dies eine C-scharfe Einführung für die Einheit ist. Wenn wir auf Variablen und Methoden von Objekten zugreifen wollen, dann können wir dies tun. Nun, Variablen, wir wissen, dass Variablen schreiben dies ist eine Variable, Ganzzahl. Ich schreibe, das ist eine Variable, die wir hatten, der Boolean ist geerdet, das war eine Variable richtig? Nun, was sind Methoden und Objekte? Das werden wir auch ein wenig später in einer anderen Vorlesung eingehen. Aber im Moment können wir uns das nur als ein Objekt vorstellen, das im Grunde etwas ist, in dem wir Variablen und Methoden speichern können. Und eine Methode ist einfach mehrere Codezeilen, die wie ein Ausdruck komprimiert sind. Stellen Sie sich das so vor. Also zum Beispiel, in diesem Fall, wenn wir haben, wollen wir die Länge der Zeichenfolge S, richtig? Wir können S-Punktlänge machen. In diesem Fall ist die Länge eine Variable, weil sie nur ist, sie wird nur ohne die Klammern auf der Rückseite geschrieben. Und wie Sie sehen können, hat S-Punkt in diesem Fall normalisiert Klammern hier. Und die Klammern bezeichnen, dass dies ein Methodenaufruf ist. Das ist also der Unterschied dort und wir greifen mit dem Punktoperator auf Dinge innerhalb eines Objekts zu. Also, wenn ich S schreibe und dann einen Punkt, dann, wie Sie sehen können, gibt es eine ganze Reihe von Sachen, die ich auf Urin zugreifen und tun kann. Und das werden wir uns in zukünftigen Vorträgen genauer ansehen. Am Anfang. Es ist ein bisschen schwer, denn wenn Sie keine Programmiersprache haben, und wir müssen irgendwo anfangen. Und am Anfang beziehe ich mich immer mehr auf zukünftige Vorträge, die im Laufe der Zeit nicht so viel passieren werden. Es ist nur, es ist nur so, dass wir gerade versuchen, im Grunde von den Grundlagen zu booten und dann weiterzumachen, richtig? Das ist also die Idee, dass wir auf einige Dinge innerhalb unserer Variablen zugreifen können. Zum Beispiel, interessanterweise, so haben wir hier die KI, die wir natürlich das Gleiche mit den Augen machen können. Also, wenn wir tun, ich Punkt und wie Sie sehen können, gibt es auch einige Dinge, die wir tun können, in diesem Fall, weniger als wir mit der Zeichenfolge tun könnten. Weil die ganze Zahl einfach nicht hat, hat sie nicht so viel Funktionalität. So kannst du dir das einfallen, richtig? Und dann gibt es noch eine andere Sache. Die geschweiften Klammern sind im Grunde können Code-Blöcke definieren. Diese werden auch als Bereiche bezeichnet. Das wäre also ein anderer Anwendungsbereich. Und die Idee ist, dass darin, also haben wir mich hier oben im Rahmen der Startmethode in diesem Fall erklärt. Und das ist ein neuer Geltungsbereich. Und jetzt, weil dieser Bereich rechts innerhalb des Geltungsbereichs ist, der davor kam, wo ich deklariert wurde. Wir können darauf zugreifen. Wenn wir jetzt x hier deklarieren, können
wir es völlig in Ordnung bringen. Aber dann, wenn wir uns das ansehen, richtig? Also, wenn wir das tun können, und wenn wir dies tun, und wie Sie sehen können, ist
x tatsächlich hier als Pfeil markiert. Und es besagt, dass der Name x im
aktuellen Kontext nicht existiert , weil wir innerhalb dieses Bereichs deklariert haben. Und nachdem wir außerhalb des Geltungsbereichs sind, also am Ende dieser lockigen Klammer, existiert
sie nicht mehr. Und deshalb kann das manchmal nützlich sein. Sie können es einfach im Grunde definieren. Definieren Sie einen neuen Bereich, indem Sie einfach die geschweiften Klammern setzen. Und diese werden auch verwendet, wenn wir Methoden später nach unten definieren. Und dann wird es noch klarer. Aber wir können auch einfach in Bereiche wie diese setzen. Und dann, zum Beispiel, können wir sie auch einfach zusammenbrechen. Könnte manchmal für die Codeverwaltung nützlich sein, nur um es ein bisschen aufgeräumter oder so etwas zu machen. Aber ja, ja, das ist im Grunde wie ein grober Überblick über die Syntax hier. Nachdem man sich die Deklaration und die Zuweisung nochmals angeschaut hat, ist
das irgendwie wichtig als die Ausgabe hier. Sehr wichtig, dass es spezifisch für die Einheit ist. Und ja, lassen Sie uns, wir können auch die Ausgabe nur für den Heck davon betrachten. erneut sicher, dass Sie die Syntax haben. Lasst uns einfach spielen. Und es wird ausgegeben, die eine Länge der Zeichenfolge ist 11. Und dann haben wir eine 0. Das war das X innerhalb des verschiedenen Bereichs, richtig? Ja, und das war es für die Syntax. Nächste Vorlesung, wir werden tatsächlich etwas tun. Wir werden uns die ganze Zahl und die arithmetischen Operatoren betrachten. Wir werden also anfangen, einige der Variablen und einige
der Datentypen, die wir gelernt haben, tatsächlich zu verwenden . Und ja, das war's. Und wenn es irgendwelche Fragen gibt,
natürlich, fühlen Sie sich frei zu fragen, und ich werde sicher sein, zu antworten. Und ja.
6. (C#) Integer und Arithmetische Operatoren: Alles klar, willkommen zurück zur C-scharfen Einführung für den Einheitskurs. Und in dieser Vorlesung werden wir einen Blick auf ganze Zahlen und arithmetische Operatoren werfen. Also lasst uns einfach das ganze Skript hier öffnen. Und lassen Sie uns ein wenig hineinzoomen. Und sehr wichtig, dass Sie
alles tun , was Sie in diesem Anfang tun werden hier. Also statt dieses Umfangs, und ja, lasst uns einfach anfangen. Also lassen Sie uns zwei ganze Zahlen definieren. Wir rufen die erste 1 und vielleicht die zweite 1 Sekunde an. Das würde funktionieren. Also die erste jetzt, also hat die Variable mit dem Namen zuerst jetzt 100 geschrieben, und die zweite hat 200 darin geschrieben. Was wir jetzt tun können, ist, dass wir Mathe machen können. Jetzt. Erstens, mach dir keine Sorgen darüber. Wir werden nur tun, sagen wir die einfachen mathematischen Dinge im Moment. Und ja, das erste, was wir tun werden, ist Zusatz. Also werden wir die einfach zusammenfügen. Also lassen Sie uns einfach sagen, ganzzahlige Summe ist gleich dem ersten plus zweiten. Und das wären natürlich 300. Sie können diesen Punkt auch einfach debuggen. Zugabe. Beachten Sie, dass es definitiv nicht ist. Es nennt sich Diego und dann haben wir es. Also, wenn wir uns das ansehen, so lasst uns einfach darüber nachdenken. Wir haben eine Variable namens Summe deklariert, und dann haben wir sie sofort zuerst plus Sekunde zugewiesen. Also dieses Plus, wie Sie sehen können, ist
dies der, dies ist ein Operator mit zwei Ganzzahlen. Wenn ich tatsächlich darüber schweben kann, dann gehst du. Also in links und rechts, und es fügt nur diese beiden zusammen. Das ist alles, was es tut. Es fügt 100 hinzu, in diesem Fall zuerst und dann zweitens, 200. Und das wird zu einem 300 führen. Und nur damit Sie es wissen, um zu überprüfen, lassen Sie uns einfach sehen, lassen Sie uns das einfach ausführen, wie Sie 300 sehen können. Stellen Sie auch sicher, dass Sie in Vorlesung drei ganze Zahlen sind. Sehr wichtig. Aber ja, es funktioniert. Und ich wäre überrascht gewesen, wenn das plötzlich nicht funktioniert hätte. Ich war auch sehr interessant. Also, wenn wirdas
natürlich mit dem ersten Plus tunkönnen das
natürlich mit dem ersten Plus tun , wissen
Sie, wir können plus Arno wie 500 tun. Und dann plus, plus Sekunden, so etwas. Weißt du, das würde auch funktionieren. Wir können grundsätzlich die Variablen und verschiedene ganze Zahlen als auch einfügen. So wie 500-Jahr, können wir auch dann, zum Beispiel, sagen, Nun lassen Sie uns in eine weitere 200 dort, so
etwas, das auch funktioniert. Und dann, wenn wir diese Debug-Sperre einfach kopieren können, mache ich das manchmal sehr schnell. Deshalb habe ich es jetzt erwähnt. Also, was ich tue, ist, dass ich das im Grunde richtig markiere. Also stelle ich sicher, dass dies ausgewählt ist. Dann drücke ich Control C und dann setze ich, ich gehe hier bis zum Ende der Zeile und drücke Kontrolle V. Und dann ist es einfach, dann wird es es einfach in die nächste Zeile einfügen. Also wirst du wahrscheinlich sehen, wie ich das in zukünftigen Vorträgen mache. Es ist nur, weißt du, wenn du bist, wenn du eine Weile programmierst, dann werden diese Dinge manchmal automatisiert. Also wollte ich das nur erwähnen. Ich werde es wahrscheinlich auch in einigen der zukünftigen Vorträge erwähnen. Ich wollte nur sagen, dass Sie das so machen können. Wissen Sie, etwas markieren, stellen Sie sicher, dass es Control C,
Control V ausgewählt ist, und dann wird es getan werden. Und ich spare mit Control S. Oder du kannst auch hier rauf zu den sicheren gehen. Und dann wird es auch auf die sparen, auf die Klo. Was schreibt diese Diskette? Das Symbol „Speichern“. Und mal sehen, was da rauskommt. Es sollte 1005 sein, wenn ich recht habe, glaube ich, ja. Ja. Ok. Das ist gut. Meine mathematischen Fähigkeiten sind immer noch gut. Obwohl es vielleicht ein wenig Dienstplan geben kann, aber ja, das funktioniert auch. Und das ist irgendwie cool, was wir zusätzlich tun können, aber ich meine, das ist nur der Zusatz. Schauen wir uns die Subtraktion an. Das wird das nächste große Ding sein. Also, was ist das? Sagen wir einfach Integer Sub ist eine erste Minus-Sekunde. Was könnte das sein? Nun, das wäre negativ 100. Das ist interessant, ist es 100 minus 200 ist negativ 100, weil die ganzen Zahlen auch negative Zahlen sein können. Das heißt, es gibt nichts, was sagt, dass das nicht funktioniert. Also lasst uns sub machen und das auch ausdrucken. Und dann schauen wir mal, ob das wirklich funktioniert. Wenn das negativ 100 ist und tatsächlich negativ 100 ist. Das ist also eine wichtige Sache zu beachten , dass ganze Zahlen in diesem Fall auch negativ sein können. Es gibt auch ganze Zahlen, die nicht negativ sein können. Ich habe diese Autos absichtlich übersprungen. Sie sind in der Regel nicht in etwa 98% der politischen Positionen erforderlich. Also überspringen wir sie vorerst. Wenn es jemals benötigt wird, können
Sie immer eine Frage stellen und ich werde Ihnen sicher, einige weitere Informationen zu geben. Jetzt lasst uns etwas einfallen, das auch interessant ist, was die Multiplikation ist. Also sagen wir, in Maulwurf ist gleich 4 mal zuerst, das wäre 400. Und das funktioniert einfach, weil warum nicht? Lassen Sie uns das ausdrucken. Und lassen Sie uns Maulwurf hier draußen drucken. Das sollte einfach funktionieren. Also viermal 100 sollten 400 sein. Scheint legitim. Lassen Sie uns das ausdrucken und sehen, ob das auch funktioniert. Und natürlich geht es ganz gut. Wie Sie sehen können, ist
der Multiplikationsoperator dieser Stern hier. Das ist ja. Und das Plus und Minus sollten selbsterklärend sein. Ich glaube, dass dies auch eine Art Standardstern ist. Und dann, wenn wir noch eine Division gehen oder teilen, dann können wir sagen, dass das div gleich dem zweiten ist, zuerst geteilt. Das wären zwei, weil wir 200 durch 100 dividieren. Und wir können das auch ausdrucken oder beim Login mit dem div debuggt, richtig. Und ja, das ist, also ist dies ein Schrägstrich in diesem Fall, zwei Schrägstriche sind ein Kommentar, ein Schrägstrich ist die Division. Und wie immer mit einer normalen mathematischen Regeln, im Grunde, plus oder minus die Reihenfolge der Operationen spielt keine Rolle, oder? Also zweites Plus zuerst ist das gleiche wie das erste plus zweites Mal. Einige Multiplikation spielt auch keine Rolle. Subtraktion Division, es ist eigentlich wichtig, auf welche Weise, Was kommt zuerst und was kommt an zweiter Stelle. Aber ich denke, das ist, glaube ich, das war wie Grundschule Mathematik. Das sollte herausgefunden werden. Richtig. Und dann haben wir a2. Da gehst du. Das funktioniert also auch. Und es gibt noch eine Sache, die Sie wahrscheinlich sein werden,
wie funktioniert eine andere aber? Das waren die vier, die ich kenne, ja, aber es gibt auch einen, der den Modulus oder den Rest genannt wird. Nun, Sie haben wahrscheinlich, wenn Sie vielleicht wie Arno sind, wie die neunte Klasse, vielleicht zehnte Klasse, haben Sie das vielleicht schon mal gesehen. Dies ist die Idee ist, dass, wenn Sie etwas durch etwas anderes teilen, in diesem Fall, es war perfekt gleichmäßig. Also hat es gut funktioniert. Aber es könnte auch sein, dass,
wenn man 13 durch 213 geteilt durch zwei , das nicht funktioniert, oder? Das wird also, äh, es wird nicht perfekt passen. Und so werden wir in diesem Fall einen Rest von einem haben. Also lassen Sie uns nur ein Beispiel dafür sehen. Also Rest, Rest gleich 24, sagen wir, und dann der Rest Operator, der Modulus Operator ist das Prozentzeichen 2 und das wäre 0. Also lasst uns das auch hier reinlegen. Das wird also sein, richtig,
das wird 0 sein, weil 2 gleichmäßig in 24 passt. Also, wenn wir 24 durch zwei teilen, wie Sie sehen können, 0 Rest hier. Wenn wir jedoch zum Beispiel dazu
gehen und sagen geteilt durch oder modulo 5, dann wird dies nicht mehr 0 sein. Lass uns das einfach machen. Es ist vier, weil die nächste Zahl, die wir erreichen, indem wir durch 5 dividieren, 20 ist, oder? Also vier mal fünf ist 20. Und dann für 24 bleiben im Grunde
vier Zahlen übrig. Also bleiben die vier hier. Ich will das mit einem 23 nur schnell machen, weil 4 mal 5 vielleicht verwirrend sein könnte. Es wird drei geben, also kommen wir zu 20 und dann fünf passen nicht in drei. Also drei ist der Rest. Das ist die Idee dort. Es ist eigentlich in mancher Hinsicht wichtig. Der modulo 2 eignet sich also hervorragend, um zu wissen, ob eine Zahl gerade oder ungerade ist. Denn wenn Sie Integer-Modulo-Operator 2 gleich 0 haben, dann wissen Sie, dass dies eine gerade Zahl ist. Und wenn es gleich eins ist, dann wissen wir, dass es eine ungerade Zahl ist. Das ist also einer der Anwendungsfälle, in denen der Modulo- oder Restoperator in diesem Fall unglaublich nützlich ist. Und natürlich sind andere Arten von arithmetischen Operatoren auch in, naja, ich meine viele Möglichkeiten. Wenn Sie jemals etwas in Mathematik gebraucht haben, das heißt, ja, sind unglaublich nützlich und das ist der erste Schritt Wissen über
die Verwendung von Ganzzahlen zu kennen oder zu sammeln. In diesem Fall. Theoretisch alles hier drin. Du könntest auch alles hier durch Schwimmer oder Doppel ersetzen. Und alles würde gut funktionieren. So können Sie das zum Beispiel tun. Experimentieren Sie ein bisschen damit herum. Ich versuche immer, das auch zu ermutigen, denn während die Vorlesungen hier
wirklich gut sind , einen Vorsprung zu bekommen oder einen strukturierten Weg zu haben, durch etwas Material zu gehen. Ich habe immer ermutigt und sage, dass es sehr wichtig ist, dass Sie die Dinge auch selbst ausprobieren. Denn das ist der beste Weg, um tatsächlich zu verfestigen und noch mehr zu lernen. Wenn
Sie sich das zum Beispiel mit Floats ansehen, ersetzen Sie
einfach alle ganzen Zahlen durch Floats und sehen Sie, was passiert. Und dann kannst du damit ein bisschen herumspielen. Und ja, das ist nur eine kleine Idee für dich. Und ja, insgesamt das heißt, das wäre es für die ganzen Zahlen und die arithmetischen Operatoren. nächste Mal werden wir einen Blick auf ein bisschen mehr von den mathematischen Methoden, die wir in C-Sharp haben. Also einige mehr, sagen wir, spezialisieren Dinge wie eine Quadratwurzel oder so etwas, die manchmal brauchen wir für verschiedene Dinge. Das kommt also in der nächsten Vorlesung. Ich hoffe, das war nützlich für Sie. Und wenn es irgendwelche Fragen gibt, wie immer, zögern Sie nicht zu fragen und ich werde sicher sein, zu antworten. Und ja.
7. (C#) C# Math Methoden: Alles klar, willkommen zurück die C-scharfe Einführung hier für den Einheitskurs. Und in diesem Vortrag werden wir einen Blick auf einige mathematische Methoden werfen, die C-Sharp für uns zu bieten hat. Also noch einmal, stellt sicher, dass Vorlesung für Mathematik-Methoden offen ist und dann können wir einfach das Skript öffnen. Und ich habe hier bereits zwei ganze Zahlen vorbereitet, x und y und mal sehen, welche Art von Methoden wir haben. Nun, zuerst, was zu beachten ist, gibt es zwei verschiedene Arten von Mathematik, im Grunde Bibliotheken, auf die wir zugreifen können. Wir können auf die normale mathematische Bibliothek zugreifen, indem wir grundsätzlich Systempunktmathematik machen. Und dieses bietet uns einige Dinge wie Maxing, Maximum, Max und Min Methoden, die Quadratwurzel und auch einige andere Dinge. Dies ist jedoch spezifisch für C-scharf. Allerdings werden wir die Mathematik F verwenden,
Grundsätzlich Sammlung, wie Sie sehen können. Und diese bietet spezifische, im Grunde fast die gleichen Dinge, aber spezifische Methoden, die für die Einheit sind. Dies ist also nur zugänglich, wenn Sie sich in Unity befinden. Wenn nicht, dann müssen Sie diese system.Out mathematische Methode in verwenden, zum Beispiel, richtig? Also zuerst, wie wär's mit Max und min? Ich habe das schon irgendwie verderben. Lassen Sie uns ein Debug-Punktprotokoll machen. Und dann drinnen werden
wir mathematische F dot Min. Und dann gehen wir in x, y, und das sollte 225 sein. Also die Idee hier ist, dass dies mathematische F dot Min. Und dann, wie Sie sehen können, haben
wir eine Klammer um das herum. Und so bezeichnen, dass dies ein Methodenaufruf ist. Jetzt in diesem Fall, und wir haben das nicht gesehen. Wir haben eigentlich zwei Dinge drin. Und das sind also, was wir Parameter nennen würden. Wie ich schon sagte, werden wir uns ansehen, wie Methoden in der Art funktionieren, viel detaillierter in einem späteren Vortrag, in dem wir über Methoden sprechen und
tief darüber eingehen , wie sie funktionieren und was sie sind und was das ist. Aber im Moment können wir sehen, dass wir hier zwei Räumlichkeiten haben, und sie sind durch ein Komma getrennt. Und dies wird auswerten, ob wir den Mauszeiger darüber bewegen, wie Sie sehen können, die kleinste von zwei oder mehr Werten zurückgibt. So können wir auch mehr Werte setzen. In unserem Fall haben wir nur zwei. Und das ist natürlich nicht richtig. Das wäre also ein 100, tut mir leid. Also, wenn wir das min, wird
es den kleinsten dieser beiden Werte zurückgeben. In unserem Fall wird es eine 100 sein. Und nur um hier völlig voll zu sein, werden
wir das auf Max ausschalten und dann wird es 225 sein. Da das Maximum natürlich den größten von zwei oder mehr Werten
zurückgibt. Lass uns das einfach raus und sehen, ob das funktioniert. Das sollte also eine 100 und dann 225 sein. Und wie Sie sehen können, werden die ersten hundert, zweihundertfünfundzwanzig protokolliert. Also lasst uns rüber gehen und sehen. Das sind also die Min und die Max-Methode. Wir können uns auch zum Beispiel eine Quadratwurzel ansehen, oder? Die Quadratwurzel, Lassen Sie uns einfach schnell den Debug hier kopieren. Und dann werden wir mathematische F-Punkt-Quadratwurzeln machen. Das ist also SQRT. Und dann im Inneren von hier, werden wir in y setzen,
weil y tatsächlich wie ein Quadrat sein kann, das sofort verwurzelt ist. Dies wird in eine 15 gehen. Quadratwurzel von 225. Und schauen wir uns die Ausgabe noch nicht an. Lassen Sie uns einfach zum nächsten gehen
, der der absolute Wert sein wird. Daher wird der absolute Wert im Grunde verwendet, wenn Sie etwas haben, das ein Negativ ist. So zum Beispiel negativ 2500. Und Sie wollen nur den absoluten Wert und nicht das Negative. So ist es Ihnen egal, ob es negativ oder positiv ist oder nicht, Sie kümmern sich nur um den tatsächlichen Wert. Sie können sehen gibt den absoluten Wert des Wertes. Also, was auch immer wir hier reinlegen, es wird den absoluten Wert zurückgeben. Lassen Sie uns nur die Ausgänge dieser beiden sehen. Also sollte der erste 15 sein, das ist die Quadratwurzel von 225. Genau. Und der letzte natürlich. Der letzte hat sich nicht geöffnet. Oh, weil ich nicht gerettet habe. Deswegen ja. Sie gehen. Und dann, wenn ich wieder hier reingehe und Play drücke, dann wird es 2500 ausgeben. Sie gehen, weil das der absolute Wert von negativen 2500 ist. Und dann gibt es noch ein paar Dinge. Zum Beispiel die Dichtungs- und Bodenmethoden, die interessant sind, zum Beispiel
für Brunnen Decke und Bodenbelag. Die Idee ist, dass, wenn Sie bestimmte Gleitkommazahlen haben, so dass das Siegel als Ihre Float-Zahlen sein wird. So zum Beispiel 22.1, 45. Dann wollen wir vielleicht auch, eigentlich wollen wir eine gerundete, aber wir wollen es aufrunden, äh,
unabhängig davon, was hinter dem Dezimalpunkt liegt. Und dann wird das ein 23. Und wenn wir das einfach schnell machen und dann Boden hier machen, und das wird eine 22 werden, denn in diesem Fall sind wir, wir runden ab. Wie Sie sehen können, gibt die größte ganze Zahl zurück, kleiner oder gleich f, gelesen. Und Dichtung wird die kleinste ganze Zahl größer
oder gleich f sein , bedeutet einfach,
dass wir im Grunde sind sobald dies wie 0,0001 Stahl ist, werden
wir nach oben gehen und dann in diesem Fall gehen wir nach unten. Also in diesem Fall gehen wir an die Decke. Dieser Fall gehen wir auf den Boden. Sollte auf diese Weise irgendwie Sinn ergeben. Aber ja, das sind im Grunde zum Auf- und Abrunden. Konkret haben wir auch eine Runde. Ich glaube, wir sollten eine Runde haben. Ich bin mir nicht hundertprozentig sicher. Ja, wir haben da. Also eine Runde, es wird auf die nächste ganze Zahl runden. Dies sollte auch eine ähnliche Ausgabe 822 tun. Denn in diesem Fall, ja. Oh, tat es nicht, ich habe nicht wieder gerettet, das Unglaubliche. Dies ist sehr ungewöhnlich, aber es sollte auch eine 22 öffnen und es tut. So folgt die Rundung einfach normal. Die normalen Rundungsregeln, ich denke, wir haben auch die Macht,
so dass, wenn wir vielleicht etwas wie Math.Pow haben, das ist so zehn auf die Macht von zwei. So wäre dies zehn auf die Macht von 2 gleich 100 sein. Sie könnten natürlich, auch tun 10 mal 10 würde auch funktionieren. Manchmal müssen Sie jedoch etwas in die Macht von etwas bringen. Das ist also, wofür die Befugnisse stehen. So gibt F auf die Macht p. angehoben zurück und dann
ist die letzte, die vielleicht interessant sein könnte, die vielleicht interessant sein könnte,im Grunde die Klemmvariable Val zwischen zwei Werten festklemmt. Dies ist eine sehr spezifische Sache, die speziell für die Einheit verwendet werden könnte. Und wir werden eigentlich gar nichts ausdrucken, weil das nicht daran liegt,
dass es momentan nichts zu drucken gibt. Allerdings ist die Idee des Strahls, und wir werden dies in einem anderen Beispiel später die Linie als auch betrachten. Aber die Idee ist, dass die Klemme, wie Sie sehen können, den gegebenen Wert klemmt. Das wäre also Geschwindigkeit gegeben, wenn man das Minimum und das Maximum angibt. Die Idee ist also, dass die Geschwindigkeit im Moment 100 war. Und wir könnten uns vielleicht vorstellen, ein Rennspiel, bei dem wir tatsächlich beschleunigen oder verlangsamen. Es sollte irgendwann die maximale Geschwindigkeit geben. Und wenn wir nur etwas haben, das überprüft, Hey, ist dieser Knopf nach unten drücken und dann Geschwindigkeit mit Geschwindigkeit hinzufügen. Und dann könnten wir uns vorstellen, nun, das hier festklemmen. Es wird also im Grunde sicherstellen, dass diese Geschwindigkeitsvariable innerhalb dieser beiden Minimal- und Maximalwerte ist. Aber wie ich sagte, eine bessere, wir werden eine bessere sehen,
Nehmen wir an , Anwendungsfall für diese orange, tatsächlich Anwendungsfall für diese später in der Linie als auch. Ich wollte das nur erwähnen. Es gibt einige andere interessante Methoden hier. Zum Beispiel gibt es Sinus, Sinus und Tangente. Also gibt es das im Grunde fast alle Dinge, die Sie für die Mathematik benötigen könnten. Es gibt Unendlichkeit, glaube ich. Wenn ich sehe, ja, Pi ist auch da. Es gibt also eine ganze Reihe von Dingen, die man sich ansehen und mit denen man auch spielen kann. Aber das ist gerade eine Art allgemeiner Überblick im Moment. Die Macht, Absolutwert,
Quadratwurzeln, Min- und Maximalwerte zu versiegeln . Das sind diejenigen, die meiner Erfahrung nach sind, na ja, ich würde sagen, dass die nützlichsten, aber am häufigsten verwendeten, besonders die Minimax, ziemlich viel verwendet
werden. Aber ja, das ist eine allgemeine Einführung in ganze Zahlen und dass die mathematischen Methoden. Und ja, das war es für diesen Vortrag. Ich hoffe, du hast es nützlich gefunden. Wenn es irgendwelche Fragen, natürlich, immer fühlen Sie sich frei zu fragen, und ich werde sicher sein, zu antworten. Und ja.
8. (C#) Aufgabe, die Bediener: Alles klar, willkommen zurück zur C-scharfen Einführung hier für den Einheitskurs. Und in diesem Vortrag werden wir einen Blick auf die Zuweisungsoperatoren werfen. Jetzt haben wir bereits den Standard-Zuweisungsoperator gesehen. Dort weisen wir einer Variablen einfach einen Wert zu. Aber es gibt einige Sonderfälle in einigen Zuweisungsoperatoren, die
es ein wenig einfacher machen , Dinge im Grunde zu berechnen. Also lassen Sie uns einfach das Zuweisungsskript hier öffnen, und fangen wir einfach mit einer einfachen Ganzzahl namens I Machen Sie dies gleich eins. Nun, wenn
wir zum Beispiel einen hinzufügen möchten und es dann wieder in I speichern. Wir könnten tun, ich gleich I plus eins. Das sollte nicht zu verrückt sein und sollte eigentlich irgendwie selbsterklärend sein. Wir weisen einfach den Wert von I plus eins zu, weil ich eins ist. In diesem Fall werden wir 1 plus 1 berechnen
und dann, wenn ich es wieder in die Variable selbst speichere, also in diesem Fall wäre das 1 plus 1. Schreib es uns so. Jetzt. Wir können es so schreiben, völlig in Ordnung. Wir können es auch so schreiben. Ich plus gleich 1. Und das ist funktional gleichwertig. Also werden wir nur im Grunde eine der ursprünglichen Variablen I hinzufügen, und dann werden wir ihm diese Variable zuweisen. Also in diesem Fall wäre dies 2 plus 1 gleich 3. Also, weil nach Zeile 13, ich 22 war und ich werde 21 zu ihm nehmen. Und dann werden wir es wieder in I schreiben. Also in diesem Fall wären das drei. Jetzt gibt es noch eine andere Sache, die wir tun können, und das ist ich plus, plus. Und das wird genau das Gleiche tun. Das wäre also, in diesem Fall, ich plus 1. Und weil ich drei bin, wäre
das eine Vier. Dann können wir auch tun, ich minus, minus, und das würde dann in i negative eins oder minus eins und das ist dann eine drei. Das sind also einige grundlegende,
im Grunde, wie Sie das Hinzufügen einer Variablen komprimieren können. In diesem Fall können Sie natürlich das Plus gleich plotten. Du kannst schreiben, was du willst. Sie können eine 12014, eine
andere Variable schreiben , was auch immer Sie wollen. Im Plus, Plus, das wird immer ein Plus eins oder ein Minus eins sein. Dies wäre eine Inkrementierung oder Inkrementierung und Dekrement genannt. Und das ist wirklich nützlich für Art von Strukturen, die wir in C-Sharp betrachten werden, die die Linie runter kommen. Nun ist das Plus gleich, wir können tatsächlich auch andere Aufgaben erledigen. So, wie Sie gesehen haben, so hatten wir ein Plus gleich. Also sagen wir zum Beispiel, plus gleich 5 und 14, oder? Dies wäre dann eine 17 gleich 17, so etwas. Dann könnten wir es minus gleich machen,
nur um des Arguments willen wird dieses minus zwei zu einer 15 führen, oder? So können wir auch minus gleich tun. Wir können auch mal gleich machen. Lass uns noch mal zwei machen. Also wäre dies ein 15 mal 2 gleich A3. Und dann können wir zum Beispiel auch dividieren gleich
machen, durch drei teilen. So wäre dies 30 geteilt durch 3 ist gleich 10. Und dann am Ende können wir auch Modulo gleich tun und das wäre ein 10. Das Modell über vier ist gleich 2. Nun, ich habe sehr selten die modularen Gleichen gesehen, aber die anderen könnten tatsächlich irgendwann wirklich nützlich sein. Und wie ich bereits in einer vorherigen Vorlesung gesagt habe, kann
es der Fall sein, dass Sie einige dieser Operatoren vielleicht nicht verwenden, einige jemand anderes sie verwenden könnte. Und wenn Sie nicht wissen, was sie sind, dann werden Sie es schwieriger haben, den Code anderer Leute zu lesen. Deshalb sage ich immer, dass, selbst wenn du es tust,
dazu neigen, nicht etwas zu benutzen, wo auch wenn du so bist, Nun, vielleicht werde ich es so behalten, denn wieder, das ist völlig dasselbe wie dieses, richtig? Also das Schreiben I gleich I plus 1 ist das gleiche wie ich gleich 1. Manche Leute sagen einfach, nun, das ist einfach einfacher zu lesen. Ich verstehe das viel besser. Manche Leute sagen, ich verstehe das besser. Das ist definitiv nur eine Stil-Wahl. Und Sie können eines von ihnen tun. Wenn es um Leistung geht. Es gibt wirklich keinen Unterschied. Also ja, das sind auch die verschiedenen Zuweisungsoperatoren. Ja, ich hoffe, du hast das nützlich gefunden und du wirst etwas Neues lernen. Wenn es irgendwelche Fragen gibt. Natürlich, fühlen Sie sich
immer frei zu fragen, und ich werde sicher sein, zu antworten. Und ja.
9. (C#) Boolesche und Vergleichsoperatoren: Alles klar, willkommen zurück zur C-scharfen Einführung für den Einheitskurs. Und in diesem Vortrag werden wir einen Blick auf Booleans werfen und speziell Vergleiche und wie man sie in boolesche Variablen schreibt. Also lassen Sie uns einfach das Booleans-Skript öffnen und sehen, was wir sehen können. wir uns zurück erinnern, hatten wir die Variable ist geerdet und lassen Sie uns dies einfach auf false setzen. Und Österreich, denken Sie daran, Boolescher waren Wahrheitswerte, die wir entweder auf wahr oder falsch setzen können. Sie können also entweder Ja oder Nein, eins oder 0 sein. Das war der Kern davon. Und vielleicht haben
wir zum Beispiel einen booleschen Wert, der x genannt wird, und dann, was wir es tatsächlich zuweisen wollen, ist eine Berechnung. So ist eine boolesche Berechnung oder nur ein Ausdruck, ein boolescher Ausdruck, zum Beispiel zwei kleiner als fünf. Dies wäre ein boolescher Ausdruck. Wie Sie sehen können, gibt der A, ein Operator, der kleinere Operator hinzugefügt dies einen Booleschen Wert zurück. In diesem Fall wäre dies wahr, weil 2 kleiner als fünf
ist, wenn es umgekehrt wäre. So zum Beispiel, auf diese Weise, dann wären zwei größer als fünf und das wäre falsch. Das ist also die Idee eines Vergleichsoperators. Wir können natürlich auch einen Bully Bool haben. Warum? Zum Beispiel 10 ist, 10 ist größer als 50. Und das wäre natürlich falsch, oder? Denn natürlich ist Sen nicht größer als 50. Und das ist der Grund, warum der Ausdruck hier falsch ist. Es gibt viele verschiedene Vergleichsoperatoren. Also haben wir gesehen, kleiner als, größer als größer oder gleich, kleiner oder gleich, gleich und nicht gleich oder ungleich. So wäre dies zum Beispiel, das ist wie ein 100 gleich einem 100. Das wäre wahr, oder? Und das liegt daran, dass in diesem Fall eine 100 genau gleich einer 100 ist. Wie Sie sehen können, kann
dies manchmal ein wenig verwirrend aussehen, da der Gleichheitsoperator zwei Gleichheitszeichen sind und der Zuweisungsoperator ein Gleichheitszeichen ist. Das ist etwas, auf das man unbedingt achten muss, weil manchmal entweder man eines der Gleichheitszeichen vergisst oder vielleicht nur enthusiastisch programmiert und dann überwacht man einfach, dass man entweder nur eine gleiche Zeichen oder zwei Gleichheitszeichen. Das sind völlig andere Dinge und sie haben nichts miteinander zu tun. Eins ist der boolesche Ausdruck, um zu sehen, ob zwei Variablen oder zwei Dinge gleich sind. Und der andere weist einer Variablen einen Wert zu. Nur als eine kurze Notiz. Und dann können wir zum Beispiel so etwas haben. Also 51, ungleich, 50. Und das wäre natürlich auch wahr. Und das ist ungleich. Oder wie könnte es sonst sein, nicht gleich, so etwas. Aber das sind die Vergleichsoperatoren. So können sie unglaublich nützlich sein, um verschiedene Variablen miteinander zu vergleichen. Ist etwas größer oder gleich etwas, ist einfach gleich etwas anderes. Unglaublich nützliche, weit verbreitete Anwendungen, die
wir auch in den nächsten kommenden Vorträgen sehen werden. Aber das war's. Genau wie eine kurze Einführung in die Booleschen und die Vergleichsoperatoren. Wenn es irgendwelche Fragen,
natürlich, fühlen Sie sich frei zu fragen, und ich werde sicher sein, zu antworten. Und ja.
10. (C#) Booleans und logische Operatoren: Alles klar, willkommen zurück zur C-scharfen Einführung hier für den Einheitskurs. Und in diesem Vortrag werden wir noch einmal einen Blick auf Booleans werfen. Also lasst uns einfach das Boolean-Skript hier wieder öffnen. Und in diesem Fall werden wir uns nicht die Vergleichsoperatoren ansehen, aber wir werden uns die Logikoperatoren ansehen. Die Idee ist, dass wir diese booleschen Ausdrücke wie kleiner als fünf oder 10 haben, ist größer als 50, was entweder wahr oder falsch sein könnte. Sie waren also Ausdrücke oder Aussagen, die entweder wahr oder falsch waren. Sie waren also boolesche Ausdrücke. Und jetzt können wir die zusammen verketten. Also zum Beispiel, wir machen, wir werden hier einen neuen Boolean machen, B2. Und dann können wir x und y sagen. Wenn wir
also dieses doppelte kaufmännische Und-Zeichen machen, dann wird dies sein, das ist eine Endoperation. Und die Idee hier ist, dass es x und y sein wird. Jetzt ist x wahr und y ist falsch. Daher ist diese ganze nicht ermüdet Aussage hier auch
falsch, weil dies ein AND-Operator ist. Und der Operator ist im Grunde wahr, wenn beide State-Anweisungen auch wahr sind, dann gibt es einen anderen, der der OR Operator ist. So, zum Beispiel, können wir nehmen, ist geerdet oder B. Und das in diesem Fall wäre wahr. Nun ist der Grund dafür, dass B wahr ist, oder? Also wissen wir, dass B wahr ist. Dein B war ein 100 gleich 100. Und das ist wahr. Und der OR Operator ist im Grunde wahr, wenn einer der gegebenen, wenn einer oder beide der gegebenen Booleans oder Anweisungen wahr ist. Und dann gibt es noch eine letzte Sache, die wir schon mal gesehen haben, und das ist nur das Ausrufezeichen. Und das einfach umkehrt, was immer gegeben wird. In diesem Fall ist
dies im Grunde der NOT-Operator. Also ist nicht wahr, ist einfach falsch, oder? Dies kippt oder kehrt den booleschen Wert einfach um. Also in der Theorie, was wir tun könnten, ist, dass wir die Klammern um diese herum setzen. Ich könnte ein Ausrufezeichen davor setzen und dann würde es alles negieren, was im Jahr ist. Und sie sind auch wie ausgefallene Mathematik, die Sie verwenden können. Die Wörter, nach denen Sie suchen würden, denn das wäre entweder Wahrheitstabelle oder boolesche Algebra. Und so kannst du dir vorstellen, dass du so etwas Verrücktes hast, oder? Du musst B2 und B4, oder B3 und x oder y, oder wie wär's mit jemandem so sehen, oder? Also können wir so etwas Verrücktes nicht haben. Es wäre, es funktioniert völlig gut, wenn Sie natürlich jeden von ihnen separat bewerten müssten . Aber Sie können möglicherweise auch so etwas zu
einer viel kleineren Version der gleichen Grundfunktion vereinfachen , die wir hier haben. Nun, der gleiche Ausdruck und das war, das ist, was man Boolesche Algebra nennt. Damit wir das vereinfachen können. Ich werde nicht, wenn es aber wie viele Interessen daran
gibt, kann
ich einen separaten Vortrag dafür halten. Ich würde jedoch sagen, dass es selten wirklich notwendig ist. Es ist eher etwas Theoretisches und das ist wirklich wichtig in der theoretischen Informatik und natürlich manchmal auch in der angewandten Informatik. In diesem Fall, wenn Sie unglaubliche,
unglaublich lange wie boolesche Aussagen haben , dann ist es sinnvoll zu schauen, wie Sie sie vielleicht ein wenig machen können. Beides ist leichter zu verstehen und kann auch einfacher zu bewerten sein. Aber wie gesagt, es ist nicht unbedingt das Wichtigste. Wenn es jedoch genug Interesse vor den Menschen gibt, das sehen
wollen, dann bin ich froh, einen neuen Vortrag darüber zu halten. Moment ist dies jedoch der,
im Grunde die Logikoperatoren, der AND-Operator, der OR-Operator und der NOT-Operator oder umgekehrt. Ich meine, es nennt sich der NOT-Operator. Und ja, das sind im Grunde die drei wichtigsten logischen Operatoren, mit
denen Sie im Grunde alles in der Logik tun können. Und ja, das sind die beiden Begriffe, die Sie, wenn Sie wollen, vielleicht auch einige andere Dinge ansehen, die damit zu tun haben. Das sind die beiden Begriffe, die Sie sich ansehen sollten. Und wenn es irgendwelche Fragen dazu gibt,
natürlich, fühlen Sie sich frei, zu fragen, und ich werde sicher sein, zu antworten. Und ja.
11. (C#) (C#): Alles klar, willkommen zurück zur C-scharfen Einführung hier für den Einheitskurs. Und in diesem Vortrag werden wir einen Blick auf die Saiten werfen. Also noch einmal, um sicherzustellen, dass wir auf Lecture 8 sind, Saiten hier oben. Wenn nicht, können Sie einfach in den Ordner Szenen gehen und ihn öffnen. Und dann stellen Sie sicher, dass
wir innerhalb unseres Skript-Ordners auf dieses String-Skript doppelklicken. Und hier sind wir in unserem Drehbuch. Und lasst uns einfach damit beginnen, tatsächlich eine neue Zeichenfolge zu erstellen. Also der String-Satz, zum Beispiel, lassen Sie es sagen halloworld. Das, dieser Vortrag ist wunderbar. Hoffen wir, dass das wahr ist. Aber vor allem, wie wir bereits gesehen haben, ist
die Idee einer Zeichenfolge, dass es sich um mehrere Zeichen nebeneinander handelt. Und das erste, was wir betrachten werden, ist im Grunde noch einmal, die Länge. haben wir schon mal gesehen. Also die Länge der Saite. Und das war, wir konnten darauf zugreifen, indem wir den Namen der Variablen eingeben, in diesem Fall Satz. Und wir können das mit Tab und dann Punktlänge, die Länge automatisch vervollständigen. Und dann könnten wir das auch mit Tab automatisch vervollständigen. Und nachdem wir gerettet haben, könnten
wir einfach wieder zu Unity wechseln. Und mal sehen. Die Länge beträgt 39. Nun, das ist großartig. Also gehen wir zurück. Und mal sehen. So kann die Länge der Saite in vielen verschiedenen Teilen nützlich sein. Zum Beispiel wollen wir manchmal
Teilzeichenfolgen oder bestimmte Teile einer Zeichenfolge mögen und dann müssen wir die Länge kennen. Ich werde mir das bald genug ansehen. Betrachten wir zuerst Groß- und Kleinbuchstaben. Dies kann
beispielsweise nützlich sein , wenn Sie
unabhängig von bestimmten Eingaben
überprüfen möchten, unabhängig von bestimmten Eingaben
überprüfen möchten, ob diese Eingabe identisch ist oder nicht. Aber in diesem Fall werden wir den Satz im Grunde in Schreien umwandeln. Also werden wir Satz Punkt zwei oben in diesem Fall eingeben. Wie Sie sehen können, endet
dies mit Klammern, was bedeutet, dass dies ein Methodenaufruf ist, also ruft dies eine neue Methode auf. Und dann können wir dies einfach noch einmal kopieren, indem wir im Grunde einfach das Debug-Protokoll auswählen, Control C
drücken und dann Control V drücken, um es einzufügen. Und das wird zu senken sein. Und das wird natürlich flüstern. Richtig? Und dann, ja, schauen wir uns das an. So Duschen nur nach oben wird es nur in Großbuchstaben zu machen. Und zu senken ist, dass es nur alles,
jedes einzelne Zeichen in diesem Satz in Kleinbuchstaben machen wird. Wie Sie sehen können, wird das Schreien in Großbuchstaben und dann flüstern. Alles ist Kleinbuchstaben. Wie ich sagte, das manchmal, was eine Anwendung dafür
interessant ist , ist im Grunde, es so zu machen, dass
unabhängig von Groß- oder Kleinbuchstaben, Sie zwei Strings miteinander vergleichen und sehen können, ob sie immer noch gleich, unabhängig davon, ob alles Groß- oder Kleinbuchstaben ist oder nicht. Und nun, schauen wir uns einfach den Satz an. Also die Feder selbst. Lassen Sie uns das auch ausdrucken. Nur, nur um des Streits willen. Nun, was wir uns respektieren, dass alles verlangsamt ist,
klein, aber klein, aber wie Sie sehen können, sind die H und W tatsächlich immer noch Großbuchstaben. Was, warum ist das? Nun, die Idee ist, dass, obwohl wir diese Methode hier aufgerufen haben, wie Sie sehen können, es tatsächlich String sagt und dann String Dot zwei oper sagt. Die Idee ist also, dass diese Art von ihm eine neue Zeichenfolge zurückgibt. So ist es, der Satz selbst wird nicht geändert. Und das passiert mit einigen der Methoden. Ich glaube, dass es fast alle diese String-Methoden
diese ursprüngliche Variable oder den Wert sogar nicht ändern . Sie geben immer eine neue Instanz dieser Variablen zurück, die dann geändert wird. In diesem Fall ist Großbuchstaben Säge alles groß. Und dann dieser hier, ganz in Kleinbuchstaben. Vielleicht wollen wir herausfinden, wo sich etwas in dieser Saite befindet. Und wir können Index off dafür verwenden. Also lassen Sie uns einfach wieder eine Debug-Sperre machen. Und dann finden wir das Wort Vortrag. Das Wort Vortrag an Position gefunden. Und dann lasst uns die Position hier einlegen, damit es Satzpunktindex ausgeschaltet wird. Und dann können wir hier eine Schnur übergeben. Und wir werden Vortrag sagen, oh, das ist nicht richtig. Da gehst du, Vortrag. Und das wird den Index zurückgeben, wo Elektronen beginnen. Also mal sehen, was, lass uns zuerst zählen. Also 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 19. Mal sehen, ob wir tatsächlich 19 bekommen oder was wir bekommen. Wir kriegen 18. Nun, das ist nicht so komisch? Die IOM wie zählen falsch? Nein, wir haben nicht falsch gezählt. Nun, das haben wir in irgendeiner Weise. Aber nein. Die Idee ist, dass ein Satz, das erste Zeichen hier, das erste Zeichen hier ist eigentlich 0. Also müssen wir eigentlich bei 0 beginnen. Und wenn wir anfangen zu zählen bei 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18. Dann sehen wir, dass das L der Vorlesung tatsächlich an Position 18 gefunden wird, weil wir anfangen, bei 0 zu zählen und das ist eigentlich wichtig, beginnen Sie mit 0 zu zählen. Das ist also eine wichtige Sache in der Programmierung. Die meisten Programmiersprachen beginnen dort, zählen sowohl Strings als auch andere Datentypen bei 0. Irgendwie wichtig zu wissen. Weil es manchmal zu Seltsamkeit führen kann. Es gibt auch einige andere Programmiersprachen
, in denen das nicht der Fall ist und die Zählung beginnt bei 1. Es ist jedoch wirklich verwirrend, zwischen den beiden zu wechseln. Deshalb sage ich, okay, beginne die Zählung bei 0. Sehr wichtig. Es gibt auch eine Ersetzungsmethode. In diesem Fall ersetzt
die Ersetzungsmethode grundsätzlich
alle Instanzen einer bestimmten Phrase. Nehmen wir an, er nennt sich die Ersetzungsmethode und wir wollen die Welt durch Studenten ersetzen. Und die Idee ist, dass, oh, ich weiß, warum das Ego, das ist, warum, es braucht zwei Saiten. Die erste ist die Zeichenfolge, die ersetzt werden soll, und dann ist
die zweite Zeichenfolge, durch die sie ersetzt werden soll. Also in diesem Fall, was passieren wird, ist, dass die Ausgabe wird Hallo Studenten sein. Dieser Vortrag ist wunderbar statt Hallo Welt und dieser Vortrag ist wunderbar. Lassen Sie uns das einfach ausführen und sehen, ob das funktioniert. Ja, Hallo Studenten. Dieser Vortrag ist wunderbar. Und noch einmal, vergessen Sie nicht, dass dies nicht die ursprünglichen Sätze modifiziert, sondern uns tatsächlich einen neuen gibt. Was wir also tun können, ist, dass wir auch, wenn wir eine neue Zeichenfolge haben, zum Beispiel String S, das wird nur eine leere Zeichenfolge sein. Dies wäre also eine leere Zeichenfolge. Wir können auch strings.xml für eine leere Zeichenfolge sagen, aber diese sind im Grunde die gleichen. Dann können wir im Grunde einen Booleschen Wert haben. So können wir String nennen ist null oder leer. Übergeben Sie eine Zeichenfolge, in diesem Fall S. Und dies wird true zurückgeben, wenn die Zeichenfolge hier null oder leer ist. Und es wird eine false zurückgeben, wenn die Zeichenfolge weder null,
neu noch leer ist , oder? Und wir können auch sehen, ob wie, was eine bestimmte Zeichenfolge beginnt mit einem, womit sie endet, in sehr unterschiedlichen Momenten nützlich sein kann. Nehmen wir einfach das hier. Dies wird Stuart mit sein, und dies ist Satz beginnt mit,
beginnt mit gibt einen Booleschen Wert zurück. Also im Grunde können wir sagen, hey, fängt es mit einem H an? Und dann können wir sagen, endet mit. Und dann haben wir einfach schnell zu diesem, endet mit, und sagen wir, es endet mit einem großen a. Und das ist natürlich nicht wahr. Das wäre also wahr. Und das wäre falsch. Das ist schön formatiert. Da gehst du, das ist großartig. Richtig? Schauen wir uns das an, nachdem wir uns
die nächste angesehen haben und die nächste ist die Methode enthält. Die contains Methode gibt einfach true oder false zurück. Also ein boolescher Wert, wenn etwas darin enthalten ist oder nicht. Nehmen wir an, wir wollen wissen, ob der Satz Welt enthält oder nicht. Das ist natürlich wahr, denn welche Welt ist das zweite Wort hier drin. Und noch einmal hat der Ersatz den Satz nicht ersetzt. Es hat tatsächlich eine neue String-Art im Hintergrund erstellt. Also lass uns mal sehen. Ja, beginnt mit einem H. Es beginnt mit einem H, Kapital H, und endet dann mit einem großen a, das war ein Kapital a und das hat Falten. Und dann ist es hier wahr für die enthält die Stringwelt. Es gibt auch eine Art andere Art und Weise. Der Index hier war eine ganze Zahl. Also im Grunde die Nummer, wo das L der Vorlesung beginnt, können
wir es auch irgendwie umgekehrt machen, so dass wir
tatsächlich einen Charakter an Position bekommen können . Also lasst es uns an Position 10 holen. Und die Art und Weise, wie wir das tun, ist, dass wir im Grunde nur den Namenssatz eingeben. Und dann machen wir diese Klammern und geben dann ein, was die Position ist, die wir wollen. Dies gibt also ein Zeichen zurück. Und in diesem Fall wäre es, ich denke, das D, ich glaube eins. Also 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Ja. Das würde also das D hier in der Welt zurückgeben. Und etwas, das auch damit zu tun hat, ist die Teilzeichenfolge, in der wir auch Positionen angeben müssen. Und jetzt auf ja, also lassen Sie uns Debugprotokollsatz Punkt Teilzeichenfolge und E Sobald ein Startindex, und dann will es die Länge, geht es. Also im Grunde die Teilzeichenfolge, was sie will, ist, dass sie wissen will, okay, wo fange ich an und wie lange gehe ich dann? Also in diesem Fall sollte dies am t beginnen und enden Bei, ich bin mir nicht sicher, tatsächlich, 123456789, 10, 11, denke ich. Tour. Nun, das werden wir sehen. Mal sehen, dass das tatsächlich der Fall ist. Mal sehen, was das bringen wird. Die Teilzeichenfolge ist also tatsächlich ja, und das hat auch den Platz darin. Und wählen Sie diese Vorlesung. Und wie Sie hier sehen können, ist
die D auch Ausgabe dieses Bein zwei. Das wäre also 12 und würde nicht mit 13 beginnen, ich glaube, wenn wir wollen,
wollen, dass es diesen Vortrag ausdruckt, Lasst uns das einfach machen. Und sie gehen diese Vorlesung, großartig. Das ist genau das, was ich will, oder? Und das ist eine Teilzeichenfolge in diesem Fall, wo wir haben, wenn wir einen bestimmten Teil der Zeichenfolge nehmen und einen anderen erstellen. Also noch einmal, wir ändern nicht die Zeichenfolge selbst. Die Art und Weise, wie wir die Zeichenfolge ändern würden, könnte ungefähr wie dieser Satz sein,
Satzpunkt-Teilzeichenfolge zum Beispiel. Und dann würde es passieren, dass es diese tun Teilzeichenfolge erstellen und dann wieder in den Satz selbst
speichern würde, so dass die Variable selbst, so dass das funktionieren würde. Aber wir werden das an dieser Stelle nicht tun. Das ist eigentlich nicht ganz das, was wir in diesem Moment brauchen. Das letzte, was ich Ihnen zeigen möchte, ist, wenn wir
eine Zeichenfolge haben und dann vielleicht, was wir in dieser Zeichenfolge wollen, ist, dass wir Zitate haben wollen. Nun, das Problem ist, dass, sobald ich Anführungszeichen eintippe, die Zeichenfolge endet, das ist natürlich
nicht ganz das, was wir wollen. Und was wir tun können, ist, dass wir einen dieser umgekehrten Schrägstriche machen können. Und dieser umgekehrte Schrägstrich ist im Grunde ein Escape-Zeichen, so dass das Programm weiß, dies jetzt eigentlich als Anführungszeichen gedacht ist, die tatsächlich innerhalb einer Zeichenfolge sind. Es gibt auch einige andere Dinge wie den umgekehrten Schrägstrich t, Backslash, Backslash, Backslash. Wenn Sie einen umgekehrten Schrägstrich eingeben möchten. Das sind im Grunde die wichtigsten. Also der umgekehrte Schrägstrich Anführungszeichen, umgekehrter Schrägstrich t, umgekehrter Schrägstrich n. Also der Teach einfach MIX Tab. Wenn Sie also die Tabulatortaste drücken, wechseln
Sie über eine bestimmte Anzahl von Leerzeichen und erstellen eine neue Zeile. Und der umgekehrte Schrägstrich gibt einfach einen neuen umgekehrten Schrägstrich ein. Also wie ein Zeichen, das gleiche mit, das gleiche wie mit diesen Anführungszeichen, richtig? Ja, das sind die wichtigsten Dinge über Strings und einige dieser String-Methoden. Wieder einmal bitte ich Sie, sich ein paar davon anzusehen. Es gibt noch ein paar mehr. Also, wenn wir uns das ansehen, was wir sehen können, gibt es auch gleich vergleichen,
es gibt Einfügen, ähm, es gibt eine Entfernungsmethode. Es gibt also noch ein paar andere Dinge, die wir auch tun können. Wie ich schon sagte, ich bitte Sie, sie anzusehen. Das ist nur ein allgemeiner Überblick über Federn, in der Regel vor allem in der Spielentwicklung selbst. Es ist nicht die String-Manipulation ist nicht so häufig wie vielleicht in einigen anderen Feldern. Manchmal weiß man jedoch nie, was man bekommt. Es ist also am besten, über diese Dinge zu wissen und sie gut angesehen zu haben. Ich hoffe, das war informativ für Sie. Wenn es so war, dann werde ich natürlich eine Rezension von Ihnen zu schätzen wissen. Und wenn es irgendwelche Fragen gibt, natürlich,
wie immer, zögern Sie nicht, zu fragen und ich werde sicher sein, zu antworten. Und ja.
12. (C#) Casting: Alles klar, willkommen zurück zur C-scharfen Einführung hier für den Einheitskurs. Und in diesem Vortrag werfen wir einen Blick auf Casting. Casting könnte dir vielleicht nichts sagen. Der Begriff könnte in Ordnung sein. Was ist Casting? Nun, schauen wir uns einfach an, indem wir das Skript hier öffnen. Und die Idee ist, dass
wir eine Variable namens Darlehen haben, die 750 ist, und es ist eine ganze Zahl. Nun, was wir auch haben, ist ein Float namens Zinssatz. Und das wird sein, sagen
wir etwa 5,25%. Dies kann also als 0,05 bis fünf geschrieben werden. Nun, was wir tun können, ist, dass wir sagen können, naja, der Hausbesitzer berechnet die Interessen. Nun, das Interesse wird einfach der Kredit mal der Zinssatz sein, der Zinssatz, den Sie gehen, richtig? Das wird also nicht zu verrückt nach
einer Berechnung sein und sollte ziemlich unkompliziert sein. Und dann lassen Sie uns auch sicherstellen, dass wir gerade das Interesse protokollieren. Und mal sehen, was wir sehen können. Was daraus herauskommen wird. Es wird also kommen, dass 39,375, oder sagen wir, 39 Punkt, sagen
wir, 3, 8 Dollar, sagen wir. Nun, wie funktioniert das? Wir haben gerade eine ganze Zahl genommen und sie im Grunde mit einem Float multipliziert. Also stellt sich die Frage, wie funktioniert das? Das, das ist irgendwie seltsam, oder? Warum können wir einfach die ganze Zahl nehmen und sie im Grunde mit einem Float multiplizieren? Nun, das würde implizites
Casting genannt werden , weil beide Zahlen sind und das funktioniert. Was nicht funktionieren würde, ist zum Beispiel, wenn ich sagte, das Interesse ist jetzt eine Ganzzahl, dann wäre eigentlich eine, die nicht funktioniert, weil wie Sie dort sehen können,
es sagt, dass nicht implizit in den Typ float in int konvertiert werden kann, weil dies ein Schwimmer. Und wenn wir eine ganze Zahl mit float multipliziert haben, wird sie in einen Float umgewandelt weil ein Float mehr Informationen hat als ein Interrupt. Ich kann jedoch explizit sagen Hey, egal, behandeln Sie dies als Ganzzahl. So kann ich sagen, gut int. Und dann wird es so sein wie Okay, sicher, der Zinssatz ist jetzt eine ganze Zahl. Das große Problem dabei wird sein, nun, was bedeutet das wirklich? Nun, mal sehen, ob wir noch 39 bekommen. Jetzt bekommen wir, wir bekommen 0. Wie bekommen wir 0? Nun, die Idee ist, dass eine Ganzzahl keine hat,
irgendetwas nach dem Dezimalpunkt, richtig? Eine Ganzzahl ist also immer eine ganze Zahl. Daher wird dies in eine Ganzzahl umgewandelt. Und was passiert, wenn ein Float in eine Ganzzahl konvertiert wird? Alles nach dem Dezimalpunkt wird es einfach abgeschnitten. Also im Grunde, was der Zinssatz, nachdem er in eine ganze Zahl umgewandelt wird, sieht 0. So ist der Zinssatz 0, daher ist
das Darlehen 0, was natürlich keinen Sinn ergibt. Oder wenn das Interesse also 0 ist, was keinen Sinn ergibt. Deshalb wollen wir, dass dies ein Schwimmer ist. Wir können dies auch als ein weiteres Beispiel sehen. Nehmen wir an, wir haben eine ganze Zahl x und wir werden nur etwas wie
50,5 f plus 20,6 f sagen , richtig? Und wir werden jetzt ein Log dies aus. Also schauen wir uns an, was wir erwarten würden. In diesem Fall ein 71. Ja, 0.171.1. Jetzt ist es eine ganze Zahl. Also, was wir sehen sollten, ist ein 71, und in der Tat sehen wir eine 71. Also noch einmal, in diesem Fall, wäre
dies tatsächlich 71.1. Und dann ist alles, nachdem der Dezimalpunkt abgeschnitten wurde, daher ist es 71. Und was hier auch interessant ist, ist, wenn wir etwas teilen, wenn wir zum Beispiel eine 100 durch 200, F, zum Beispiel, richtig? Es ist nett, manchmal ist es wichtig, weil manchmal eine Division nicht ganze Zahlen zurückgeben wird. Also in diesem Fall ist
es eine ganze Zahl. Aber wenn wir zum Beispiel so etwas tun
würden und dann Sicher, warum nicht teilen Sie das durch zweihundertzweihundert F. Also teilen Sie dies durch einen Schwimmer. Und dann schauen wir mal, was das tatsächlich ergibt. Wie Sie sehen können, schreit dies auf 55. Wenn wir das durch 200 teilen würden, und dann können wir auch sagen, dass es nicht schwebt, spielt es keine Rolle. Problem ist, dass dies dann eine Zwei ist. Manchmal ist es also besser, wenn wir hier einen Float haben, manchmal ist es am besten, mit ganzen Zahlen zu arbeiten. Eine Notiz, die ich wirklich klarstellen möchte, nur damit wir das raus haben. Also habe ich diesen Kredit und den Zinssatz als Beispiel verwendet. Wenn Sie jemals an einem Bankensystem arbeiten, egal ob es sich um das Innere eines Spiels oder um das reale Leben handelt, verwenden Sie
niemals Fließkommazahlen. Mach immer alles mit ganzen Zahlen. Speichern Sie also sowohl die, sowohl die volle Menge an Dollar als auch Cent in beiden Zahlen. Weil Fließkommazahlen, wie ich Ihnen bereits gesagt habe, anfällig für Fehler
sind. Und vor allem in der Rundung. Und Sie wollen wirklich keine Rundungsfehler, wenn es um Geld geht, das wird ein wirklich großes Problem sein. Ich wollte nur erwähnen, dass immer ganze Zahlen verwendet werden, wenn Sie das genauso schnell beiseite tun. Wenn andere Sache, die wir tun können, ist, dass wir tatsächlich Charaktere werfen können. Also, was wir tun können, ist, dass wir den Charakter, zum Beispiel, der oberen Kasten, acht, die oberen, Großbuchstaben a. Also machen wir y. Jetzt ist es wirklich toll hier draußen ein bisschen, weil die Besetzung redundant, weil ich eigentlich nur sagen kann, na ja, int y ist gleich a und das funktioniert gut. Wir werden es nur hier behalten, damit wir es wissen,
okay, wir haben tatsächlich gegossen. Und wenn wir das dann einfach ausführen, können
wir sehen, dass es eine 65. Warum sind das 65? Nun, das kommt von der Art, wie die Zeichen im Grunde codiert sind. Und die Kodierung im Hintergrund ist nur eine Zahl. Das ist alles, was es ist. Also können wir wirklich so etwas tun. So können wir sagen, zum Beispiel,
50, gut, lassen Sie uns nicht 50, Lassen Sie uns 12 plus das tun, richtig? So wie das. Und dann können wir auch die ganze Zahl in ein Zeichen umwandeln und dann ausdrucken, was auch immer das ist. Also gehen wir im Grunde von einer und dann 12 Codierungen danach. Mal sehen, was das ist. Das sollte ein Nichts sein. Das ist ein M da gehst du. Es gibt also auch einige Möglichkeiten, wie wir das Zeug mit den Charakteren
im Grunde berechnen können . Und das sind einige der grundlegenden Gussteile. Und es gibt auch ein bisschen fortgeschrittenere Konzepte, die wir in einer zukünftigen Vorlesung einen Blick auf uns werfen werden. Aber im Moment haben wir nicht die Werkzeuge oder das Wissen dafür, um
tatsächlich zu wissen, wie das funktioniert, wo das gerade ein grundlegender Überblick ist. So können wir tatsächlich einige Datentypen in andere Datentypen konvertieren. Die meiste Zeit, implizit. Implizite Gießarbeiten. Wenn Sie von einem Datentyp weniger Informationen zu einem Datentyp wechseln, der mehr Informationen enthält. Also von einer Ganzzahl zu einem Float funktioniert implizit. Von einem Float zu einem int funktioniert nicht implizit, weil Sie Informationen verlieren, hauptsächlich in diesem Fall ist das, alles nach dem Dezimalpunkt, richtig? Das war es für die Casting-Vorlesung. Ich hoffe, dass das für Sie informativ war. Wenn es irgendwelche Fragen, wie immer, zögern Sie nicht zu fragen, und ich werde sicher sein, zu antworten. Und ja.
13. (C#) Bedingte Anweisungen (Wenn und anderweitig): Alles klar, willkommen zurück zur C-scharfen Einführung für den Einheitskurs. Und in diesem Vortrag werden wir einen Blick auf bedingte Operatoren werfen. Was sind bedingte Operatoren? Nun, es sind im Grunde einige Schlüsselwörter , die wir verwenden können, um zu sehen, ob etwas wahr oder falsch ist oder nicht. Und dann, je nachdem, ob auf diesem Trophozoiten bestimmte verschiedene Aktionen durchführen oder verschiedene Fell ausführen. Also lassen Sie uns einfach das bedingte Skript hier starten. Und mal sehen, was wir sehen können. Wie Sie sehen können, wird es die if- und
die else-Aussagen sein , die wir uns ansehen werden. Aber vor allem brauchen wir einige Variablen, also werden wir ein x haben und ein Warum sowie ein Bool ist guter Kurs. Und das heißt, natürlich wird wahr sein. Hoffen wir, dass das auch wahr ist, aber ich bin mir ziemlich sicher, dass es so ist. Nun, was können wir tun? Nun, lassen Sie uns einfach eingeben, wenn dies die if-Anweisung ist. Nun, was wir tun können, ist, dass wir Tab zweimal drücken können und dann
wird es für uns die Art und Weise generieren, wenn Anweisung aussieht ,
wie Sie sehen können, hat es Klammern nach dem if. Dann innerhalb dieser Klammern gibt es einen booleschen Ausdruck. Jetzt kann das so kompliziert oder so einfach sein, wie Sie sich fragen. Es kann entweder nur ein boolescher Wert sein, wie wahr. Es kann eine boolesche Variable sein oder wie wir in früheren, äh,
Vorträgen, den verrückten booleschen Vergleichsoperatoren oder so etwas gesehen haben . Also lasst uns einfach x eingeben ist größer als y. und wenn das der Fall ist, dann wird alles in diesem Bereich hier ausgeführt. Sagen wir einfach Debug Dot Log. Und dann sagen wir, X ist größer, als warum sie gehen, Bam. Und dann, wenn das der Fall ist, dann wird das ausgeführt. Jetzt können wir natürlich schon sehen, dass x ein 100 ist und y 1000 ist. Daher ist das definitiv falsch. Was können wir dann tun? Nun, dann können wir einfach eine else-Anweisung hinzufügen. Die else-Anweisung wird dann ausgeführt. Wenn das falsch ist. Also, wenn das wahr ist, dann wird dies ausgeführt. Sonst. Also, wenn das nicht wahr ist, dann wird dies ausgeführt. Und in diesem Fall ist x nicht größer als y. Lassen Sie uns das einfach ausführen und sehen, was passiert. erneut sicher, dass Sie auf Lecture 10 sind. Und dann, wie Sie sehen können, ist
x nicht größer als y ,
und das ist das Einzige, was ausgeführt wird. Stattdessen, was wir hier gesehen haben, was wir vorher gesehen haben, war, dass wir gerade von oben nach unten
gehen und alles, jede Zeile ausgeführt wird. In diesem Fall haben wir tatsächlich eine bedingte. Das ist also eine Art verzweigtes Ding. In diesem Fall. Es hängt davon ab, was hier passiert. Interessant. Wie sonst können wir das machen oder was können wir sonst noch damit machen? Nun, vor allem, eine Sache zu beachten ist, dass, zum Beispiel, wenn wir das ist ein gutes Video, Es ist ein guter Kurs hier. Was wir verwenden können ist, dass wir diese Klammern nicht wirklich brauchen. Wir können auch einfach Enter drücken und dann eine Zeile haben, die wir tun möchten. Also ja, zum Beispiel ist es ziemlich gut. Und das wird dann ausgeführt. Wenn das wahr ist. Wir können auch, wenn wir das einfach überschreiben. Und in diesem Fall haben wir nur die, die Boolean. Wir können auch explizit sagen, Hey, das muss wahr sein. Jetzt ist das nicht notwendig, denn das alles tut dies bereits. Einige Leute bevorzugen dies jedoch, weil es es ein wenig expliziter
macht , was dies tatsächlich bedeutet. Also, was will ich damit? Ich persönlich ziehe es vor, diese Version zu verwenden. Wenn Sie jedoch denken, dass dies für Sie besser lesbar ist, können
Sie dies natürlich auch verwenden. Was ich auch sagen wollte, ist,
wenn Sie das M auf diese Weise verwenden, es zu schreiben, also die if-Anweisung und dann mit der eingerückten nächsten Zeile, würde
ich sagen, dass es nicht das Beste ist, was zu tun ist. Denn wenn wir jemals eine neue Zeile hinzufügen wollen, die auch innerhalb dieser ist, wenn wir dann die geschweiften Klammern in irgendeiner Weise hinzufügen müssten. Daher ist es eigentlich immer das Beste, um die geschweiften Klammern hinzuzufügen. Nur, ich wollte das nur erwähnen, oder? Also lass uns noch eine letzte Sache sehen. Also zum Beispiel, wir haben eine Note, zum Beispiel, oder? Sagen wir mal so etwas wie 99. Vielleicht haben Sie, wir haben gerade eine Prüfung geschrieben und die Note ist 99%. Und dann, was Sie sich vorstellen können, ist, dass wir vielleicht auch andere Dinge wollen. A, B Ausgabe je nachdem, was mit dem großen passiert. Zum Beispiel, wenn die Note kleiner als 50 ist, dann würden wir ausdrucken möchten, ist, dass Sie die Klasse versagt haben. Weil das Sinn ergibt, richtig? Wenn Sie weniger als 50 haben, dann führt das dazu, dass Sie eine Klasse fehlschlagen. Nun, wenn wir vielleicht wollen, oder? Und dann bist du in der Klasse gelungen, also hast du bestanden, richtig? Sie haben die Klasse bestanden. Wenn es nicht 50, aber gut,
vielleicht, was ich will, ist, dass ich wirklich wollen, um diese haben, richtig, weil Sie die Klasse bestanden haben, aber nicht ruhig mit, ruhig mit einem 100 Punkte. Also vielleicht möchte ich eigentlich, dass das aufgerufen wird wenn die Person keine 100 Punkte hat, aber vergangen ist. Und dann will ich, dass noch etwas kalt ist. Also, was wir dann tun können, ist, dass wir die else if-Anweisung tun können, einfach ändern die, eine andere if-Anweisung in hier sagen, zum Beispiel, Grad ist größer oder gleich 50. Das ist also genau das Gegenteil dieses rechten Endes. Die Sorte ist kleiner als 100. Es ist also zwischen 50 und 100. Und dann wird das angerufen. So haben Sie die Klasse bestanden, aber nicht ganz mit 100 Punkten. Und wenn wir dann etwas anderes sagen, können
wir uns zum Beispiel ansehen, dies zu
tun und dann das zu haben. Sie haben die Klasse bestanden, Mal sehen, mit auf uns so etwas. Und das würde dann funktionieren. Also im Moment haben wir 99. Was also ausgedruckt werden sollte, ist, dass Sie die Klasse bestanden haben, aber nicht ganz mit 100 Punkten. Mal sehen, ob das der Fall ist. Sie haben die Klasse bestanden, aber nicht ganz mit 100 Punkten, genau. Und dann, wenn wir 100 Punkte haben, dann sollte es funktionieren. Mal sehen. In der Tat haben Sie Klasse, die Klasse übergibt die Klassenbreite auf uns. Richtig? Da drin ist ein winziger kleiner Fluss, den du dir selbst ansehen kannst. Vielleicht können Sie es auf Ihrer eigenen Zeit herausfinden und hinzufügen. Denn wenn ich 101% im Jahr
habe, gebe ich die Klasse immer noch mit Ehren. Wie Sie sehen können, funktioniert es immer noch. Vielleicht können Sie hier entweder einen neuen Ausdruck hinzufügen oder vielleicht acht, eine andere if-Anweisung. Aber das ist wirklich nur eine Idee für dich. Wenn du damit herumspielen willst, ein bisschen mehr. Sehr wichtig if und else Aussagen sind ein entscheidender Baustein der Programmierung. Sie sind im Grunde eines der wichtigsten Dinge, um runter zu kommen. Dies ist also ein sehr wichtiger Bereich des Wissens, den Sie benötigen, um für Sie zu programmieren. Deshalb möchte ich wirklich betonen, ein paar Dinge mit den if- und den else-Aussagen
ausprobieren. Spielen Sie mit ihm ein wenig herum. Und wenn es irgendwelche Fragen in diesem Fall, in diesem Thema, sehr wichtig, Duke, stellen Sie Fragen, die Sie haben, die
vielleicht nicht ganz klar sein , wenn es etwas unklar ist, bitte stellen Sie eine Frage. Ich werde sicher sein, wie immer zu reagieren. Und ja.
14. (C#) Ternary: Alles klar, willkommen zurück zur C-scharfen Einführung für den Einheitskurs. Und in diesem Vortrag werden wir einen Blick auf den ternären Operator werfen. Nun, zuerst, der ternäre Operator klingt, als wäre es unglaublich kompliziert und einige wie eine sehr verrückte Sache. Es ist überhaupt nicht verrückt. Es ist eigentlich ziemlich leicht zu verstehen, und wir werden es jetzt durchmachen. Noch einmal, stellen Sie sicher, dass wir auf Lecture 11 sind, ternär, und öffnen Sie dann einfach das ternäre Skript. Wie Sie sehen können, ist hier schon etwas drin. Wir haben eine großartige Note und einen Bool , die nur ausdrücken, ob diese größte Vergangenheit vergangen ist oder nicht. Wir haben in den letzten Vorträgen gesehen, wie wir das im Grunde ein wenig manipulieren können. Und jetzt gibt es nur eine kurze Kurzschrift im Grunde zu zeigen. So können wir sagen, dass Vergangenheit gleich ist. Und dann können wir zum Beispiel sagen, Klasse, ich bin größer oder gleich 50. Und das funktioniert nur, weil wir natürlich die booleschen Ausdrücke speichern können. In diesem Fall mit dem Vergleichsoperator auch direkt neben einem booleschen Wert. Anstatt dies immer innerhalb einer if-Anweisung zu bewerten, können
wir es auch einfach in einem booleschen Wert speichern und es dann im Grunde so betrachten. Jetzt hat der ternäre Operator etwas. Es funktioniert im Grunde fast wie eine if-Anweisung. So können wir zum Beispiel
sagen, Vergangenheit ist gleich und dann sagen wir, Grad ist, sagen
wir, kleiner als 50. Lassen Sie uns eine Summe Klammern machen, anstatt der ternäre Operator ist ein Fragezeichen. Und dann, was auch immer zurückgegeben werden sollte. Wenn das wahr ist, wird es ein bisschen sein. sind wir jetzt. Das kann falsch sein und dann machen wir Doppelpunkt durch. So, wie Sie jetzt sehen können, zeigt es tatsächlich keine Fehler mehr. Die Idee ist, dass
Sie vor dem Fragezeichen einen booleschen Ausdruck einfügen. Und das erste Element hier ist, was zurückgegeben wird. In diesem Fall wird in die vorangegangene Variable geschrieben. Wenn der Ausdruck hier wahr ist. Und was kommt dann, nachdem der Dickdarm zurückgegeben wurde? Wenn der Ausdruck hier falsch ist. Also dieser hier, also
dieser Ausdruck hier ist im Grunde der gleiche, wenn ich Folgendes tun würde. Also ist dieser bestanden gleich falsch. Sonst übergeben gleich wahr. Diese sind also völlig gleichwertig. In diesem Fall. Das Gleiche würde hier passieren, wie es hier tut. Vielleicht könnte ein, ein anderes Beispiel ein bisschen besser sein, zum Beispiel mit einer Zeichenfolge. Also sagen wir, zum Beispiel, die Phrase und dann werden wir sagen, Grad gleich 100. Dann sagen wir Glückwunsch auf 100. Und dann, wenn es keine 100 ist, so wird
dies zurückgegeben, wenn es eine 100 ist, und das wird zurückgegeben, wenn es nicht eine 100, keine 100 ist. Aber es ist immer noch gut. So etwas wie das. Zum Beispiel. Wie Sie sehen können, funktioniert das. Und das könnte ein bisschen besseres Beispiel als das letzte Jahr, weil wir Booleans auch hier verwenden. Dies
kann der ternäre Operator, wie gesagt, auch durch normale if-Anweisungen ersetzt werden, oder if-Anweisungen können durch einen ternären Operator ersetzt werden. Es hängt wirklich von der Situation ab. Etwas, das ich definitiv nicht tun würde, ist mehrere ternäre Operatoren, wie ineinander. Also in der Theorie können wir sagen, na ja, okay, das ist ein anderes Tagebuch heller, also können wir sagen, die größte, größer oder gleich 50. Und dann noch ein Fragezeichen, und dann können wir zurück und dann können wir zum Beispiel zurückkehren fehlgeschlagen, oder? Also können wir das tun. An diesem Punkt beginnt es ein wenig komplizierter zu lesen. Ich denke, das könnte in Ordnung sein. Wenn Sie wie zwei Ebenen tief haben, vielleicht funktioniert das. Aber ich würde Ihnen wirklich nicht raten, mehr als das zu tun. - Ja. Aber es ist auch eine Sache,
für die man ein Gefühl bekommt , wenn man ein wenig programmiert. Ja, das ist also der ternäre Operator. Es ist nur eine kleine kurze Einführung. Es ist nichts zu schickes daran. Und es ist nur wichtig, dass Sie gesehen haben, dass alles sind. Also ja, ja, das war es für diesen Vortrag. Ich hoffe, Sie fanden es nützlich, wenn es irgendwelche Fragen, wie immer fühlen Sie sich frei zu fragen, und ich werde sicher sein, zu antworten. Und ja.
15. (C#) Switch: Alles klar, willkommen zurück zur C-scharfen Einführung hier für den Einheitskurs. Und in diesem Vortrag werden wir einen Blick auf Switch-Anweisungen werfen. Also zuletzt haben wir den ternären Operator gesehen. Es gibt einen anderen Operator oder eine Anweisung, die wir
verwenden können , die ich nicht sagen würde, ersetzen Sie die if-Anweisungen, aber die wir anstelle der if-Anweisungen verwenden können, wenn wir dies wählen. Also lassen Sie uns einfach das switch-Anweisungsskript hier öffnen. Und es kann sehen, dass ich bereits
einen Integer-Wert oder Integer-Variable x mit dem Wert 75 vorbereitet habe. Und wir werden uns das Schlüsselwort „Switch“ ansehen. Also ist es nur Switch. Und dann in Klammern darin wollen
wir eine Variable setzen, die wir bewerten möchten, in diesem Fall x, und dann brauchen wir die geschweiften Klammern. Und das ist im Grunde schon das, was wir für die switch-Anweisung brauchen. Dann innerhalb der switch-Anweisung werden
wir tatsächlich bestimmte Fälle definieren. Also, wenn zum Beispiel x 10 ist, also werden wir Fall 10 schreiben, dann einen Doppelpunkt, und dann was auch immer wir wollen geschehen. Also hier können wir tatsächlich schreiben wie eine ganze Reihe von Code, Methodenaufruf, was immer wir wollen. In diesem Fall werden wir nur ausdrucken oder Debugprotokoll x ist 10. Und am Ende,
also nach dem Semikolon, wollen
wir tatsächlich ein anderes Schlüsselwort und das ist Ziegel. Und das bedeutet einfach, dass, okay, dieser Fall ist jetzt fertig. Also offensichtlich
gibt es die, IT, einen einfacheren Weg, um auszugeben, was x in diesem Fall ist. Dies dient nur zu Demonstrationszwecken in diesem Fall. Und so können wir einen anderen Fall haben, also zum Beispiel Fall 20. Und dann werden wir sagen, Debugprotokoll x ist x 20. Und noch eine Pause. Und lassen Sie uns die einfach überschreiben. Also werden wir im Grunde sicherstellen, dass wir sie markieren und sie auswählen lassen. Dann werden wir Control C drücken, um Steuerelement V zu kopieren, um einzufügen. Und dann werden wir noch fünfzig und hundertfünfundfünfzig
und hundert haben. Und ja, das ist in Ordnung. Nun, wie Sie sehen können, ist
der Nachteil hier, dass wir tatsächlich jeden bestimmten Fall anstelle
einer if-Anweisung angeben
müssen , wo wir die Art der Fähigkeit hatten wo wir den Booleschen übergeben, um Bereiche zu haben. Hier muss es tatsächlich in jedem Fall explizit sein. So kann es ein bisschen mühsam sein. Und es gibt einen speziellen Fall, der passiert, wenn x
etwas ist , an das wir nicht gedacht haben oder wenn wir keinen Fall dafür definieren wollen, und das wird Standard genannt. Und der Standardwert passiert. Sagen Sie zum Beispiel Debug-Protokoll. Ich weiß nicht, was x ist. Irgendwie komisch. Und dann eine Pause, bist du auch, richtig? In diesem Fall wäre offensichtlich Standard, der Fall wäre Standard, weil x 75 in keinen dieser vier Fälle fällt. Und das können wir tatsächlich überprüfen. Stellen Sie sicher, dass wir auf der Schaltervorlesung sind. Und lasst uns spielen und sehen, ob das funktioniert. Ich weiß nicht, was X irgendwie seltsam ist. Da gehst du. Weil x etwas war, für das kein Fall definiert wurde. Also ja, das ist im Grunde die switch-Anweisung. Es hat einige Verwendungszwecke in bestimmten Fällen. Es ist jedoch normalerweise für vielleicht reserviert, wo Sie drei oder vier vordefinierte Fälle haben, in denen dies nicht zu lange andauert. Und in der Regel auch ganze Zahlen und auch schwimmt. Verwenden Sie also niemals Switch-Cases, wenn Sie Floats oder Doubles haben, weil das, ich meine, buchstäblich nicht funktioniert. Oder Mein Weg zur Katastrophe. Ganzzahlen r kann in Ordnung sein. Normalerweise sind Switch-Cases jedoch für Dinge wie Enums reserviert, die wir ein wenig später betrachten werden, wo diese im Grunde vordefinierte Werte haben. Das ist also eine Art Idee. Aber ich wollte dir die Switch-Anweisung zeigen. Es kann nützlich sein und kann grundsätzlich mit einer if-Anweisung ausgetauscht werden. Und ja, das war es für diesen Vortrag. Ich hoffe, Sie fanden es nützlich, wenn es keine Fragen gibt, wie immer, fühlen Sie sich frei zu fragen und ich werde sicher sein, zu antworten. Und ja.
16. (C#): Alles klar, willkommen zurück zur C-scharfen Einführung hier für den Einheitskurs. Und in dieser Vorlesung werden wir einen Blick auf die while-Schleife werfen. Also gehen wir zum nächsten Abschnitt, sagen
wir, was Schleifen ist. Und lasst uns einfach sehen, was wir sehen können, das while-Schleifen-Skript zu öffnen. Also habe ich bereits eine Ganzzahl x gleich fünf definiert. Und jetzt wollen wir vielleicht, was wir wollen, ist, dass wir dieses X sperren wollen, vielleicht oft, oder? Also wollen wir das sperren. Also im Moment haben wir uns 6 mal angesehen, aber eigentlich möchte ich es 100 mal einloggen, oder? Also muss ich noch einmal kopieren und kopieren und kopieren. Ich meine, das ist lächerlich, richtig. Offensichtlich ist das viel zu viel. Und vielleicht möchte ich das, was ich zwischen diesen Schlössern will, tatsächlich erhöhen. Also will ich fünf aussehen und dann will ich sechs und dann 78 aussehen. Und ich meine, das ist, das ist Wahnsinn Rate. Natürlich ist das Wahnsinn. Deshalb haben wir Schleifen. Eine Schleife wiederholt einfach einen bestimmten Abschnitt des Codes. Nehmen wir an, wie oft wir definiert haben. Und in diesem Fall macht eine while-Schleife etwas, während ein bestimmter boolescher Ausdruck wahr ist. Also schreiben wir einfach die while, eine Schleife, das while-Schlüsselwort hier, und lassen Sie uns einfach zweimal tippen und wie Sie sehen können, generiert
es eine
Klammern, Klammern hier und geschweifte Klammern. Also wird alles innerhalb der geschweiften Klammern ausgeführt,
solange das, was sich innerhalb der Klammern befindet, wahr ist. In diesem Fall wird true immer ausgeführt und läuft weiter. Und es wird im Grunde Einheit abstürzen, wenn wir das tun. Das ist also eines der Dinge, auf die wir achten müssen. Es sollte immer eine gute Bedingung anstelle einer while-Schleife geben. Andernfalls könnte es zu einer Endlosschleife werden. Und das wird dann wiederum Unity abstürzen. Glaub mir, es wird dir irgendwann passieren. Während Sie etwas mit while-Schleifen programmieren. Es ist mir passiert. Und wer weiß es? Am Ende dieser Vorlesung wird es
vielleicht auch passieren. Ich bezweifle es sehr, aber man weiß es nie. Also lassen Sie uns in x ist kleiner oder gleich 10. Und während das wahr ist, werden
wir Dot log x log x debuggen, und dann werden wir x erhöhen. Also, wenn wir diesen Anstieg hier nicht haben, dann würde es weiterhin 55, 55. Aber es würde mit diesem To Ewigkeit tun, was natürlich nicht funktioniert, und deshalb würde die Einheit abstürzen. Das ist nicht das, was wir wollen. Daher werden wir jedes Mal X erhöhen, wenn die while-Schleife läuft. Es wird also wie jede andere Art von Code von oben nach unten laufen. Also wird es das ausdrucken oder erhöhen. Überprüfen Sie, dass ein immer noch eine Sache ist. Wenn es löst ein Log es aus, erhöhen Sie es, überprüfen Sie erneut und so weiter, so weiter, bis wir fertig sind. Und lassen Sie uns einfach einen Debug hinzufügen. Es wird sagen, aus der Schleife. Die Schleife, nein, aus der Schleife. Da gehst du. Und ja, lassen Sie uns das einfach so machen, was wir erwarten. Also eine Sache, die immer eine gute Idee ist, zu schauen, was wir erwarten, in der Konsole zu sehen. Also erwarte ich 5, 6,
7, 8, 9, 10 zu sehen . Ja. Ich glaube. Werde ich 10 sehen? Ja, ich werde 10 sehen, glaube ich. Und dann aus der Schleife. Also fünf bis zehn. Und dann aus dem ist, was ich
über Senior denke und sicherstellen, dass wir auf Lecture 13 sind. Lassen Sie uns sehen, ob das der Fall ist. 05678910. Und aus der Schleife, ist das nicht großartig? Das ist auch eine schnelle beiseite, sehr wichtig. Denken Sie darüber nach, was Sie in der Konsole sehen möchten. Denken Sie also über Ihre Erwartung nach und schauen Sie sich an, was herauskommt. Und wenn Ihre Erwartung und was auch immer ausgegeben oder gesperrt ist, erfüllt wird ,
großartig, Sie haben einen Gedanken darüber in der richtigen Weise. Wenn es eine Diskrepanz gibt, dann versuchen Sie herauszufinden, na ja, was habe ich falsch gemacht? Oder zum Beispiel, eine einfache, Lassen Sie uns sagen, Fehler
oder, oder eine einfache Sache zu machen ist, anstatt mit x kleiner gleich 10, wir haben, es ist kleiner 10. Wir sind wie, nun, es wird immer noch die 10 ausgeben, oder? Es wird immer noch von fünf zu 10 gehen, weil solange es kleiner als 10 ist, und natürlich gibt es die 10 nicht aus, denn sobald es 10 ist, ist
es nicht mehr kleiner als 10. Daher wird es nicht,
es wird nicht ausführen, was in der, in den geschweiften Klammern ist. Das ist also etwas, worauf man achten muss. Das ist nicht spezifisch für die while-Schleife selbst, sondern nur allgemeine Ratschläge. Und es gibt eine zweite, sagen wir. Ein anderer mache ich mit einer while-Schleife, die Art von Bindungen in das kleinere, kleinere als oder gleich ist. Und das ist die do while-Schleife. So können wir einfach tun und dann zweimal TAB drücken. Und wie Sie sehen können, werden
wir in diesem Fall ein do Schlüsselwort hier haben, gefolgt von den geschweiften Klammern und dann dem Wireless auf der Rückseite. Lassen Sie uns setzen in x ist kleiner als 10. Und dann können wir das Gleiche tun. Also lasst uns genau das Gleiche machen. Und machen wir es nicht so, wie wir es in diesem Jahr nicht tun. Richtig? Lasst uns das wirklich schnell hier rausholen. Und die do-while-Schleife. Nun, mal sehen, was passiert. So haben wir zuvor gesehen, dass die while-Schleife mit x kleiner als 10, die fünf bis neun gedruckt hat. Und in diesem Fall wird es noch fünf bis neun ausdrucken. Interessant, nicht wahr? Nun, was ist auch interessant? Wenn wir das behalten, werden wir unser X in zehn bringen. Diese Funktion ist also genau die gleiche Art und Weise, oder? Dies wird also auch das bewerten. Und dann lasst uns das hier reinbringen. Sagen wir, okay, x ist, sobald wir aus der Schleife sind, wird
x gleich 10 sein. So ist die Zeit nicht, ist nie eine Sache. Also wird X immer größer als 10 sein, nie kleiner als 10. Aber wenn wir uns das anschauen, wird
es tatsächlich 11 hier ausdrucken. Und wenn wir hier doppelklicken, werden wir tatsächlich sehen, dass dies das ist, was ausgedruckt ist. Das ist irgendwie seltsam, nicht wahr? Warum sollte das passieren? Denn x ist in diesem Moment nie kleiner als 10. Und ich meine, es ist, es ist ziemlich offensichtlich, weil es tatsächlich 11 ausgedruckt ist. Nun, do-while tut das hier,
also gibt es sozusagen DO-Befehl. Sie tun Schlüsselwort, wird die Dinge innerhalb der geschweiften Klammern einmal ausführen. Und dann wird es die While-Bedingung bewerten. Und dann funktioniert es im Grunde wie eine normale while-Schleife könnte irgendwann nützlich sein. Persönlich habe ich das selten benutzt. Und auch persönlich habe ich auch selten while Loops verwendet,
weil sie es tun, zumindest wenn ich sie benutze, neigen dazu, Einheit abzustürzen. Also seien Sie gewarnt, aber nicht, es wird nicht so schlimm sein, denn in der Regel, solange Sie genug Zeit sparen, wird es gut gehen. Aber ja, es ist eigentlich nicht so schlimm. Das wollte ich nur erwähnen. Und ja, das ist im Grunde ein kurzer Überblick über die while-Schleife. Ich hoffe, Sie fanden es nützlich und ich würde eine Rezension von Ihnen wirklich schätzen. Und wenn es Fragen wie immer, Gebühren für die Aufgabe und ich werde sicher sein, zu antworten. Und ja.
17. (C#) für die Schleife: Alles klar, willkommen zurück zur C-scharfen Einführung hier für den Einheitskurs. Und in diesem Vortrag werden wir uns für Loops ansehen. Also haben wir eine wilde Schleife gesehen. Also, was ist die for-Schleife? Nun, lassen Sie uns einen Blick werfen, indem Sie das for-loops Skript öffnen. Nun, wir werden einen Blick auf die for-Schleife ohne irgendetwas anderes werfen. Also lasst uns einfach vier eingeben und wir werden dies zuerst manuell machen. Die erste Komponente innerhalb einer for-Schleife ist also eine Ganzzahl. In diesem Fall werden wir diese ganze Zahl I gleich 0 nennen. Ich werde ein Semikolon setzen. Dann müssen wir einen, einen Ausdruck wählen. Also lassen Sie uns sagen, ich ist kleiner als fünf und dann ich plus, plus. Und dann auch in die geschweiften Klammern setzen. Also, was bedeutet das? Nun, das bedeutet, dass ich bei 0 beginne. Es geht auf fünf. Und es nimmt zu, ich um eins zu erhöhen. Das ist die Idee, denn wie wir gelernt haben, ich plus Plus erhöht. In diesem Fall, ich nach dem anderen. Ich fange bei 0 an. Und solange das wahr ist, geht die Schleife weiter. Also würde dieser von 0 bis 2, 1,
5, 4, 5 bis 4 zählen . Schauen wir uns das einfach an. Also debuggen Sie Dot Log
und dann ich . Und dann gehen wir das durch. Wie das aussieht. Also lassen Sie uns das einfach aussperren und sehen, was die Konsole für uns hat. Es sollte 0 bis vier sperren. Und wie Sie sehen können, 0, 1, 2, 3, 4. Toll, das ist ziemlich gut. Und dann lasst uns darüber nachdenken. Also beginnen wir bei 0, das ist leicht zu sehen. Also werden wir 0 ausdrucken. Ok? Dann erhöhen wir mich um eins. Und dann werden wir bewerten, Hey, bin ich kleiner als fünf? Ja, das ist es. In Ordnung. Lassen Sie es uns ausdrucken. Und dann wird es sein, 2 ist bei kleiner. Ja. Dann werden es drei kleine Bereiche für ja sein. Und dann werden es 55. Ich weiß nicht, ob du es gehört hast, aber das ist nicht kleiner als 5. Es ist tatsächlich gleich 5. Deshalb sind wir an diesem Punkt nicht mehr in der Schleife. Und deshalb werden fünf sozusagen nicht in das Auge aufgenommen. Sobald ich gleich fünf bin
, werden wir aus der Schleife springen. Das ist also wirklich nützlich für das Zählen, und es ist auch nützlich für einige andere Dinge, die wir schon
sehr kurz in der nächsten Vorlesung einen Blick darauf werfen werden. Allerdings sind die For-Loops, definitiv großartig. Wir können auch rückwärts zählen. Also lasst uns das einfach machen. Also lasst uns eine ganze Zahl 10 machen. Und sagen wir, Nun, ich sollte eigentlich größer als 0 sein. Und dann werden wir sagen, ich minus Minus. Und wir werden das hier ausdrucken. Und das sollte von zählen,
na ja 10, auf jeden Fall 200 schreiben. Wissen Sie noch einmal, denken Sie darüber nach. Wenn wir nicht in, sagen
wir, größer oder gleich oder kleiner oder gleich Zeichen dort. Dann normalerweise, dass die Zahl hier nicht eingeschlossen wird. Wenn wir einen größeren oder gleich als die 0 haben würde enthalten. In diesem Fall wird es eins sein. Und dann sagen wir auch rückwärts, denn das zählt rückwärts. Also gehen wir zu, die Ausgabe sollte 0 bis vier und dann 10 zu eins sein. Mal sehen, ob das tatsächlich der Fall ist. Fangen wir an. Also 0 zu vier und dann zehn zu eins, geh. Großartig. Richtig? Das ist also die for-Schleife. persönlichen Meinung nach, in der Regel vielseitiger als die while-Schleife. Aber ich denke, dass es auch ein wenig mit Vorliebe zu tun hat. Ich denke, dass es auch in verschiedenen Situationen anwendbar ist, also, na ja, das ist es für die for-Schleife, ein sehr wichtiger Teil der Programmierung, definitiv. Also, wenn es irgendwelche Fragen, wie immer, zögern Sie nicht zu fragen und ich werde sicher sein, zu antworten. Und ja.
18. (C#) Schlüsselwörter brechen: In Ordnung, äh, willkommen zurück zur C3b-Einführung für den Einheitenkurs. Und in diesem Vortrag werfen wir einen Blick auf zwei Schlüsselwörter. Diese werden brechen und weitermachen. Jetzt haben wir bereits ein bisschen von dem break Schlüsselwort in switch-Anweisung Lecture gesehen. Dies ist jedoch tatsächlich die Anwendung FOR Schleifen. In diesem Fall werden wir einen Blick auf die Pause werfen und Schlüsselwörter innerhalb der for-Schleife
fortsetzen. Insbesondere das Schlüsselwort break könnte jedoch auch in einer while-Schleife verwendet werden. Also lassen Sie uns einfach die Pause öffnen und das Skript hier fortsetzen. Und wie Sie sehen können, haben wir tatsächlich 24 Schleifen, die genau das gleiche tun. Eigentlich werden wir von 0 bis neun in beiden zählen. Und doch wird das einfach funktionieren. Was wir jedoch tun können, ist, dass wir eines dieser Schlüsselwörter verwenden können, Schlüsselwörter. wir zum Beispiel, Sagenwir zum Beispiel,wenn ich gleich vier bin, dann werden wir weitermachen. Also, was macht das? Nun, das Continue-Schlüsselwort sagt im Grunde , in
Ordnung, gehen wir einfach zum nächsten I ,
also überspringen wir das Drucken oder Protokollieren der vier. Und wir werden direkt von drei auf fünf überspringen. Also lassen Sie uns einfach sehen, Lassen Sie uns das schnell von
hier kopieren , so dass die Konsole nicht überladen wird. Und noch einmal, stellen Sie sicher, dass wir auf Lecture 15 Pause und weiter. Wie Sie sehen können, sind wir von drei direkt auf fünf gesprungen. Weil auf einer vier, so dass ich gleich 4 ist. Was wir getan haben, ist, dass wir fortfahren, Weiter, im Grunde springt einfach wieder in die Schleife und
ignoriert alles, im Grunde springt einfach wieder in die Schleife und
ignoriert alles,was danach in der Schleife kommt. Also im Grunde wird es wieder kalt und alle Zeilen danach werden ignoriert. Ja, das ist das Continue-Schlüsselwort. Nun, gehen wir zur zweiten for-Schleife. Und sagen wir zum Beispiel, wenn ich gleich fünf bin, dann wollen wir brechen. Lassen Sie uns es wirklich richtig machen, damit es schön aussieht. Ja, Pause. Wir haben das vorher gesehen, wie ich in der switch-Anweisung in hier gesagt habe, bedeutet
der Bruch einfach anstelle einer Schleife, Break bedeutet Schleifenstopps. Also break sagt, Okay, lassen Sie uns sofort auf die Rückseite der Organisation springen, bis zum Ende der Schleife ist das gleiche, als ob der boolesche Ausdruck hier oben falsch wäre. Daher brechen wir sofort aus der Schleife aus. Sehen wir uns das an. Was wir also sehen sollten, ist, dass wir 0,
2, 3, fünf bis neun sehen sollten . Und danach sollten wir 0, 2,
4 sehen , denn sobald ich fünf bin, werden
wir aus dieser Form ausbrechen. Richtig? Mal sehen, ob das wirklich das ist, was wir sehen werden. Was ich ziemlich zuversichtlich bin. Also ist es 0 zu drei und wir werden von fünf auf 901234 springen und dann war es. Ja, also ist das im Grunde die Idee des Continue and Break-Schlüsselworts. Es gibt einige Leute, die sagen, dass es nicht unbedingt die beste Praxis ist, weil es manchmal verwirrend sein kann, besonders wenn Sie vielleicht eine lange FOR-Schleife haben und Sie viele Fortsetzungen und Pausen dort mit vielleicht noch mehr if-Anweisungen und all das, dann könnte es manchmal ein wenig verwirrend für einfache for-Schleifen sein. Und während Schleifen brechen oder fortsetzen Schlüsselwort wird nicht zu schlecht sein. Das glaube ich nicht. Aber ja, so ist es für die Pause und Fortsetzung Schlüsselwörter. Auch wichtige Teile zumindest gesehen zu haben und für Schleifen zu wissen. Also, wenn es irgendwelche Fragen, wie immer, fühlen Sie sich frei zu fragen, und ich werde kurz antworten. Und ja.
19. (C#) C# Arrays: Alles klar, willkommen zurück zur C-scharfen Einführung für den Einheitskurs. Und in diesem Vortrag werden wir über Arrays sprechen. Jetzt sind Arrays ein wichtiger Teil der Programmierung. Und das erste Thema, das ein wenig komplexer und komplizierter ist. Also bitte ich Sie auf jeden Fall, diesen Vortrag vielleicht sogar zweimal anzuschauen, weil hier ein bisschen mehr drin ist. Und natürlich, wenn es irgendwelche Fragen gibt, zögern Sie nicht zu fragen. Aber lasst uns einfach reinspringen. Indem Sie das Skript öffnen. Ich habe hier schon drei Saiten vorbereitet. Wie Sie sehen können, Studenten 0, Schüler 1, und Schüler zwei, John, Juli und Ryan. sind, sagen wir, E-Mail-Adressen meiner Schüler, zum Beispiel hier. Und jetzt möchte ich
sie per E-Mail versenden oder die E-Mails ausgeben, sagen wir einfach, also können wir natürlich Debug-Punktprotokoll machen und dann können wir Student,
Student 0 sagen , und dann können wir Schüler eins sagen. Und dann können wir sagen, Student heute gehst du, jetzt habe ich die ausgegeben. Ist das nicht großartig? Nun, das ist in Ordnung. Aber sagen wir, ich habe 100 von diesen E-Mails, die etwas schwieriger werden,
als wir etwas gelernt haben, was wir tun können. Wir können diese Vier-Schleife nehmen und wir können sagen, nun, lasst uns das einfach durchgehen und dann können wir vielleicht Debug-Protokoll
sagen und dann vielleicht das Ich hier sind einige, nein, das funktioniert nicht. Offensichtlich funktioniert das nicht, oder? Das funktioniert leider nicht. Also können wir sie nicht einfach mit einer for-Schleife ausgeben und wir können nicht, wir können über sie iterieren, oder? Das ist also im Grunde das, was wir wollen. Wir wollen, irgendwie, wir wollen so etwas wie eine Liste auflisten. Und da kommt die Theorie ins Spiel. Also können wir, sagen wir init, ein Array, richtig? Die Idee ist also, dass ein Array im Grunde eine Liste eines bestimmten Typs ist. In diesem Fall werden wir eine,
einen Bereich der Zeichenfolge machen . Also werden wir String schreiben, nur das normale String-Schlüsselwort, wie wir es mit jeder anderen Variablen, String-Variable würden. Und dann werden wir diese Klammern eingeben und dann den Namen der Variablen, Student, Männer, sagen wir. Und dann können wir ein machen, wir können dieses neue Array initialisieren, indem wir es in geschweifte Klammern setzen. Und dann können wir zum Beispiel John auf gmail.com setzen. Und dann wird der zweite Juli auf gmail.com sein. Und dann wird die dritte Maria bei Gmail für example.com sein. Und dann haben wir auch Ryan auf gmail.com. Verkleinern wir uns einfach ein wenig. Und dann am Ende ein Semikolon. Und jetzt ist das, wie Sie sehen können, keine Fehler, alles ist in Ordnung. Und jetzt haben wir tatsächlich
dieses Array initialisieren ist auch eine andere Möglichkeit, dieses Array zu initialisieren. Dies ist also explizit mit vier spezifischen Strings. In diesem Fall. Wir können auch sagen, zum Beispiel, eine ganze Zahl Arrays von einigen Zahlen wie diese. Es wird gleich new int sein. Und dann auf diese Weise, also die Klammern, dann innerhalb dieser Klammern müssen wir tatsächlich schreiben, wie viele. Zahlen, oder in diesem Fall, also wie viele ganze Zahlen sind da drin? Also lasst uns einfach 5 einlegen. Das wäre also, kann fünf Einträge haben. Und dann können wir dem etwas zuweisen. Und wie weisen wir ihm etwas zu? Nun, wir können einfach den Variablennamen nehmen. Also ein paar Zahlen. Wir setzen noch einmal in die Klammern. Und innerhalb dieser Klammern, die wir nehmen, setzen
wir eine Zahl ein, die der Index des Eintrags ist. Also 0 bedeutet den ersten Eintrag. Also das, sagen wir 10, und dann lassen Sie uns das einfach schnell über 1, 2, 34. Sagen wir mal so etwas wie 2054421337, so
etwas, richtig? Sehr wichtig. Arrays beginnen dort, zählen bei 0. haben wir schon mal mit den Saiten gesehen. Und ich wollte das hier noch einmal erwähnen. Wenn wir zum Beispiel Schülermännchen betrachten, richtig, haben wir vier Elemente. Also die Größe oder die Länge dieses String-Arrays, Studenten Männchen ist vier. Das ist okay, das ist in Ordnung. Das ist verständlich. Allerdings ist das erste Element hier, John bearbeiten gmail.com. Es ist tatsächlich bei Index 0. Also wieder fangen wir an, bei 0 zu zählen. Das ist also 0, 1, 2, 3. In der Summe gibt es noch vier Elemente. Wir beginnen jedoch nur am Anfang mit 0 zu zählen. Nun, wenn wir uns das jetzt ansehen, wollten
wir alle unsere E-Mail-Adressen ausdrucken oder protokollieren, und jetzt können wir das tun. Also lasst uns einfach eine neue for-Schleife machen. Und es gibt bereits Länge hier aus. Nun, was wir tun können, ist, wir können, nun, lassen Sie uns einfach vier machen, weil wir wissen, dass wir für Studenten-E-Mails haben, das ist einfach genug. Und wir können sagen, Debug Dot Log Student sind Männer. Und dann haben wir hier Werte zugewiesen. Wir können auch einfach die Werte zurückbekommen, indem wir einfach die Klammern aufrufen. Und dann im Inneren von hier stecken
wir in die Augen, denn das ist die Zahl, die sich ändert. Also wird es von 0, 1, 2,
3 gehen , und die 4 wird nie erreicht. haben wir schon mal gesehen. Also sollte unsere Ausgabe sein, zuerst, John, Juli und dann Ryan Gmail und dann Juni, Juli Maria Ryan. Denn zuerst werden diese ausgegeben werden hier erscheinen. Dann wird die for-Schleife ausgegeben. Also lassen Sie uns sehen, um sicherzustellen, dass wir auf Lecture 16 Arrays sind. Fangen wir einfach an und wie wir sehen können, Juni und Juli, Ryan, das sind
die drei, die wir manuell gemacht haben, und dann haben wir John, Juli, Maria und einen Ryan. Großartig. Nun, ich meine, das ist erstaunlich. Also lassen Sie uns einfach eine weitere hinzufügen. Wissen Sie, die Cloud ist auch beigetreten. Ich meine, das ist ziemlich cool, oder? Das ist also wirklich nett. Lasst uns sicherstellen, dass jeder da ist und jeder hier ebenfalls enthalten ist. Fangen wir einfach an und alles funktioniert völlig gut, wie Sie sehr deutlich sehen können. Aber jetzt, nun, zuallererst. Ja, aber Wolken wurden eigentlich nicht ausgegeben. Also, das ist okay, das ist irgendwie seltsam. Aber jetzt, oh nein, sieh dir das an. Wir verlieren tatsächlich drei unserer Studenten getroffen. Also sind nur John und Juli, wissen
Sie, für dieses Semester bleiben. Ich meine, das ist, weißt du, es kann passieren. Kann passieren, aber es gibt nicht, es gibt kein Problem, das ja ist, es gibt einen Problemindex außerhalb des Bereichs. Also, was ist das? Nun, was hier passiert ist , dass wir plötzlich versuchen, auf etwas zuzugreifen, das nicht existiert. In diesem Fall haben die Studentenmänner nur zwei Elemente. So können wir eigentlich nur von,
also 0 und 1, zwei Elementen zählen . Aber hier drin versuchen wir tatsächlich, auf Element 3,
4, 5 und so weiter zuzugreifen . Das funktioniert nicht,
weil es nicht existiert. Also, was können wir dagegen tun? Weil wir es explizit gesagt haben, okay, ich werde das in zwei ändern. Aber jedes Mal, wenn sich der Schüler ändert, müssen
wir manuell eingehen und dies ändern. Nun, das funktioniert nicht. Natürlich gibt es etwas dafür und dann können
wir Studenten Männchen in dieser Länge gehen. Und das ist immer die Länge der Schülerinnen. Und jetzt wird es das durchgehen. Maria, Ryan und Klaus haben sich uns wieder angeschlossen. Und jetzt wird Klaus auch ausgegeben, weil wir ihn berücksichtigt haben. Mal sehen, da gehst du. Schließen Sie bei gmail.com, es wird auch ausgegeben. Also ja, das ist die Idee von Arrays. Es ist im Grunde eine Liste. Es kann von beliebigen Variablentypen sein, so dass jeder Datentyp, solange Sie die Klammern danach setzen, ein Array sein kann. Und in diesem Fall explizit. Lee setzte die Saiten ein. Hier sind einige ganze Zahlen. Die Zuweisung funktioniert sehr ähnlich wie das Erhalten der Ausgabe von allem, was da drin ist. Wichtig ist auch, dass Sie, wenn Sie definiert haben, wie viele Einträge in einem Array sind, die Anzahl der Einträge nicht ändern können, so dass die gleiche bleibt. Sie können das, was an dieser Position geschrieben wird, ändern, aber Sie können die Anzahl der Einträge in einem Array nicht ändern. Jetzt gibt es einige andere Dinge, die wir verwenden können, die tatsächlich diese Art von dynamischer Liste darin
haben. Das sind einige andere Datenstrukturen, die wir später nach unten betrachten werden. Arrays sind jedoch zu diesem Zeitpunkt zumindest ein wenig wichtig. Dieses etwas, das wir später verwenden können, das meiner Meinung nach etwas leichter zu verstehen ist. Moment sind Arrays jedoch das Ding. Ich würde Sie auf jeden Fall ermutigen, einen guten Blick darauf zu werfen, um wirklich zu versuchen, zu verstehen, was vor sich geht. Wenn es irgendwelche Fragen auf jeden Fall fragen. Denn dies ist wie eines der, Ich würde sagen, eines der wichtigsten Themen, aber das ist definitiv ein wichtiges Thema. Und nur für ein wenig beiseite hier, kann
ich tatsächlich eine lustige kleine Geschichte darüber erzählen. Also, als ich anfing, Programmierung zu lernen und Ära kam, Ich, am Anfang habe ich sie nicht verstanden. Deshalb bereite ich das vor, damit zu sagen, okay, das ist vielleicht ein bisschen schwieriger und ein bisschen komplexer. Und so habe ich sie am Anfang nicht verstanden. Und ich konnte einfach nicht herausfinden, was ich falsch gemacht habe. Und dann dachte ich, ich werde sowieso nie Bereiche benutzen. Ich brauche sie überhaupt nicht. Es spielt keine Rolle. Ich werde es immer so machen. Und natürlich, ich meine, zuallererst, das ist wie der falsche Weg, um sich dem irgendwie zu nähern. solltest du nie tun. Wenn Sie versuchen, etwas Neues zu lernen. Das ist definitiv nicht der richtige Weg, dies anzugehen. Aber in diesem speziell
gibt es nur einige Dinge, die Sie nicht tun können, wenn Sie kein Array verwenden oder wie wir
später das haben , als würden wir später eine Liste oder eine Art unterschiedlicher Datenstruktur sehen. Manchmal müssen Sie diese Datenstrukturen verwenden, die sich von
nur dummen Zeichenfolgen zeilenweise unterscheiden . Es funktioniert, aber irgendwann wird es nur sehr, sehr böse, schlecht, es ist einfach nicht gut. Deshalb möchte ich Sie wirklich ermutigen, das zu verstehen. Vielleicht sieh es dir ein oder zwei Mal an. Und wenn es irgendwelche Fragen gibt, zögern Sie nicht zu fragen. Und wie immer werde ich sicher antworten. Und ich hoffe, du hast das nützlich gefunden. Und ja.
20. (C#) Multidimensionale Arrays in C#: Alles klar, willkommen zurück zur C-scharfen Einführung hier für den Einheitskurs. Und in diesem Vortrag werden wir einen kurzen Blick auf mehrdimensionale Arrays werfen. Nun, nachdem wir uns Arrays angesehen haben, wir
jetzt einen Blick auf mehrdimensionale Arrays. Jetzt habe ich erwähnt, dass dies nur ein sehr, sehr schneller Überblick ist ,
nur ein kurzer Blick darauf,
wie diese aussehen und wie sie funktionieren. Und lassen Sie uns einfach das Multi-Dimension-Skript hier öffnen. Und ich habe bereits ein mehrdimensionales Array definiert. Wie Sie sehen können, setzen wir einfach ein Komma in die Klammern. Und dann innerhalb davon definieren
wir tatsächlich ein Array und dann wird der nächste Bereich auch definiert. Und dann noch eine geschweifte Klammer da herum. Also im Grunde gibt es zwei Bereiche. Anstelle eines Arrays können
Sie es als ein Array von Arrays vorstellen. Theoretisch können Sie darüber nachdenken. Oder Sie können dies als eine Tabelle betrachten, in der Sie verschiedene Zeilen haben. Wenn wir es also so schreiben würden, zum Beispiel so etwas
sagen, dann könnten Sie sich vorstellen, dass dies der erste Verkauf, die
zweite Zelle und so weiter und so weiter ist . Und dann macht es plötzlich viel sinnvoller, wenn wir darüber nachdenken. So können Sie haben, haben Sie zwei Koordinaten, um diese Zellen zu beschreiben. Und dann wäre das einfach 0, 0. Und das macht absolut Sinn. Und dann ist das etwa 0, 3 zum Beispiel, und so weiter und so weiter. Und lasst uns einfach, ich werde etwas überschreiben. Wenn wir uns das anschauen, so können wir den Inhalt oder die Elemente
des Arrays noch einmal erhalten , indem wir einfach die Klammer und dann in
die Indizes schreiben , weil wir in diesem Fall natürlich zwei Indizes benötigen . Und 03 wird etwas aus dem ersten Array produzieren. Diese 0 benachrichtigt also das erste Array. Wieder einmal fangen wir an, von 0 zu zählen und dann bedeutet die drei einfach 0123. Daher wird es 25 ausgeben. Und das zweite, es wird das zweite Array oder das an Position eins sein, eher ein Index eins. Und dann mit Index zwei, also werden wir 1, 0, 1, 2. Dies wird fünftausend öffnen. Mal sehen, ob das tatsächlich der Fall ist. Stellen Sie sicher, dass wir unter Lecture 17 sind. Und die Ausgabe ist 25 und 50 Tausend, genau wie wir uns vorgestellt haben. Und es gibt zwei Dinge, die wir gesehen haben die Länge und jetzt gibt es etwas anderes, das der Rang ist. Das ist also im Grunde, wie viele Zeilen es gibt. So wie Sie sehen können, dass dies im Grunde die Zeilen sind. Dies hat, wie viele innere Atemwege Arrays man es so beschreiben könnte. In diesem Fall, Rose, denke
ich, dass die Abstraktion, über ein mehrdimensionales Array als eine
Art vielleicht sogar eine Excel abelle zu denken , tatsächlich sehr nützlich ist. Und was wir auch tun können, ist, dass wir für Schleifen tun können. Und ich werde das schnell auch über
m kopieren , und das wäre ein zwei for-Schleifen ineinander. Eine, die im Grunde die Zeilen durchläuft, und dann eine, die jedes der Elemente selbst durchläuft. Natürlich ist in diesem Fall die Elemente die Länge. Die Länge ist also die Gesamtheit aller Elemente, oder? Wir haben acht Elemente hier, geteilt durch wie viele Zeilen dort. In Ordnung, also hat jede Zeile vier Elemente, wie Sie deutlich sehen können. Also müssen wir die Anzahl der Elemente durch die Anzahl der Zeilen teilen. Dies ist, was diese Berechnung genau hier macht. Und dann funktioniert es auch sehr wichtig ist, dass jedes der inneren Arrays, wo jede der Zeilen genau die gleiche Anzahl von Elementen wie die anderen haben muss. Wenn ich das mache, wird, wie Sie sehen können, ein Array-Initialisierer der Länge 4 erwartet. Also brauchen wir tatsächlich vier Elemente in jedem der Arrays. Also, wenn ich ein anderes Array hinzufügen würde, brauchen
wir auch vier. Das wird nur schnell erwähnt. Lassen Sie uns nur die Ausgabe dafür sehen. Und dann sind wir im Grunde mit mehrdimensionalen Arrays fertig. Ich wollte dir das nur schnell zeigen. Wie Sie sehen können, 10, 15, 20 und 25. Also wird die erste, die erste Reihe ausgedruckt und dann 5500, fünftausend und fünfzigtausend, und dann wird die zweite ausgedruckt. Also, das ist irgendwie nett. Nach meiner Einschätzung. Und meine Erfahrung, es ist sehr selten, dass mehrdimensionale Arrays verwendet werden. Allerdings wollte ich sie Ihnen zeigen, weil sie einige der Zeit eine Anwendung haben. Allerdings würde ich mir wirklich keine Sorgen darüber machen, wenn es bestimmte Dinge
gibt, die Sie zu diesem Thema nicht ganz verstehen, Das ist nicht
so schlimm, als wäre das nicht so wichtig. Bereiche selbst sind viel wichtiger als das Verständnis von mehrdimensionalen Arrays. Sie sind wie eine Art Bonus. Es ist gut zu wissen,, Es ist gut, wirklich nicht notwendig haben. Aber wie auch immer, wenn Sie das nützlich finden, würde
ich eine Rezension von Ihnen wirklich schätzen. Und wenn es irgendwelche Fragen gibt, können Sie
natürlich immer fragen, ich werde sicher sein, zu antworten. Und ja.
21. (C#) C#: Alles klar, willkommen zurück zur C-scharfen Einführung für den Kurs. Und in diesem Vortrag werden wir einen Blick auf Listen werfen. Also nach einem Blick auf Arrays und dann nur einen kurzen Blick auf mehrdimensionale Arrays. Jetzt schauen wir uns Listen an, die unser Leben
etwa 120% leichter machen werden. Und so lassen Sie uns einfach einen Blick auf das Listen-Skript werfen hier. Und zuerst erinnern wir uns an die Arrays. Statt der Bereiche. Wir hatten hier verschiedene E-Mail-Adressen von Schülern als Beispiel definiert. Und es war so einfach wie nur das,
den Datentyp und dann die Klammern einzufügen . Und dann hatten wir ein Array von einer Liste ist ein bisschen komplizierter oder vielleicht ein wenig seltsamer. Aber lassen Sie uns einfach eine Liste definieren. Lassen Sie uns eine Liste initialisieren. Also werden wir nur in der Liste schreiben. Dann machen wir diese eckigen Klammern. Und innerhalb dieser eckigen Klammern werden
wir den Datentyp schreiben, den wir dort speichern möchten. Also in diesem Fall eine Schnur und wir werden diese Männer nennen. Dann gehen Sie zu einer neuen Liste des Typs string und dann Klammern und ein Semikolon, um es zu beenden. So initialisieren Sie grundsätzlich eine Liste. Richtig? Also jetzt haben wir eine neue Liste, wie der Name neue Liste vom Typ String suggeriert, so dass wir jetzt hinzufügen können. Schauen wir uns also einige Methoden an, die wir für diese Liste aufrufen können. So können wir zum Beispiel sagen, Männchen Punkt hinzufügen, wie Sie sehen können. Und dann können wir zum Beispiel schreiben, vielleicht ist Jonah nicht mehr bei Google, vielleicht ist er an dieser Stelle bei Yahoo. Ich weiß nicht warum, aber wer weiß? Und dann lassen Sie uns das ein paar Mal kopieren und dann
ein paar Arten von Juli hinzufügen und dann werden wir Ryan nochmal hinzufügen und dann Maria. Das ist also die Add-Methode, wie Sie deutlich sehen können. Nun, das erste, woran Sie denken sollten, war, warten Sie eine Sekunde. Wir hatten, wir mussten definieren, wie viele Elemente sie in einem Array waren. Genau. Wir müssen das nicht in einer Liste tun. Eine Liste ist dynamisch. So können Sie
0 Elemente haben und Sie können mehrere Elemente hinzufügen und dann können Sie später die Zeile hinunter, Sie können auch Elemente entfernen. Und ja, das ist, das ist eines der guten Dinge, sind tolle Dinge über Listen. Also lassen Sie uns einfach ausloggen, zuerst nur Männer und dann auch Mails 0 ausloggen. Also das noch einmal, der gleiche Zugriff, der gleiche Achsenoperator, den wir mit dem Array gesehen haben, richtig? Nur die Klammern und dann die Zahl, die den Index von dem angibt, was wir wollen. In diesem Fall wird es auf yahoo.com gezeichnet. Und dann sehen wir einfach, was passiert, wenn wir Männer ausloggen, nur um zu sehen. Also lassen Sie uns den Play-Button drücken und sehen. Okay, also werden wir Systemsammlungen generische Liste. Also etwas, das für uns nicht wirklich nützlich ist, nicht wirklich. Allerdings können wir hier tatsächlich sehen John auf yahoo.com bekommt. Das protokollierte. Wenn wir das erste Element der Liste abmelden, oder das 0te Element der Liste. Ich schätze. Wir könnten auch Werte neu zuweisen. Also neu zuweisen Werte, das ist sehr ähnlich dem, tatsächlich ist es genau das gleiche, als wir es mit dem Array getan haben. Also mal sehen, John ist wieder zurückgewechselt. Also ist John eigentlich wieder bei Gmail. In diesem Fall ändert sich
das Element John bei yahoo.com zu John auf gmail.com. Wir können auch einen Artikel entfernen. So entfernen Sie sie gehen entfernen Sie ein Element. Und das wäre, wenn wir Männchen Punkt entfernen nennen. Und dann können wir entfernen. So können wir ihm eine Schnur übergeben. Also können wir sagen, okay, ich möchte, dass eine bestimmte Zeichenfolge entfernt wird. So zum Beispiel, Juli auf yahoo.com. Damit das funktioniert, müssen
wir natürlich wissen, welches Element wir entfernen wollen, von denen, die das nicht wissen, aber wir kennen den Ort, wo es ist. Wir können auch sagen, Männchen Punkt zu entfernen und dann in einem. Das ist also gleichwertig. Jetzt kann ich es natürlich nicht nacheinander tun, denn nachdem wir den Juli entfernt haben, wird
Ryan plötzlich das Ding, das an Ort eins steht. Deshalb funktioniert das nicht. Wenn wir die Länge einer Liste wollen, können
wir das auch bekommen. Das wäre also zum Beispiel
wichtig für, für Loops oder jemanden wie diesen. Dann benutzen wir Count. Die Zählvariable ist also das, was wir brauchen. Das ist also die Länge. Länge: Manchmal nennen einige Leute es auch die Größe oder die Anzahl der Liste. Und in verschiedenen, in verschiedenen Programmiersprachen, ist
dies fast austauschbar Länge, Größe und Anzahl. Aber in unserem Fall ist
es die Zählung in diesem Moment, in diesem, in diesem Skript, sollte
es drei sein, weil wir eines der Elemente hier entfernt haben, nämlich Juli auf yahoo.com. Und dann können wir auch die Liste löschen. So Männchen Punkt-Punkt-Punkt klar. Dies wird, dieser Aufruf wird buchstäblich die Liste löschen. Also wird es einfach alles komplett auslöschen, was da drin ist. Und lassen Sie uns die Zählung danach auch ausdrucken. Mal sehen, was hier passieren wird. Wir werden das haben. Nun, das brauchen wir nicht mehr. Wir werden John auf yahoo.com ausdrucken. Dann werden wir den ersten neu schreiben. Dann werden wir sagen, Hey, wie viel, wie viele Elemente sind da drin? Das ist sollte drei sein. Und dann werden wir die Liste löschen. Also sollte nichts mehr in der Liste sein und dann sollten wir 0 haben. Statt dessen. Mal sehen, ob das der Fall ist. Aber ich bin ziemlich zuversichtlich, dass sie gehen. Zunächst einmal drucken wir John auf yahoo.com aus. Dann haben wir drei Elemente in der Liste. Nachdem wir das eine Element entfernt haben, und dann nach dem Löschen der Liste haben wir 0 Elemente darin, sie gehen. sind also einige der Dinge, die wir mit Listen tun können. Wenn Sie sich ansehen, also wenn wir Mail-Stat tun, wie Sie sehen können, gibt es einige ziemlich viele weitere Methoden, die wir aufrufen könnten. In diesem Fall. Ich wollte Ihnen nur einen kurzen Überblick über die Liste geben. Es ist, wenn Sie Arrays verstehen, verstehen
Sie im Grunde Listen. Und das Tolle ist, dass Listen in fast jeder Hinsicht besser sind als in einem Bereich. Weil sie dynamisch sind. Sie können zu ihnen hinzufügen. Und ihre insgesamt, ich denke, ein viel schöner, die Arrays in der Regel zu verwenden, oder? Insgesamt würde ich sagen, dass es normalerweise am besten ist, immer Listen zu verwenden. Weil Freigabe Nr. Nehmen wir an, positive Auswirkungen der Verwendung von Arrays im Vergleich zu Listen. Es mag einige sehr spezialisierte Dinge geben, aber es ist wie bei fast allem. Weißt du, wenn du 100 Leute fragst, dann bekommst du 100 Meinungen. So ist es manchmal auch so. Wie auch immer, das ist ein kurzer Überblick über die Liste in C scharf. Ich hoffe, dass das für Sie nützlich war. Und wenn es irgendwelche Fragen wie immer, zögern Sie nicht zu fragen und ich werde sicher sein, zu antworten. Und ja.
22. (C#) C#: Alles klar, willkommen zurück zur C-scharfen Einführung für den Einheitskurs und dieser Vorlesung, wir werden einen Blick auf Wörterbücher werfen. Nun, Wörterbücher sind im Grunde Listen mit einem kleinen Twist zu ihnen. Also lassen Sie uns einfach das Wörterbuch-Skript öffnen und sehen, was wir sehen können. Zunächst einmal, wie definieren oder initialisieren wir ein Wörterbuch? Nun, wir werden nur ein Wörterbuch schreiben. Und dann noch einmal die eckigen Klammern. Und jetzt müssen wir eigentlich zwei verschiedene Typen angeben, oder nicht zwei verschiedene Typen, sondern zwei Arten von Datentypen. In unserem Fall werden wir eine Zeichenfolge und eine Schnur machen. Diese sind also durch ein Komma getrennt. Jetzt werden wir das Hauptstädte nennen. habe ich meine Gründe,
die in Kürze ersichtlich werden. Und dann ist gleich neu. Und dann, wie Sie sehen können, gibt es uns im Grunde schon einen Vorschlag, dass wir
einfach mit einem Klick oder Drücken der Tab-Taste automatisch füllen können , indem Sie die Klammern und das Semikolon hinzufügen. Und dann gehen sie, wir haben ein neues Wörterbuch. Jetzt funktioniert ein Wörterbuch folgendermaßen. Also ist es im Grunde kartiert. Also lasst uns das einfach aufschreiben. Ein Wörterbuch ordnet einen Schlüssel zu. In unserem Fall ist das eine Schnur, richtig? Weil dies der erste Datentyp ist, den wir
dem Wörterbuch einen bestimmten Wert gegeben haben , der auch eine Zeichenfolge ist. Nun, das ist im Grunde der, der Schlüsselwert. Die Dynamik wird als Schlüsselwertpaar bezeichnet, weil sie paarweise kommen, oder? Und das wird nun mit Großbuchstaben gezeigt werden. Die Idee ist, dass, na ja, wenn Sie ein Land haben, das wäre der Schlüssel, dass Sie immer einen bestimmten Wert für sein Kapital haben. Das ist hübsch, ziemlich leicht verständlich. Und dann können wir hier einfach neue Einträge hinzufügen. Zum Beispiel, wenn wir in Mexiko setzen, dann können wir in Mexiko-Stadt als Hauptstadt setzen. Und dann lassen Sie uns das einfach rüber kopieren. Ein paar Male. Deutschland wäre Berlin, und dann haben wir Frankreich mit Paris. Und zu guter Letzt USA mit Washington DC. Das sind nun einige Beispiele, die wir dazu hinzugefügt haben. Wir haben zuvor in der gesehen, sowohl das Array als auch die Liste, dass wir bestimmte Elemente
darin bekommen können , indem wir die Klammern verwenden und dann den Index einfügen, den wir wollen. Nun, in diesem Fall funktioniert das eigentlich nicht. Wie Sie deutlich sehen können, funktioniert 0 nicht, weil es tatsächlich einen bestimmten Schlüssel will, nicht den Index. Wenn wir also eine Zeichenfolge innerhalb von hier einfügen und zum Beispiel Deutschland sagen, dann bekommen wir Berlin,
denn Deutschland ist der Schlüssel für den Wert Berlin, z. Keine Fehler mehr. Und wenn wir hier zurück gehen, um sicherzustellen, dass wir bei Lecture 19 und Wörterbüchern sind. Dann können wir sehen, dass Berlin ausgeloggt wird, weil in der Tat der Wert für den Schlüssel Deutschland ist. Das ist also nicht anders, als eine Liste zu haben. Aber anstatt die Schlüssel die Position in der Liste zu haben, haben
wir tatsächlich etwas anderes. Wir können auch einen Artikel entfernen. Also zum Beispiel, weil ich Hauptstädte Punkt entfernen, und dann können wir einfach Frankreich entfernen, richtig? Und das wird eigentlich diesen Eintrag hier im Grunde löschen. Also dann können wir nicht wirklich bekommen die, bekommt einen Wert Paris aus ihm heraus, weil es tatsächlich hat. Entfernen Sie dann das gesamte Erfassungsjahr. Und wenn wir dann für Großbuchstaben Punktanzahl gehen, was die Anzahl der Elemente innerhalb des Wörterbuchs sein würde. Dies sollte dann 3 sein, nachdem wir Frankreich entfernt haben. Wie Sie sehen können, ist das so einfach wie es geht. Ja, und das ist im Grunde ein, im Wörterbuch. Ein Wörterbuch, das auf viele verschiedene Arten unglaublich nützlich ist. Es kann im Grunde einen Datentyp einem anderen Datentyp zuordnen. In unserem Fall setzen wir eine Zeichenfolge an eine Zeichenfolge. Es könnte natürlich etwas anderes geben. Zum Beispiel könnten wir die Zeichenfolge auf eine ganze Zahl haben, und dann wäre dies zum Beispiel
die Anzahl der Menschen, die in dem Land leben oder das BIP oder etwas anderes. So können wir es tun, wir könnten alle möglichen Dinge mit dem Wörterbuch machen. Ich kann definitiv sagen, dass es am besten ist, damit auch ein wenig herumzuspielen. Es gibt einige weitere Methoden, die Sie auch aufrufen können. Nun, ja, das ist, das ist ungefähr ein kurzer Überblick über Wörterbücher. Und ich hoffe, du hast das nützlich gefunden. Wenn es irgendwelche Fragen, wie immer fühlen Sie sich frei zu fragen, und ich werde sicher sein, zu antworten. Und ja.
23. (C#) C#) Foreach Loop: Alles klar, willkommen zurück zur C-scharfen Einführung für den Einheitskurs. Und in diesem Vortrag werden wir einen Blick auf die for-each Schleife werfen. Dies wird also ein sehr schneller Vortrag sein, der nur kurz auf die,
auf eine andere Art von Schleife schaut . Also, nachdem wir gesehen haben, dass wir Listen verwenden können und wir haben gesehen, wie wir sie im Grunde mit einer normalen for-Schleife durchgehen können. Wir werden jetzt tatsächlich in eine, eine andere Schleife schauen. Dies wird die for-each-Schleife genannt. So können wir einfach ein foreach als Schlüsselwort eingeben. Und innerhalb der Klammern werden
wir eine neue Variable definieren, in diesem Fall eine Zeichenfolge namens male. Dann werden wir in das Schlüsselwort schreiben in so i n, und dann werden wir die Sammlung eingeben. Das wird Männchen sein. Und dann im Inneren von hier, werden Sie Recht haben, Debug Dot Log Male und sie gehen. Und das ist die For-Each-Loop-Idee ist, man kann es im Grunde einfach laut auslesen und es wird Sinn für jede Saite männlich bei Männern machen. Und dann machen wir alles, was sich innerhalb der geschweiften Klammern befindet. Also in diesem Fall werden wir es einfach abmelden. Es könnte auch andere Dinge geben, die wir vielleicht tun wollen. Eine Sache, die in für jede Schleifen erwähnt wird, können
wir die Sammlung wirklich ändern. Wir können die Elemente selbst ändern, aber nicht die Sammlung in ihrer Gesamtheit. Also können wir nicht einfach etwas aus der Sammlung entfernen, dann wird die for-each-Schleife brechen, die wir nur in normalen for-Schleifen tun können, sagen wir. Und selbst das, es ist nicht ganz, was würdest du sagen? Es ist nicht ratsam. Richtig. Aber mal sehen, ob das funktioniert. Wir müssen eigentlich kein bestimmtes Element in der for-each-Schleife angeben. Stellen Sie sicher, dass wir bei Lecture 20 für jede Schleife sind. Rufen wir das an. Also der erste, John July Ryan, Maria, und dann haben wir Separator, John July, Ryan und Maria. Also wird alles so verschlossen, wie wir es erwarten würden. Und das ist die für jede Schleife. Das funktioniert natürlich auch für Wörterbücher oder andere Sammlungen. Wir werden uns andere Kollektionen nicht im Detail ansehen. In dieser Einleitung. Es gibt aber auch andere, und das würde auch theoretisch
für Wörterbücher funktionieren , oder? Das ist nur ein kurzer, kurzer Blick. Ich bin bei der für jede Schleife. Ich hoffe, dass du etwas Neues gelernt hast. Und wenn es irgendwelche Fragen, wie immer fühlen Sie sich frei zu fragen, und ich werde sicher sein, zu antworten. Und ja.
24. (C#) Namensräume: Alles klar, willkommen zurück zur C-scharfen Einführung hier für den Einheitskurs. Und in dieser Vorlesung werden wir einen kurzen Blick auf einen Namensraum werfen. Also, was sind Namespaces? Nun, öffnen wir es einfach, das Namespaces-Skript und mal sehen. Also habe ich dir von Anfang an gesagt, dass
wir das meiste Zeug hier oben ignorieren werden, das
meiste von dem, was hier geschrieben steht. Aber jetzt werden wir uns diese drei Dinge ansehen. Vor allem das using-Schlüsselwort und dann was auch immer nach ihnen geschrieben wird. Das sind also Namespaces. Und die Idee von Namespaces ist im Grunde von ihnen als Verzeichnisse, in denen bestimmte Klassen aufbewahrt werden, bestimmte Skripte werden in aufbewahrt. Das ist der einfachste Weg, sie zu konzeptualisieren. Und wir können dann auf diese Funktionalitäten und diese Klassen zugreifen, wenn wir sie verwenden. Zum Beispiel gibt es einen bestimmten Namespace für die UI der Einheit. So gibt es zum Beispiel etwas, das eine Schaltfläche genannt wird, die offensichtlich eine Schaltfläche ist, die wir in Unity verwenden können. Aber wie Sie sehen können, ist es nicht, es existiert nicht. Wenn ich hier den Button einfüge, zeigt
er nichts an. Wenn ich jedoch hier rauf gehe und sage, mit Unity-Engine, wi, dann plötzlich dreht sich dieser Knopf hier,
dreht sich diese blaugrün Farbe. Und das sagt mir, haha, ich kann es wirklich benutzen. Und ich kann es verwenden, weil ich die Unity-Engine mit einem Namespace hier drin habe. Und wenn wir den Mauszeiger darüber zeigen, wie Sie sehen können, Namespace, Unity-Engine wi. Und wir können Namespaces auch für uns selbst verwenden. Das funktioniert also auch. Wir können eine für das vorhandene Skript hinzufügen. Zum Beispiel schreiben wir nur Namespace. Dann setzen wir den Namen des Namespace ein. Normalerweise würde ich sagen, dass jetzt, wo Sie einen Namen für Ihr Projekt haben, also ist das eine Art Konvention. Sie haben einen Namen für das Projekt. Dies, wir werden nur unser Projekt nennen, in diesem Fall Tutorial. Und dann können Sie das auch mit Namespaces unten teilen. So können Sie Verzeichnisse Namespace innerhalb eines Namespace erstellen. Aber wir müssen es nicht so machen, wo wir landen, zum Beispiel, tun einige wie Namespaces. Namespaces, richtig? Wir müssen das nicht tun. Das funktioniert auch, richtig? Und dann, was ich tue, ist, dass ich das schnell kopiere und sie gehen. Dann haben wir die Klasse anstelle eines Namespace. Nun, wir müssen das nicht unbedingt tun. Ich werde Ihnen jedoch kurz danach zeigen,
wie Sie es dort tatsächlich automatisieren können, so dass es automatisch jede neue Klasse, die Sie erstellen, in einen Namespace
hinzufügt. Also müssen Sie diese Markierung hier nicht tun, also müssen Sie nicht all dies auswählen, wissen Sie,
steuern X4, um es auszuschneiden, Control V, um es einzufügen, alles zu
speichern und dann müssen Sie das nicht tun. Wir können das tatsächlich automatisieren. Ich wollte dir nur zeigen, wie
du das machen könntest, wenn du hier keinen Namensraum hast. Aber normalerweise würde ich trotzdem empfehlen, mit einem Namespace zu beginnen. Uh, aber ja, wir müssen eigentlich nicht zwei Namespaces definieren. Also in diesem Fall wäre diese Namespaces-Klasse zugänglich, wenn wir so wären, wenn wir in einer anderen Klasse sind, dann müssten wir Tutorial-Punkt-Namespaces einfügen, und dann können wir es verwenden. Jetzt sind wir offensichtlich jetzt gerade in diesem speziellen Blut Fett Verzeichnis, sagen
wir, damit wir es trotzdem verwenden können, aber weil wir hier zwei Namespaces haben, können
wir auch einfach diese Namespaces machen. Und das wird uns tatsächlich ein bisschen sparen, ziemlich viel Platz hier, denn dann können wir tatsächlich
alles so machen und dann ist es nicht zu viel eingerückt, denn wenn wir es hätten,
also zum Beispiel, bin ich nicht sicher, ob Unity UI noch mehr Namespaces darunter hat, tut es nicht. Aber einige von ihnen, wie Sie sehen können. So System, dass die Sammlung von generischen hat wie drei bereits. Nun generisches hat nichts mehr, aber es könnte sein, vielleicht ist es irgendwann wie und dann ist es generisches W2 und im util dot core oder was auch immer. Sie können also mehrere Namespaces ineinander haben. Daher ist es am besten, es
jedoch alle in einer Zeile zu haben. Idee ist, dass Sie Ihre Codebasis trennen möchten. Wenn du also 100 Skripte hast, dann hast du einfach nicht in deinen Ordnern herumfliegen, dann kann das, nun ,
zuerst, es wird zu meinem Gott führen, wo ist mein Drehbuch? Wo war das? Ich weiß nicht, was das macht. Und mit den Namespaces können
Sie im Grunde
bestimmte Gruppen von Skripten und Klassen erstellen , die zusammenarbeiten und einen bestimmten Zweck haben. Zum Beispiel möchten Sie vielleicht alle Ihre Feinde Skripte in einen bestimmten Namespace einfügen. Das wäre zum Beispiel Tutorial-Punkt-Feinde. Oder du willst all deine Kämpfe in Sachen in die Kampfklassen setzen, in deinen spezifischen Namespace, der zum Beispiel tutorial.com sein
könnte, so etwas. Und vielleicht haben Sie einige Schnittstellen, die wir in einem späteren Video betrachten werden, was das in einer späteren Vorlesung ist. Einige Dinge, die Sie im gesamten Code verwenden werden. Sie können das zum Beispiel in die YouTube-Klasse Tutorial dot util einfügen. Das wären Dinge, die bei allem helfen würden. Wie die Mathematik war
Mathematik F in gewisser Weise eine Util-Klasse. Und wo Sie bestimmte andere Dinge haben, die Sie möglicherweise in einen Kernnamespace einfügen möchten. Es gibt also viele Anwendungen für sie. Moment würde ich jedoch sagen, dass
das Wichtigste nur ist, dass ich raten würde, sie definitiv zu benutzen. Und wenn ich auch in unserem Fall beraten würde, denn dies ist im Grunde nur eine C-scharfe Art von Tutorial-Vortrag dazu. Ich habe nicht, ich habe nicht so gut von einer Struktur hier innerhalb des Skript-Ordners. Was ich jedoch persönlich raten würde, was Sie tun, ist, dass Ihr Skript-Ordner. Das Skript sollte also immer der Root-Namespace sein. Also es, so alles, jedes Skript, das innerhalb des Skripts sein würde. Also, wenn ich einen neuen Bereich erstelle, nur zum Teufel, lesen Sie diesen. Theoretisch oder in diesem Testskript. Ich würde möchten, dass dies im Namespace-Tutorial ist. Und dann, wenn ich einen anderen Ordner hier habe, also zum Beispiel Namespaces, würde ich möchten, dass jede Klasse, die sich innerhalb dieses Ordners befindet , die Folienpunkt-Namespaces sind. Also spiegeln Sie im Grunde Ihre Ordnerstruktur mit Ihrer Namespace-Struktur wider. Aber machen wir uns jetzt keine Sorgen. Das ist nur eine Warnung, über die wir uns keine Sorgen machen müssen. Und jetzt können wir es auch so machen, dass jedes neue Skript, das wir erstellen, bereits einen Namespace zugewiesen bekommt. Und wir können das tun, indem wir auf Projekteinstellungen bearbeiten gehen. Und dann innerhalb des Redakteurs gehen Sie ein wenig nach unten. Und dann, wie Sie sehen können, C-Sharp-Projekt-Generierung, Root-Namespace. Und wir werden nur Tutorial sagen. Und das war's. Ich werde das speichern, indem ich auf Control S klicke und dann werden wir hier ein neues Skript erstellen. Wir werden das nur nennen, nennen wir es festlich. Sicher. Und wenn wir dann dieses Skript öffnen, dann können Sie sehen, generiert mit dem Namespace-Tutorial. Und das ist im Grunde alles, was es für diesen Moment in der Zeit gibt. Ich glaube nicht, dass es etwas anderes für Namespaces gibt, ist nur eine kurze kleine Sache. Und es ist nicht das Wichtigste, aber es ist immer noch etwas, das, besonders wenn Sie wirklich ein Projekt machen wollen, wirklich kein Spiel machen würde, dann würde ich empfehlen, in die, auch die Konventionen von Namespaces. Wir werden uns das am Ende der C-scharfen Einführung ansehen. Auch noch einmal. Allerdings habe ich nur etwas zu denken und irgendwie wichtig für die Erweiterbarkeit und auch code-rote Verständlichkeit des Codes
zu verstehen, um im Grunde
halb-getrennte Funktionsneuheiten des Codes an verschiedenen Orten zu haben , richtig ? Das war es für diesen Vortrag. Ich hoffe, du hast es nützlich gefunden. Wenn es irgendwelche Fragen gibt, wie immer, zögern Sie nicht, mich zu fragen, werde ich sicher sein, zu antworten. Und ja.
25. (C#) (C#): Alles klar, willkommen zurück zur C-scharfen Einführung hier für die kinetischen Kerne. Und in diesem Vortrag werden wir einen Blick auf Methoden werfen. Jetzt sind Methoden ein großer Teil der Programmierung und C scharf im Allgemeinen. Also, nun, lasst uns keine Zeit verschwenden und sehen, was wir sehen können, indem wir das Methoden-Skript öffnen. auch sicher, dass wir auf Lecture 22 Methoden sind. Und lass es uns einfach öffnen und sehen, was wir sehen können. Also haben wir, sagen wir,
Methoden in ein wenig in der Zusammenfassung gesehen , wo wir ein paar Methoden für Strings hatten, zum Beispiel, wir haben diese gesehen. Wir haben auch gesehen, dass wir Methoden durch den Punkt-Operator zugreifen können. Und ja, das waren ein paar Dinge von Methoden, die wir gesehen haben. Und nun schauen wir uns ein Beispiel für
einmal an, warum Methoden unter bestimmten Umständen wirklich nett und wirklich gut zu verwenden wären. Und auch,
lasst uns einfach hier anfangen. Werfen wir einen Blick auf. Also im Moment, was wir tun wollen, ist, dass wir die faktorielle berechnen wollen. So können wir das tun, indem wir sehr einfach nur sie so etwas
tun und es dann auf das setzen, was wir wollten, dass die faktorielle zwei berechnen. Factorial ist einfach alles. Also, wenn wir zum Beispiel faktorial fünf wollen, wäre
dies genau das fünfmal viermal dreimal zweimal eins. Das ist also die faktorielle, so ist es definiert. Und das wollten wir jetzt einfach berechnen. Also dann setzen wir die faktorielle Zahl, und dann haben wir eine for-Schleife, die wir von
Zahl minus eins gehen , bis ich größer oder gleich eins ist. Und dann zählen wir das tatsächlich herunter. Und dann sagen wir faktorielle Zeiten gleich I. Und das ist genau das, was das tut, weil faktorielle beginnt bei fünf, ich beginne mit fünf minus eins. Also um vier, deshalb, gehen
wir durch und wir mal ich, dass so 5 mal 4. Und dann wird der nächste 5 mal 4 mal 3 sein, und so weiter, bis wir eins erreichen, und dann sind wir fertig. Also, wenn wir jetzt ein Debug-Pot-Log-Factorial tun, und dann tun Sie diesen Weg um einen Sprung. Und dann sparen wir faktoriell. Und wir können das tatsächlich ausdrucken oder in der Konsole abmelden. Und fangen wir einfach bei C an. Was das ist, faktorial ist 2, 120. Faktorial 5 ist also 120. Jetzt. Und jetzt meine Sache ist, naja eigentlich, was ich will, ist, dass ich faktorial für acht verschiedene Zahlen will. Ich ging zum Beispiel faktorial, für sieben und ich wollte auch für Nacht, und ich will es auch für D. Und ich dachte darüber nach, es für 11 als auch. Und jetzt geraten wir in ein Problem, denn jetzt müssen wir
das nehmen und vielleicht achtmal oder so etwas kopieren. Und das ist natürlich. Das ist absolut lächerlich. Es ergibt keinen Sinn. Das ist, was Methoden des Krieges. Also können wir im Grunde das Ganze hier nehmen und es in
eine Methode setzen und es dann so oft aufrufen, wie wir wollen. Und um das zu tun, was wir tun werden, ist, dass wir außerhalb
dieser gespeicherten Methode gehen , weil dies übrigens auch eine Methode ist. Und diese Methode wird aufgerufen, wenn eine bestimmte, äh, wenn das Spiel im Grunde beginnt. Lassen Sie uns den einfachsten Weg, dies jetzt zu konzeptualisieren. Also gehen wir außerhalb der geschweiften Klammer hier, und wir werden folgendes eingeben. Wir werden in public int und dann den Namen der Methode faktorial eingeben. In ihm werden wir int Nummer schreiben, und ich werde schnell erklären, was das bedeutet. Jetzt werden wir vorerst einen Pfeil haben. Die Sorge darüber, wir werden das bald genug beheben. Ich werde nur schnell erklären,
erklären, wie die Idee dieser Methode und was,
was all
dies, das wird der Zugriffsmodifikator genannt. Wir werden uns das auch ein wenig später ansehen. Also im Grunde, was die Zugriffsmodifikatoren sind und was genau sie tun. Public in diesem Fall bedeutet
einfach, dass wir von überall aus darauf zugreifen können. Wir haben auch den Rückgabetyp. Dies ist also der Datentyp, der vom Aufruf dieser Methode zurückgegeben wird. In diesem Fall handelt es sich um eine Ganzzahl. Wie Sie hier in der Startmethode sehen können, ist tatsächlich ungültig. Und leere bedeutet, dass es nichts zurückgibt. Integer gibt in diesem Fall offensichtlich eine ganze Zahl zurück. Dann haben wir den Methodennamen, dann haben wir die Klammern. Und im Inneren gibt es Parameter und der Parametertyp wird zuerst angegeben und dann der Parametername. In diesem Fall wollen wir ihm eine,
eine ganze Zahl namens Zahl geben. Und diese Zahl ist im Grunde diese Zahl hier, die wir hier benutzt haben. Also nehmen wir das einfach und kopieren es über. Jetzt ein paar Dinge, die wir eigentlich nicht brauchen. Wir müssen hier nur faktorisch sein. Und wir müssen das nicht wirklich tun. Und das müssen wir sowieso nicht tun. Lassen Sie mich nur tun müssen, tatsächlich können wir es
sogar ein bisschen einfacher machen, indem Sie Nummer machen, gehen sie. Und dann hier müssen wir nur das durch Nummer ersetzen und dann ist es es. Und dann auch zurück, Rückkehr faktorial, das Ego. Und das ist die faktorielle Methode jetzt getan. Und was wir jetzt tun können, ist, wenn wir das einfach schnell kopieren und wir sagen mit einer Methode, dann können wir sagen faktorial als 25, so
etwas wie Methode ist. Und dann nennen wir faktorial. Und wie Sie sehen können, ist es tatsächlich hier mit dieser Art von Würfel da drin. Und dann passieren wir es, zum Beispiel sechs. Und dann kopieren wir es einfach und lassen Sie es auch fünf machen, nur damit wir sicherstellen können, dass es tatsächlich funktioniert. Aber ich bin mir ziemlich sicher, dass es so ist. Und Sie können sehen, wir können auch sehen, dass dies ein ist, hat zwei Referenzen, weil in diesem Fall unsere Methode 2 mal 1, 0, 1, 1 hier aufgerufen wird. Und mal sehen, ob das tatsächlich etwas bewirkt, aber ich bin mir ziemlich sicher, dass es so ist, ja. Eine 120. Und dann mit der Methode ist auch ein 120, wenn wir es an die fünf übergeben und die sechs ist 720. Methoden sind also ein unglaubliches Werkzeug und etwas, das wirklich, wirklich wichtig ist. Es gibt einige Kernzähne von Methoden, zum Beispiel, dass jede Methode nur eine Sache und eine Sache allein tun sollte. Die Namen sollten nicht zu lang sein, so etwas. Aber das sind einige Konventionen, die, wie ich schon sagte. Oh, also werden wir auch einen Blick auf das Ende der C-scharfen Einführung werfen. Moment sind Methoden einfach eine Möglichkeit, im Grunde bestimmte Anweisungen zu
enthalten, die wir tun möchten. Viele Male. Es ist eine Möglichkeit von Knoten, Code wiederzuverwenden, ohne ihn zu kopieren. Das ist auch eine Art Art Art und Weise, Methoden zu konzeptualisieren. Es ist also eine Möglichkeit, Code wiederzuverwenden, ohne ihn zu kopieren. Und das ist immer ein guter Hinweis, wenn Sie es kopiert haben. Wenn wir also diesen faktoriellen achtmal R-Code brauchen würden, wie ich schon sagte, wäre
das ein Hauptkandidat, um
sicherzustellen , dass es eine Methode daraus gibt, weil
es Sinn macht, wenn sobald Sie beginnen, vielleicht wenn Sie beginnen, etwas zweimal zu verwenden, können
Sie darüber diskutieren, na ja, ich brauche keine Methode dafür. Aber wenn Sie beginnen, eine bestimmte Codezeilen zu verwenden, wie zum dritten Mal, ist
es an der Zeit, eine Methode daraus zu machen. Ich denke, das ist das eine gute Faustregel. - Ja. Aber das sind die C-Sharp-Methoden. Ich wollte auch erwähnen, dass Menschen sie manchmal als Funktionen bezeichnen können. Es ist im Grunde das Gleiche. Normalerweise sind nach meiner Einschätzung von dem, was ich gehört habe, eine Methode an Objekte gebunden und Funktionen sind irgendwie wie freies Floating. Aber in der Regel können Sie, es gibt Synonyme füreinander. Also kann ich sagen, dass dies C-Sharp-Funktionen oder C-Sharp-Methoden sind. Normalerweise sollte jeder verstehen, dass sie gleich sind. Aber es könnte einige Leute geben, die wie wirklich pedantisch waren wie. Das ist nicht richtig. Schriftsteller, wie es mir gut geht, ja. Richtig. Dies wäre eine Methode. Eine Funktion ist etwas anderes. Sie können jedoch die Begriffe austauschbar verwenden, oder? Das war es für die Methodenvorlesung. Ich hoffe, du hast es nützlich gefunden. Und wie immer, wenn es irgendwelche Fragen gibt, zögern Sie nicht, zu fragen und ich werde sicher sein, zu antworten. Und ja.
26. (C#) der Methode: Alles klar, willkommen zurück zur C-scharfen Unterbrechung für den Einheitskurs. Und in diesem Vortrag werden wir einen Blick auf Überlademethoden werfen, oder auch Methodenüberladung genannt. Dies ist also im Grunde eine Fortsetzung dessen, was wir mit den Methoden tun können und doch so wenig,
etwas, das halb wichtig ist zu wissen, was man tun kann. Also lasst uns einfach das Überladeskript hier öffnen und sehen, was wir tun können. Das erste, was wir tun werden, ist, dass wir
eine neue Methode erstellen und sie
eine ganze Zahl zurückgeben lassen und sie mit zwei Parametern multiplizieren, a und b und wie der Name schon sagt, wird
es eine mal B. Nun, die Definition einer solchen Methode ist unsinnig in dem Sinne, dass, naja, es ist ziemlich einfach, ein mal b zu schreiben und selbst wenn wir mehrere Parameter hier drin haben, also a, B, C, D, E, F, G vielleicht die ganze Alphabet. Wir könnten es immer als mal b mal c schreiben und so weiter. Normalerweise ist diese Art von Methode nicht etwas, das wir wirklich brauchen. Es ist jedoch leicht, mit dieser Methode das Konzept
der Methodenüberladung zu demonstrieren . Also, was wir tun können, ist, dass wir protokollieren können, also Debug Dot Log. Und dann können wir tun, multiplizieren und dann zum Beispiel, etwas wie 10 und drei. Das würde also 30 zurückgeben. Mal sehen, ob das tatsächlich funktioniert. Stellen Sie sicher, dass die Methode korrekt ist. Vortrag 23, Überlastung wie die Szene und mal sehen, ja, es ist 30, also ist das ziemlich gut. Und jetzt können Sie tun, ist, dass wir eine zweite Methode definieren können, auch Multiply genannt. Das ist, wo es interessant wird. Es muss also genau den gleichen Namen haben wie dieser. Der Name muss also auch mit Groß- und Kleinbuchstaben identisch sein, da er gleich sein wird. Was wir jedoch tun können, ist, dass wir die Anzahl
der Meter ändern können und dann ist dies eine, eine überladene Methode. Zum Beispiel, wenn wir die ganze Zahl c hier als Parameter hinzufügen, und dann machen wir dies, und dann können wir zum Beispiel
ein mal B mal C zurückgeben . Wir könnten auch zurückgeben, nebenbei bemerkt, das ist nur ein Beispiel. Wir können auch multiplizieren AB mal C zurückgeben. Zum Beispiel könnten wir, wir könnten das zurückgeben, oder? So können wir, wir könnten die andere Methode nennen. Und wie Sie jetzt sehen können, gibt es keine Fehler. Obwohl ich zwei Methoden mit dem gleichen Namen habe. Wie funktioniert, wie weiß das Programm, was man nehmen soll? Einer hat drei Parameter und einer muss dauerhaft sein. Wenn wir das also mit Control C kopieren und dann Control V einfügen, können wir
sehen, wenn wir mit dem Multiplizieren beginnen, können
wir tatsächlich sehen, dass es gibt, habe ich das falsch geschrieben? Ich habe NEIN nicht geleugnet. Multiplizieren. Werde ich wütend? Ich werde nicht verrückt, okay. Für eine Sekunde dachte ich, dass dies multipliziert wird. Nun, was wir tun müssen, ist ja, wir müssen damit anfangen. Tut mir leid, genau. Also, wie Sie sehen können, einer von zwei. So erkennt er, dass es zwei Methoden gibt, die man multiplizieren nennt. Und er ist wie, Okay, einer von ihnen hat int a und b und ein, äh, nimm diesen Pfeil, klicke auf diesen Pfeil, dann können wir in A in B und C sehen dann können wir das zum Beispiel nehmen, wir können 524 zum Beispiel sagen. Und dann auch das Debug-Punktprotokoll schließen. Das funktioniert also auch. Und dann ist das letzte, was wir tun können, zum Beispiel, mit Schwimmern zu multiplizieren. Also werden wir einen Float zurückgeben und wir werden Floats noch einmal multiplizieren, ein mal b
zurückgeben ist nichts verrückt in diesem Fall. Und dann können wir das auch kopieren. Und dann zum Beispiel, sagen Sie etwas wie 3.512 für F, zum Beispiel. Und das ist, Es ist das gleiche, es ist der gleiche Name für alle drei Methoden. Der einzige Unterschied besteht darin, dass ein Teil der Methodensignatur ist. Dies wäre also der,
der Zugriffsmodifikator, der Rückgabetyp, der Name und die Parameter. Das sind sie. Einige dieser Dinge sind unterschiedlich, nämlich die Umfänge und vielleicht auch der Rückgabetyp. Und das ist eine Methodenüberladung. Es kann manchmal passieren, manchmal gibt es einige Methoden, die unterschiedliche Anzahl von
Parametern haben , weil vielleicht gibt es etwas, das kann, wissen
Sie, eine Methode kann ein oder zwei oder drei verschiedene Parameter genannt werden, und einer von ihnen ist in Ordnung. So können wir die Methode mit einem oder in diesem Fall mit 23 aufrufen. Und dann könnten wir das natürlich noch hinzufügen, oder? Wir könnten auch eine Multiplikation mit a, B, C, D, und so weiter und so weiter haben. Aber nur, zeigt Ihnen nur, dass Sie Methoden haben können, mehrere Male mit dem gleichen Namen, aber verschiedenen Signaturen definiert
sind, wie die unterschiedliche Anzahl von Parametern oder verschiedene Arten von Parametern. Und das ermöglicht es Ihnen, diese Methoden zu überladen. Es ist ein wichtiges Konzept, das man auf jeden Fall gesehen hat. Und das Beste, was hier zu tun ist, einfach ein wenig
herumzuspielen, besonders nach Methoden. Das ist eine Art nächster großer Schritt. Und dann ist die Methodenüberladung ein wenig darüber hinaus. Also würde ich definitiv vorschlagen, nur ein wenig damit herumzuspielen, nur ein paar Methoden mit einigen der vorherigen Schlüsselwörter und
Strukturen und Aussagen
zu definieren , die wir gelernt haben , damit ein wenig zu spielen und einfach sehen, was Sie sehen können. Und dann ist das das Beste, was ich kann. Grundsätzlich Ratschläge an dieser Stelle, richtig? Ich hoffe, dass Sie das nützlich gefunden haben. Wenn es irgendwelche Fragen wie immer, zögern Sie nicht zu fragen und ich werde sicher sein, zu antworten. Und ja.
27. (C#) Kurse und Objekte: In Ordnung, lassen Sie uns mit der C-scharfen Einführung hier für den Einheitskurs fortfahren. Und in diesem Vortrag werden wir einen Blick auf Klassen und Objekte werfen. Wahrscheinlich eines der wichtigsten Themen in C-Sharp in diesem Fall. Weil C scharf, wie Sie vielleicht wissen, eine objektorientierte Programmiersprache
ist. Und Klassen und Objekte sind eine
der grundlegendsten Bausteine dieser Art von Abstraktion. Objektorientierte Programmierung ist also nur eine Abstraktion. Also sagen wir, dass alles ein Objekt ist. Und bestimmte Objekte haben Mitglieder und Methoden. Und wir können neue Objekte und neue Klassen erstellen. Und ja, schauen wir uns das mal an. Anstatt also unsere Klassen und Objekte Skript zu öffnen, werden
wir tatsächlich ein neues Skript erstellen, indem wir mit der rechten Maustaste auf den Ordner 24, 25 Klassen Objekte klicken und dann zu erstellen und dann C scharfes Skript. Und wir werden diese Akte Frucht nennen. Gleich nachdem wir die Frucht-Datei erstellt haben, könnte hier eine Warnung bekommen. Mach dir deswegen keine Sorgen. Das spielt momentan keine Rolle. Wichtig ist, dass wir diese Fruchtklasse und diese Fruchtfeile erstellt haben. Und ich werde darauf doppelklicken und wir werden es dann öffnen. Jetzt, wie Sie sehen können, ist hier ein Haufen Zeug, und das wollen wir eigentlich nicht. Auch zu beachten, haben wir jetzt zwei Dateien geöffnet. Wenn Sie also auch die Klassenobjekte öffnen, haben
Sie beide geöffnet und können sie wechseln. Sie sind nur einfache Tabs wie in einem Browser im Grunde. Und das sind die verschiedenen Klassen, die wir jetzt offen haben. Wir werden jetzt alles löschen, was hier drin ist. Also werden wir einfach alles markieren. Und dann werden wir Enter drücken, so dass alles gelöscht wird. Und dieses Modellverhalten und dieser Doppelpunkt werden auch gelöscht, so dass wir hier nur öffentliche Klasse Obst geschrieben haben, und dann die geschweiften Klammern, und das war's. Das ist alles, was wir hier drinnen wollen. Und dann innerhalb unserer Klassen und Objekte sind
wir wieder anstelle der Startmethode und wir könnten tatsächlich schon etwas tun, aber lasst uns an eine Frucht denken. Wir wollen also eine neue Frucht kreieren. Nun, wenn wir an eine Frucht denken, na ja, was bedeutet eine Frucht Hälfte? Also denken wir über eine Art von Attributen einer Frucht nach, oder? Eine Sache, die eine bestimmte Frucht haben könnte, ist eine Nummer, ein Name, richtig? Also Mango, das ist ein Name für eine Frucht und eine Banane. Und hätte auch einen Apfel, richtig? Das wäre also ein Name für eine Frucht. Also haben alle Früchte einen Namen. Ich würde sagen, das ergibt Sinn. Jetzt könnten wir denken, nun, welche Attribute hat auch eine Frucht? Nun, vielleicht hat es einen Zuckergehalt, oder? Vielleicht leben wir gesund und du willst wissen, dass ich den Zuckergehalt wissen will, weißt
du, lass uns einfach sicher sein. Also besser, das zu wissen, oder? Das ist also der Zuckergehalt. Und dann könnte vielleicht eine andere Sache zum Beispiel eine Farbe sein. Also werden wir eine neue Zeichenfolge namens Farbe machen. Richtig? Nun diese drei Attribute, das ist, was wir Felder nennen würden. sind also Felder dieser besonderen Klasse, Frucht. Und man kann sie als die Attribute betrachten, die jede Frucht hat, oder? Jede Frucht hat also einen bestimmten Zuckergehalt, jede Frucht hat eine bestimmte Farbe und jede Frucht hat einen bestimmten Namen. Nun, es könnte viel mehr Attribute geben, als wir jetzt haben. Es gibt also viel mehr als diese drei. Aber wir werden bei diesen drei bleiben, nur um es einfach zu machen, oder? Und jetzt können wir das eigentlich schon nutzen und wir können tatsächlich schon etwas mit Wurzeln machen, damit wir hier tatsächlich eine neue Frucht kreieren können. Also, was wir tun werden, ist, dass wir Obst eintippen werden. Und wie Sie sehen können, schlägt es uns
das eigentlich schon vor , und wir werden eine neue Frucht kreieren, und wir werden es Banane nennen. Und dann sagen wir gleich neue Früchte, und dann enden wir mit den Klammern. So, als ob wir eine Methode aufrufen, wie Sie sehen können, gibt es hier keinen Fehler. Und das sollte nicht zu verrückt sein. Dieser Teil der Konstruktion ist also einfach wieder eine Deklaration einer Variablen. Das ist also nichts wie es keinen Unterschied zwischen diesem Jahr und in x gibt. Im Grunde ist dies einfach eine neue Variable, die wir erstellt haben. Und diese Variable ist in diesem Fall von Fruchtart. Das einzige, was sich hier geändert hat, ist, dass wir nicht die primitiven Datentypen verwenden. Also die primitiven Datentypen für string und integer und so weiter und so weiter. Jetzt haben wir eine Art komplexer Datentyp erstellt, aber wir haben unsere eigene Klasse erstellt, und das heißt Fruit. Und in diesem Jahr die Aufgabe im Grunde. Und wir haben das Mu, wir haben das neue Schlüsselwort, das wir mit den Listen zuvor gesehen haben. Und jetzt haben wir jedoch eine neue Frucht geschaffen. Und das mag anfangs etwas seltsam erscheinen. Dies ist jedoch im Grunde nur das, äh, äh, es ist im Grunde wie ein Methodenaufruf. In diesem Fall
haben wir jedoch den Konstruktor codiert. Dies ist also eine ganz spezielle Methode, die mit Klassen und Objekten zusammenhängt. Auf diese Weise erstellen wir tatsächlich eine neue Instanz dieser Klasse. Und ja, also mal sehen, was wir eigentlich auch tun können, ist, dass wir das eine Banane benutzen
können und wir können mit dem Punkt-Operator machen. Wir können tatsächlich, wie Sie sehen können, gehen
Sie und greifen auf die Farbe und wir können auf den Namen und die Achse, den Zuckergehalt zugreifen. So können wir tatsächlich auf alle diese Felder zugreifen, wie Sie sehen können, wie sie genannt werden. Und, und doch können sie zugegriffen werden. Zum Beispiel könnten wir sagen, nun, ein Bananenpunktname entspricht einer Banane, zum Beispiel. Was Sinn ergeben würde. Allerdings müssten wir in der Frage hier tatsächlich
jedes von ihnen durchgehen und
einen neuen Bananen-Punkt-Namen erstellen und dann 80 Nano-einen Bananen-Punkt-Zuckergehalt gleich, ich weiß nicht, wie 15 und so weiter und so weiter. Nun, das scheint etwas langweilig zu sein. Allerdings können wir es tatsächlich ein wenig einfacher machen, indem wir
diesen Konstruktor verwenden und tatsächlich unser eigenes Konstrukt erstellen. Es gibt also einen einfachen Weg, mit dem wir unseren eigenen Konstruktor erstellen können. Und das ist, indem Sie Alt drücken. Geben Sie ein. Wie Sie sehen können, dann erhalten Sie diesen Generate Constructor Vorschlag hier, und wir werden dies tun und jetzt können wir wählen, welche Mitglieder wir wollen. Also können wir nur das Häkchen hier setzen müssen. Wir müssen sagen, okay, welche Mitglieder wollen wir als Parameter im Konstruktor haben? Wir werden nur lassen, haben alles ausgewählt und sagen,
okay, und dann, wie Sie sehen können, hat
es einen neuen Konstruktor für uns mit Parametern hier und auch den Zuweisungen erstellt. Das Schlüsselwort bezieht sich also einfach auf das Objekt, das erstellt wird. Also müssen Sie im Grunde zwei Dinge trennen. Die Klasse selbst ist im Grunde eine Vorlage ,
aus der wir dann ein Objekt erstellen und das dann existiert. Und dann haben wir auch die Parameter, die wir hier durch den Konstruktor übergeben, und diese sind auch getrennt. Sie werden dann jedoch im Objekt gespeichert. Wie Sie hier jetzt sehen können, erhalten
wir tatsächlich einen,
einen Fehler, weil es kein Argument gegeben , das dem erforderlichen formalen Parameternamen entspricht, und so weiter und so weiter. Was das bedeutet, ist, dass wir hier nicht genug Parameter haben und dann können wir das beheben. Nun, wir könnten es reparieren, indem wir
Banane einlegen und dann einen Fruchtgehalt und dann eine Farbe. Oder weil was passiert, ist das, bevor es funktionierte und warum funktioniert es nicht jetzt? Nun, wir haben tatsächlich den normalen Konstruktor, den,
den, den grundlegenden Konstruktor außer Kraft gesetzt . Und das ist einfach, das war das. So Obst. Oh, da gehst du. Und dann haben wir das überschrieben, weil wir unser eigenes geschaffen haben. Und das im Grunde, wenn Sie eine neue Klasse haben, wird
dies normalerweise generiert. Das ist also immer da drin, auch wenn du es nicht siehst. Sobald Sie jedoch Ihren eigenen Konstruktor erstellen, funktioniert
das im Grunde nicht mehr. Und jetzt müssen wir es explizit eingeben und sagen: Okay, das ist jetzt auch Konstruktor und dann funktioniert das. Wie Sie jetzt sehen können, gibt es keinen Fehler mehr. Aber was wir jetzt tun können, ist, dass wir eine neue Frucht schaffen können. So können wir zum Beispiel sagen, ein, ein Apfel. Ein Apfel ist eine neue Frucht. Und das hat den Namen Apfel. Und es hat
zum Beispiel einen Zuckergehalt von 10 und eine Farbe von Rot. Und so haben wir nun einen Apfel mit dem Namen
Apfelzuckergehalt von 10 und dann die Farbe Rot geschaffen . So können wir zum Beispiel Debug Dot Log sagen, und dann könnten wir einen Apfelpunktnamen sagen. Und dann lassen Sie uns einfach alles ausdrucken oder protokollieren, den Zuckergehalt und auch die Farbe. Richtig? Mal sehen, ob das funktioniert. Sicherstellen, dass wir auf Vorlesungen 24, 25 Klassen und Objekte sind. Und lasst uns einfach diesen Apfel 10 laufen und lesen, nun, ist das nicht toll? Das ist ziemlich nett. Das klappt wirklich gut. Und lassen Sie uns einfach einmal schnell zurück, noch
einmal zu der Frucht hier. Und eine Sache, die zu beachten ist, dass wir uns in, denke
ich, zwei Vorträgen ansehen werden. Es ist das öffentliche Schlüsselwort hier. Wir werden herausfinden, was das ist. Wir haben dies sehr kurz mit dem Zugriffsmodifikator gesehen, sorry, mit den Methoden. Das war also der Zugriffsmodifikator. Und wir haben das mit den Methoden gesehen, die wir auch öffentlich gemacht haben. Dies bedeutet einfach, dass wir in diesem Fall auf diese Variablen zugreifen dürfen. Und ja, das ist im Grunde die Idee, die ich einfach schnell reinlegen werde. Das ist also der Konstruktor sehr wichtig und wird verwendet, um neue Instanzen zu erstellen. Also, das ist im Grunde Klasse dieser Klasse. Sie können also sagen, nun, das ist eine neue Instanz. Also hier ist der, ein Apfel eine neue Instanz, oder Sie können sagen, dies ist ein neues Objekt. Diese Art von austauschbar. Aber ja, das ist der grundlegende Überblick über die Klassen und Objekte und auch, wie man sie erstellt. Ein weiteres Beispiel, nur so dass ich Sie mit verlassen, ist, Sie könnten denken, zum Beispiel,
ein, Sie könnten an einen Feind denken. Und ein Feind könnte eine Klasse sein. Also hätten wir eine feindliche Klasse. Und dann
hat eine Emmy Klasse zum Beispiel ganzzahlige Trefferpunkte und so weiter und so weiter. Und das ist vielleicht eine Sache, die ein wenig enger mit der Spielentwicklung selbst verwandt ist. Allerdings denke ich, es gibt Obst Beispiel zeigt auch ein wenig, Ich würde auf jeden Fall vorschlagen,
die nächsten paar Vorträge zu betrachten , bevor Sie versuchen, ein paar Dinge. Also würde ich sagen, dass wahrscheinlich, bis wir bei Lecture 28 durch, wo wir über die Eigenschaften sprechen. Ich denke, du solltest diese durchschauen und dann, wenn wir mit ihnen fertig sind, dann denke ich, dass du dann mit den Klassen und Objekten herumspielen kannst. Es gibt noch ein paar Dinge, die wir uns ansehen müssen, bevor Sie können, bevor ich Ihnen vorschlagen würde, dass
Sie wirklich eintauchen, natürlich können Sie jederzeit eintauchen und neue Dinge ausprobieren, sobald Sie wollen. Aber das ist nur ein einfacher Vorschlag von mir. Aber ja, das war es für den Unterricht und die Objekte hier. Sehr wichtig. Wenn es irgendwelche Fragen, wirklich fühlen Sie sich frei zu fragen, und ich werde sicher sein, zu antworten. Und ja.
28. (C#) Class: In Ordnung, lassen Sie uns mit der C-scharfen Einführung für den Einheitskurs fortfahren. Und in diesem Vortrag werden wir einen Blick auf die Mitglieder der Klasse werfen. Und das ist im Grunde ein bisschen eine Vertiefung des Verständnisses der Klassen. Werfen wir einen Blick auf unsere Obst-Klasse und denken zurück. Also hatten wir die,
diese Variablen, die wir deklariert haben. Und das sind Felder, richtig? Sie sind jedoch auch Mitglieder. Mitglieder sind also im Grunde eine ausgefallene Art zu sagen, nun, das ist Teil einer Klasse und ein Feld bedeutet einfach, dass dies eine Variable ist. Nun enthalten andere Mitglieder zum Beispiel eine Methode. Also lassen Sie uns einfach eine neue Methode erstellen. So zum Beispiel, eine öffentliche Leere, essen Obst, die einfach gehen, um Folgendes zu tun. Also das ist, wir bekommen die Formatierung richtig. Da gehst du. Dies wird einfach Dot Log Fruit debuggen. Und dann werden wir sagen, dieser Name wurde gegessen, oder? Also in diesem Fall brauchen wir eigentlich nicht die, dieses Schlüsselwort hier Name kann vereinfacht werden. So können wir auch einfach schreiben Namen, weil das Programm gut weiß, es bedeutet, dass dieser Name. Verwenden Sie jedoch persönlich manchmal das Schlüsselwort, dieses Schlüsselwort, obwohl es nicht erforderlich ist. In meinem Fall denke ich, manchmal macht es es es ein wenig klarer und Sie können ein wenig näher sehen, okay, das, mit dem,
diesem Schlüsselwort, es ist gemeint ein, im Grunde ein Mitglied oder ein Feld dieser bestimmten Klasse. Aber das ist eine stilistische Wahl. Du musst das nicht tun. Ich wollte nur erwähnen, aber jetzt haben wir eine neue Methode namens Obst essen. Was können wir damit machen? Ich meine, ist es so einfach, wie
zum Beispiel nur eine Apfelpunktfrucht anzurufen ? Und ja, Eigentlich ist das, wie einfach es ist. So ein Apfelpunkt essen Obst, wie Sie sehen können, und Sie können jetzt auch sehen, dass es einige andere Methoden, die wir nennen könnten. sind einfach Dinge aus der Objektklasse, die jedes Objekt ist, ist im Grunde ein Teil von. Aber wir haben das erschaffen, Obst essen, und wir werden das nennen, und wir werden sehen, was passiert. Also, wenn wir das tun, dann nach der roten Ausgabe, sollten
wir sehen, dass Obst, Apfel gegessen wurde. Das ist, was die Ausgabe sagen sollte. Also lasst uns gehen. Das funktioniert tatsächlich. Nun, wenn wir beginnen sie gehen und Obst, Apfel wurde gegessen. Nun, das ist ziemlich gut. Das ist ziemlich gut. Ja, und wir können alle möglichen Dinge mit diesen Methoden im Grunde tun. Also in diesem Fall ist
es eine Leere, so dass es nichts zurückgibt. Allerdings können wir natürlich auch andere Dinge tun und verschiedene Methoden erstellen, die verschiedene Dinge zurückgeben. So werden wir sehen, zum Beispiel, in kommenden Vorträgen ist, wenn wir unseren Zugang Modifikator trainiert, vielleicht müssen wir etwas tun. Sie sind so etwas. Und das ist wirklich cool. So können wir die neuen Klassen erstellen, die nicht nur verschiedene Variablen enthalten,
sondern auch unterschiedliche Funktionen haben, in denen wir diese Variablen verwenden und sie möglicherweise manipulieren
können. Und ja, das ist eines dieser Dinger. Alles in allem sind die Mitglieder im Grunde nur Teile der Klasse. Also in diesem Fall Felder, die im Grunde nur Variablen sind. Und dann gibt es auch neue Methoden, die wir für
diese Objekte und für diese Klassen aufrufen können , aber für Objekte können wir sie auf der spezifischen Instanz aufrufen. In diesem Fall ein Apfel. Wir könnten natürlich auch sagen, dass ein Bananenpunkt Obst isst. Das würde auch funktionieren. Ja, und das heißt, ich wollte es dir nur zeigen. Also vor allem die Methode. Das ist ziemlich cool. Und dann auch nur sicherstellen , dass Sie die Terminologie im Grunde zumindest ein wenig verstehen. Es ist nicht unbedingt notwendig, aber ich wollte es dir nur geben,
den Boden, den du kennst. Das sind also Felder. Und dann ist dies eine Methode, und das ist ein Mitglied und Felder sind auch Mitglieder. Ja, das war's also für die Klassenmitglieder. Kleiner Vortrag. Ich hoffe, du hast es nützlich gefunden. Wenn es irgendwelche Fragen wie immer, zögern Sie nicht zu fragen und ich werde sicher sein, zu antworten. Und ja.
29. (C#) Statische Mitglieder: In Ordnung, lassen Sie uns mit der C-scharfen Einführung hier für den Einheitskurs fortfahren. Und in diesem Vortrag werden wir einen Blick auf das statische Schlüsselwort werfen. Wir haben schon ein paar Schlüsselwörter gesehen, aber jetzt ist das statische Schlüsselwort auch ein Teil von Klassen und Objekten. Also werden wir immer noch die Früchteklasse brauchen. Aber wir brauchen auch mündlich diese Grippeklasse und das Fruchtskript in diesem Fall und auch das statische Schlüsselwortskript. stellen sicher, dass wir auf Lecture 26 sind, in diesem Fall
statisch. Und lassen Sie uns einfach das statische Schlüsselwort-Skript öffnen. Und bevor wir hier drin etwas tun können, müssen
wir das Fruchtskript noch einmal ändern. Und wir werden ein neues Feld erstellen, und das wird ein statisches Feld sein. Also werden wir einen neuen öffentlichen statischen int machen. Wir können diese Zahl von Früchten nennen. Dies ist also ein neues statisches Feld, das eine Zahl von Früchten genannt wird. Also im Moment tut es nichts. Es sitzt nur da, wie Sie sehen können, wenn ich darüber schwebe, können
Sie sehen, dass es Feld,
statisch, int Obst, Anzahl Früchte sagt . Hier geht also nichts ganz Besonderes vor sich. Nun, was wir tun werden, ist jedes Mal, wenn dieser Konstruktor aufgerufen wird, werden
wir sagen, Anzahl von Wurzeln plus, plus. Jetzt wird dies ein Problem haben, weil dies
tatsächlich im Moment nicht wirklich initialisiert ist . Also werden wir sagen, nun, das ist gleich 0, weil es im Moment keine Früchte gibt, oder? So ist diese Zahl der Früchte Anzahl der Früchte. Lasst uns einfach wissen, was, lasst uns sein, lasst uns gute Programmierer sein und sonst nennen es tatsächlich Anzahl der Früchte, weil die BER, das ändert sich wirklich nicht viel, wenn es um den Namen geht. Die Anzahl der Wurzeln ist also gleich 0. Und dann werden
wir jedes Mal, wenn ein Konstruktor aufgerufen wird, diese Anzahl von Socket aufrufen. Das ist okay, das ist in Ordnung. Und dann essen wir die Früchte. Wir können auch sagen, nun, wie wäre es, dann werden wir tatsächlich zu Minus-minus es, weil es gegessen wurde. Die Frucht ist also Gott, auch wenn sie nicht ganz weg ist, so dass sie technisch nicht weg ist. Lass uns einfach so darüber nachdenken. Nun, okay, aber ich meine, das bringt uns nirgendwo hin, denn wenn eine Frucht das hat, können
wir eine neue Frucht kreieren, zum Beispiel wieder eine Banane. Und wir werden neue Früchte sagen. Und es wird nichts sagen. Amino k ist. Dann können wir sagen, nun, eine Banane punktet eine Reihe von, na ja, Anzahl von Froude, Nummer Froude. Warum können Sie nicht darauf zugreifen? Nun, das ist komisch. Nun, wenn wir uns das ansehen, ist
dies nicht aufrufbar, da dies in diesem Fall ein statisches Member oder ein statisches Feld ist. Aber auch statisches Element konnte nicht vom Bananenobjekt abgekühlt werden. Nun, wir müssen es eigentlich über die Klasse nennen. Also müssen wir tatsächlich in Obst Punkt Anzahl von Früchten eingeben. Und das ist das Verrückte daran, nun, lassen Sie uns eigentlich einfach Dot protokollieren. Denn dann können wir tatsächlich sehen, dass dies
eins sein sollte , nachdem wir dieses neue Essen kreiert haben, lasst uns das einfach retten. Es ist eigentlich der Fall. Und dann werde ich Ihnen erklären, warum das statische Schlüsselwort so genial ist. Interessant, Also, das ist ein 0. Wir können, ich bin sicher, dass wir herausfinden können, warum. Also lasst uns darüber nachdenken. Nun, weil wir dies in diesen Konstruktor und in diesem Konstruktor gesetzt haben. Nun, das ist natürlich ein echtes Problem. Also lasst uns das einfach rüber kopieren und es auch hier reinlegen. Also, wenn wir diesen Konstruktor aufrufen, werden
wir auch die Anzahl der Wurzeln erhöhen. Dann bin ich mir ziemlich sicher, dass wir vor einem Tag haben werden, und da ist der eine. Warum ist das statische Schlüsselwort so großartig. Nun, wir nennen dies, indem wir die Klasse selbst verwenden. Also sagen wir Fruchtpunktanzahl der Früchte. Warum ist das irgendwie etwas Besonderes oder so? Nun, diese Variable, dieses Feld in diesem Fall, ist eigentlich völlig unabhängig von jeder einzelnen Frucht. Bei der Anzahl der Früchte
ist es also nicht wirklich sinnvoll zu speichern, wie viele Früchte mit jeder Frucht sind. Denn vor allem macht
es wirklich keinen Sinn, denn
warum sollte eine Banane wissen, wie viele Früchte es in dieser Weltmauer gibt, wie eine bestimmte Banane. Der Grill ergibt keinen Sinn. Aber auch, dass jede einzelne Frucht würde wissen, wie viele Lebensmittel es gibt. Weißt du, das ist, das ergibt keinen Sinn. Sie könnten also auch diese Art einer globalen Variablen aufrufen. Ich sage das mit, wissen Sie, mit Vorsicht, aber Sie können es als eine globale Variable vorstellen, die für die Klassenfrucht existiert, nicht einmal für jedes der Objekte, die aus der Frucht erstellt werden. Es existiert also nur einmal. Sie können sich die statische vorstellen, kann auch sein, Sie können in diesem Fall auch statische Methoden haben. wir also statisch. Und dann könnten wir einfach sagen, vermeiden Sie zum Beispiel, und dann bekommen Sie einfach Nummer. Lass es uns tun. Ja, bekommt die Anzahl der Früchte. In diesem Fall. Wir sind eigentlich, lassen Sie uns dies zu einer Ganzzahl machen und dann diese Rückgabeanzahl von Früchten davon haben. Natürlich ist
es in diesem Fall nicht wirklich notwendig, nur um die Tatsache zu veranschaulichen, dass wir auch statische Methoden haben können. Statische Methoden die meiste Zeit würde ich die meiste Zeit nicht sagen, aber einige der Zeit können zum Beispiel eine Art von Hilfsmethoden sein. Sie können eine Art Generator-Methoden sein. So könnte man so etwas wie ein Publikum haben, Obst zu suchen, Früchte zu erzeugen. Also, dann würde es eine zufällige Frucht erzeugen. So zum Beispiel. Ja, die Idee von statisch ist jedoch nur, dass es nicht an ein bestimmtes Objekt gebunden ist, sondern an die spezifische Klasse gebunden ist. Das ist also wirklich wichtig. Manchmal, besonders am Anfang. Der Unterschied kann vielleicht ein
wenig missverstanden werden oder vielleicht ein wenig schwieriger zu erfassen sein. Aber ich denke, wenn Sie, sobald wir los sind und wir ein paar weitere Beispiele dafür sehen, bin
ich sicher, dass wir es ein bisschen schneller herausfinden werden. Okay, was ist das? Wie funktioniert das? Was genau ist das? Aber im Moment, was ist das sagen, dass das statische Schlüsselwort wirklich nützlich? Und Sie können auch diese letzte Sache sehen. Also, wenn ich diese Punktanzahl von Früchten mache, wie Sie sehen können, funktioniert
das nicht, weil dies genau das Gleiche ist, wie wir es vorher getan haben, wo eine Bananenpunktanzahl der Wurzeln nicht funktioniert, weil die Anzahl der Früchte nicht
an eine bestimmte gebunden ist Objekt einer Frucht oder als Beispiel einer Fruchtpressen, die an die Klasse gebunden sind. Das ist es für das statische Schlüsselwort. Ja, es ist unglaublich nützlich. Es kann wirklich nützlich sein und
es gibt, es gibt viele echte Anwendungen dafür. Und in der Zukunftwerden
wir definitiv mehr und mehr
davon sehen, werden
wir definitiv mehr und mehr
davon sehen während wir die C3b-Einführung durchlaufen, sowie in den Einheitsteil des Kurses gehen, weil sie sind, werden wir viele haben statischen Methoden und auch Feldern. Also, ja, wenn es irgendwelche Fragen gibt,
zögern Sie nicht , zu fragen und ich werde sicher sein, zu antworten. Und ja.
30. (C#) Zugriffsmodifikatoren: In Ordnung, lassen Sie uns mit der C-scharfen Einführung für den Einheitskurs fortfahren. Und in diesem Vortrag werden wir einen Blick auf Zugangsmodifikatoren werfen. Also Zugriff Modifikatoren, wir haben
den öffentlichen Zugriff Modifikator gesehen , bevor
wir über Methoden und auch, wenn wir über Klassen gesprochen haben. Und jetzt werden wir im Grunde noch tiefer in diese eintauchen und sehen, was die verschiedenen Typen sind und was gut wir mit ihnen geschehen können. So zum Beispiel, Lassen Sie uns einfach
unser Zugriffsskript öffnen und auch sicherstellen, dass wir das Skript der Person öffnen, die hier ist. Das heißt, wir werden die Person-Klasse in diesem Fall verwenden, und wir werden nicht mit der,
äh, mit der sehr schönen Frucht-Klasse fortfahren . Wir bleiben jetzt bei Person. Also, was hat die Person? Nun, sagen wir einfach, eine Person hat einen Vornamen und eine Person hat einen Nachnamen. Und das werden beide öffentlich sein. Und diese wären jetzt überall zugänglich. Jetzt überall bedeutet natürlich nicht wie buchstäblich überall. Aber innerhalb unseres Programms, überall im Programm, wenn Sie eine neue Person erstellen, könnten Vor- und Nachname ausgelesen werden. Okay, das ist fair, das ist nicht zu verrückt. Wir könnten auch denken, nun, vielleicht haben wir eine ganze Zahl h und wir wollen, dass das geschützt wird. So geschützt int Alter. Und das ist jetzt ein bisschen komplexer. Und das ist grundsätzlich für die Klasse selbst zugänglich. Also alles, was ich innerhalb
der geschweiften Klammern hier zwischen für diese Klasse schreibe , richtig? Also, wenn ich hier eine Methode habe, kann
ich gehen, um zu altern, sie zu ändern und sie zu benutzen. Was ich beende. Dies kann auch zugegriffen werden, so zugänglich, so zugänglich für alle für sich selbst, richtig? Dies ist also von der Klasse selbst, von diesem abgeleitete
Endklassen. Nun, das ist ein bisschen komisch. Okay, was ist das? Nun, das ist kalt im Erbe und darüber wird in einem zukünftigen Vortrag gesprochen werden, sehr wichtig. Ich wollte Ihnen jedoch das geschützte Schlüsselwort zeigen, in diesem Fall ist es
in der Personenklasse verwendbar, aber nein, nicht außerhalb davon. Also, während ich verwenden könnte, könnte ich machen, zum Beispiel, jetzt lasst uns das letzte machen und dann werden wir ein Beispiel dafür sehen. Der letzte wäre also privat. Und das ist zum Beispiel eine Zeichenfolge. So zum Beispiel eine Sozialversicherungsnummer. Das scheint etwas zu sein, das wahrscheinlich am besten wäre, nur zugänglich zu sein. Nur für diese Klasse zugänglich. Weil wir weder vorgelesen werden wollen,
noch würden wir wollen, dass dies von außen verändert wird. Wenn wir also den Konstruktor erstellen, indem erneut Alt drücken und dann in Generate Constructor drücken, werden
wir alle vier Felder als Umfang haben. Und wir bleiben einfach dabei. Ich mag das. Gnade. Dann könnten wir zum Beispiel an so etwas denken. So könnten wir auch eine private oder öffentliche Methode erstellen. Also lassen Sie uns eine private bool ist trinken Alter, zum Beispiel, wir könnten das tun und dies könnte dann
ein boolesches Alter größer oder gleich 21 zurückgeben , wenn wir in den Vereinigten Staaten sind, wenn wir Hürde in Deutschland sind, zum Beispiel diese wäre 16. Je nachdem, welche Art von Alkohol. Lasst uns das einfach aus der Gleichung lassen. Bleiben wir einfach bei 21 in diesem Fall. Wie Sie sehen können, Alter, kein Problem. Ich kann hier drinnen darauf zugreifen. Ich kann es ändern. Auch die soziale Sicherheit, meine ich habe es hier geändert. Kein Problem vorbei, wenn Sie jetzt in unser Zugriffsskript gehen und wir werden eine neue Person erstellen. Also werden wir eine Person von Frederick erschaffen. Also halt die Klappe zu dir. Und wir werden eine neue Person erschaffen. Und natürlich ist FirstName Rhetorik, und dann wird der Nachname Johnson sein. Wenn ich es tippen kann, gehen
sie und er wird 26. Und Sozialversicherungsnummer, ich meine, ich habe keine Ahnung. Also lasst uns so etwas reinlegen. Ich mag es, oder? Das ist also großartig. Jetzt haben wir ein neues Objekt namens Frederick, also neue Variable namens Phosphor. Und wir werden sagen Debug Dot Log. Und dann können wir zum Beispiel Frederick sagen, diesen Vornamen. Das ist völlig in Ordnung. Wir können FirstName ausdrucken. Wir können auch, wenn wir uns die Vorschläge ansehen, den Nachnamen ausdrucken. Wie Sie sehen können, meine ich, dass sowohl das Alter die Sozialversicherungsnummer fehlt und auch fehlte, ist die Methode, die wir geschaffen haben. So können wir dies tun, aber sowohl h und Sozialversicherungsnummer und nicht zugänglich. Das ist genau richtig. Also haben wir, weil der geschützte möchte ich sagen, nur zugänglich in der Klasse selbst. Also, während das jetzt privat ist, sagen wir vielleicht, okay, weißt du was, das kann öffentlich sein. Das ist etwas, das vielleicht wichtig für die Leute zu wissen ist. Als ob ich die EG des Trinkalters verlassen habe. Wir können auch sagen, haben eine Methode, die heißt, ist ein Wahlalter, zum Beispiel, richtig? Und dann,
je nach Land, ändert sich das natürlich . Lassen Sie uns das einfach abstrahieren und einfach sagen, okay, oder das Trinken Alter ist jetzt 21. Und wir können das tun, und wir müssen nicht einmal sein Alter theoretisch enthüllen, oder? Also können wir einfach so etwas tun und sagen wir einfach so etwas wie Ken, Person, trinken. Und dann können wir einfach sagen, boo Rhetorik Punkt ist des Trinkalters und dann nennen dies, und das wird jetzt eine Boolean und B zurückgeben Wir können darauf zugreifen. Also mal sehen, natürlich, mit einer 26, die Person kann nicht trinken. Also mal sehen, wenn wir Lecture 27 haben, Zugang offen. Frederick Johnson, kann jemand trinken, wahr? Mal sehen, ob wir das ändern. Also, wenn wir den Namen hier ändern, oder besser gesagt das Alter zu, sagen wir 20. Was natürlich in unserem Fall wäre. Weniger als 21, dann Ken Person Ring sollte falsch drehen. Da gehst du. Genau das wollte ich sehen. Und das Tolle daran ist, dass wir nicht einmal das Alter öffnen müssen, oder? Also, das ist wirklich gut. In unserem Fall wir es natürlich nicht wissen. Ok. Ist die Person über 21 oder unter 21 ,
aber wir würden das Alter der Person nicht direkt kennen. Dies ist in unserem Fall teilweise nützlich, da es hier keinen echten Anwendungsfall gibt. Dies natürlich, nur um es zu veranschaulichen. Aber ja, das sind die drei Zugangsmodifikatoren, öffentlich, geschützt und privat. Normalerweise ist dies nur etwas, das eine sehr gute Praxis ist. Alles sollte privat sein, außer wenn es
wirklich gute Gründe gibt , es nicht privat zu haben oder es von außen zugänglich sein muss. Dies ändert sich ein winziges bisschen, wenn wir über die Arbeit in Unity sprechen. Weil wir tatsächlich einen zusätzlichen Nutzen haben. Sie sind, weil wir eine interessante
Art und Weise verwenden können , wie wir immer noch sehen können, was die privaten Werte halten, ohne sie öffentlich zu machen. Was wir uns das ansehen werden,
wenn wir jetzt in C scharf zur Einheit kommen, würde
ich sagen, private Variablen zu verwenden, die Sie dann können. Wenn wir diese wirklich verwenden müssen, können
wir sie ändern, indem wir eine Gitarre oder ein Setup hinzufügen. Jetzt sind ein Getter oder ein Setup grundsätzlich Möglichkeiten, mit denen wir immer noch auf Variablen zugreifen können, aber sie sind immer noch privat. Ich glaube also, wenn wir hierher gehen, sollten
wir wissen, dass wir das nicht wirklich tun können. Vielleicht können wir es damit machen. Wir können eigentlich nicht in Ordnung, dass ich dachte, dass wir diese automatisch generieren könnten. Ich glaube, dass es eine Möglichkeit gibt, diese automatisch zu generieren. Eigentlich. Er sagt eigentlich, dass wir eine Immobilie benutzen sollten. Das wird das sein, was wir nächstes Mal benutzen werden. In diesem Fall wäre
ein Setup oder eine Gitarre wäre eine öffentliche Saite. Werde sozial. Ich werde diese Nummer nur für einen Moment anrufen. Und dann geben wir diese Punkt-Sozialversicherungsnummer zurück. Und dann bedeutet ein cetera einfach, dies zu setzen. Dies wäre eine Leere und als String Social Sec Zahl. Und dann gibt dieser es nicht zurück, aber dieser hier ist genau dieser. Also lasst uns das einfach machen und das dann setzen, sie gehen, richtig? Das wäre also eine Gitarre und ein Setup. In unserem Fall natürlich
nicht wirklich das, was wir wollen, weil wir nicht wirklich wollen, dass von irgendwo in der Art von Sicherheitsnummer bekommen oder sogar gesetzt werden. In unserem Fall, nur als Beispiel, ist
dies manchmal nützlich. Allerdings werde ich es einfach wieder löschen, weil normalerweise, und wir verwenden keine Getter und Setter in C-Sharp. Normalerweise verwenden wir in C Sharp Eigenschaften. Und das ist genau das, was wir in der nächsten Vorlesung betrachten werden. Das war es also für diesen Vortrag mit, für die Zugriffsmodifikatoren. Ich hoffe, dass das für Sie nützlich war. Und ich würde natürlich eine Rezension von Ihnen
schätzen, wenn Sie bis
zu diesem Punkt nützlich finden . Und wie immer, wenn es irgendwelche Fragen gibt, fühlen Sie sich frei zu fragen und ich werde sicher sein, zu antworten. Und ja.
31. (C#) (C#): Alles klar, willkommen zurück zur C-scharfen Einführung hier für den Einheitskurs. Und in diesem Vortrag werden wir einen Blick auf eine C scharfe Eigenschaften werfen. Also haben wir eine ganze Reihe von Sachen gesehen,
die die Klassen und Objekte betreffen , einige Zugriffsmodifikatoren. Und jetzt werden wir einen Blick auf Immobilien werfen. Dafür haben wir das Eigenschaftsskript und ein Studentenskript. - Ja. Und das Studentenskript, wieder einmal, es ist nur eine leere Klasse ohne irgendwelche
der Unity-Sachen und das Eigenschaften-Skript hat in diesem Fall unsere Startmethode. Aber wir werden hier im Drehbuch des Schülers anfangen. Also könnten wir zum Beispiel
sagen, ein Student hat einen öffentlichen String-Vornamen, richtig? Das, das würde Sinn ergeben. Dass ein Student einen Vornamen hat und lassen Sie uns diesen kopieren und auch einen Nachnamen daraus machen. Nun, das funktioniert. Aber zuerst sagt er, Hey, wissen Sie, vielleicht wollen Sie dieses Feld mit einer Eigenschaft kapseln, und das werden wir eigentlich tun. Also zuerst werden wir eigentlich
die Namenskonvention hier für eine Immobilie machen , ist ein Großbuchstabe. Und dann, wie Sie sehen können, was wir anfangen werden, ist, dass wir diese geschweiften Klammern haben werden. Wir werden das Semikolon am Ende entfernen. Und innerhalb dieser geschweiften Klammern werden
wir schreiben, „Get and Set“. Und damit haben wir bereits ein Feld deklariert. Und Sie können sehen, dass wir jetzt haben, anstatt die langsame Box hier zu haben, haben
wir tatsächlich diesen Schraubenschlüssel und dieses Register bedeutet einfach, dass es sich um ein Feld oder eine Eigenschaft handelt. Und lasst uns das machen. Lassen Sie uns auch Nachnamen machen. Sie gehen. Und lassen Sie uns auch tun, und das ist eines der coolen Dinge, die wir tun können. So haben wir zum Beispiel diese beiden Eigenschaften. Und das ist alles gut und gut, und es ist wie: Okay, was bedeutet das? Was bewirkt das? Nun, offensichtlich, was wir jetzt tun können, lasst uns einfach einen neuen Schüler machen. Lass uns, ja, lass uns einfach einen neuen Schüler machen. Also lasst uns einen Schüler machen. Nennen wir sie ja, sicher Studenten, warum oder warum nicht? Und der neue Student. So zum Beispiel können wir tatsächlich den Vornamen des Schülerpunkts nennen, wie Sie sehen können, und den Nachnamen des Schülerpunkts. Und wie du auch hier sehen kannst, haben
wir oh, da gehst du. Nun, warte eine Sekunde. Lass uns das nochmal machen. Da gehst du. Also zuletzt haben wir bekommen und so eingestellt, dass wir sehen können, können wir entweder diese Variable erhalten, in diesem Fall diese Eigenschaft, oder wir können es setzen. Nun, was wir auch tun können, ist, dass wir es gut machen können, wissen
Sie, also können wir vielleicht unsere FirstName-Schaltfläche ändern. Sie haben den Nachnamen, der in Stein gesetzt ist. Also machen wir es zu einem privaten Set. Und wenn ich dann gehe, wie Sie sehen können, kann
ich immer noch auf den Vornamen und den Nachnamen zugreifen, aber es sagt private Set. Und wenn ich jetzt zum Beispiel
etwas wie Arnold Smith sage, etwas wie Arnold Smith sage, dann wird es die Eigenschaft oder den Index sagen, unser Nachname kann in diesem Zusammenhang nicht verwendet werden, weil es X gesetzt ist unzugänglich ist, bedeutet
einfach, dass wir eine private gesetzt. Jedoch ein öffentliches Gut. Und das ist eine der sehr einfachen Dinge, oder einfache Möglichkeiten, wie wir die Variable auf privat oder öffentlich setzen können. Und was wir auch tun könnten, zum Beispiel,
ist, dass wir eine neue Zeichenfolge namens FullName definieren können. Und durch die Verwendung der Eigenschaften können wir sagen, get. Und dann, anstatt hier nur ein normales Semikolon einzugeben, können
wir eigentlich etwas zurückgeben, das wir zurückgeben wollen. So können wir zum Beispiel diesen Punkt FirstName plus zurückgeben, und dann ein Leerzeichen, dieser Punkt Nachname. Und damit haben wir tatsächlich, dies könnte auch eine Methode sein, aber wir können es auch einfach in eine Eigenschaft wie diese einfügen. Und es gibt überhaupt keinen Satz, weil der vollständige Name nie gesagt wird, dass dies nie Variable haben, die wir ändern. Wir bekommen es immer nur über den Vor- und Nachnamen. Und als nur schnell eine Öffentlichkeit hinzufügen. Nun lassen Sie uns tatsächlich ein, ein Alter als auch hinzufügen. Also im Alter mit einem öffentlichen Getter und einem privaten Setup, richtig? Und das ist so einfach wie nur das Hinzufügen. Dies hat auch den zusätzlichen Bonus, dass wir natürlich, wenn wir zum Beispiel etwas setzen, tatsächlich können, anstatt nur eine Variable zu senden,
einen Methodenaufruf oder so etwas machen können, richtig? Wir können zum Beispiel theoretisch eine private Variable hinter allem
haben. Also können wir eine private Variable haben, Alter, zum Beispiel, sagen wir, Nun, sagen wir nichts. Und dann, was wir tun können, ist, anstatt eine Art nicht sichtbares Ding zu haben, das mit diesen Saiten wie unsichtbar ist. Wir können dies tun und dann sagen zurück H hier, und dann diese und die private Menge zum Beispiel, können
wir auch tun und das wäre dann aij gleich Wert. Also Wert ist einfach das, was wir dort passieren würden. Und das würde auch funktionieren. Ich wollte nur schnell zeigen, dass wir im Grunde einen Überschuss von für diese Variable
haben können , die dann privat ist. Und dann last but not least, lassen Sie uns einfach einen schnellen Student Konstruktor hier mit String firstname erstellen. Lass es uns richtig machen. Vorname, das Ego ,
String, Nachname
und eine ganze Zahl h. Und dann werden wir nur sagen,
FirstName gleich Vorname, Nachname gleich Nachname,
und Alter ist gleich h. sind, obwohl das Zentrum privat ist, weil wir in der Klasse sind. Und wir können zum Beispiel, wenn wir diesem Schüler jetzt tatsächlich einen Namen geben. Sagen wir, Jordan Smith, 31, so etwas. Dann können wir natürlich einige interessante Dinge debuggen. So können wir zum Beispiel sperren Schüler Punkt FirstName debuggen. Wir können den Nachnamen des Schülers sperren. Wir können auch den vollständigen Namen sehen, oder? Das war das Interessante. Und wir können das Alter einsperren. Allerdings können wir das Alter nicht ändern, denn wie Sie sehen können, ist
der Setter privat. Du hast nicht mal ein Setup. Hier. Der Verkäufer wäre auch stolz und wir könnten den Vornamen ändern, aber wir entscheiden uns nicht dafür, zu schreiben. Also lasst uns einfach schnell die Ausgabe davon sehen, jetzt sollte das nicht zu verrückt sein, natürlich geht es einfach nach Jordan, Jordan Smith. Und dann der vollständige Name und dann Alter, wie wir es gesagt haben. Und nur um schnell zu erwähnen, warum, warum sollten wir C Sharp Eigenschaften verwenden? Nun, ich meine einen vom See, mal sehen. Wirklich gute Gründe ist, dass wir das Erhalten und die Einstellung entkoppeln können, die Zugänglichkeit im Grunde, richtig? Das ist also eine Sache, die wir nicht wirklich mit
normalen Feldern und normalen Variablen innerhalb von Klassen tun können. Das funktioniert nicht. Und auch mit dem haben, das haben, also mit dem Getter und dem Setter und in der Lage sein , im Grunde Funktionalität hinzugefügt zu haben. Dies könnte tatsächlich funktionieren, um es so zu machen, dass vor allem, wenn wir etwas ändern wollen, dass wir es sehr leicht tun können. Und zweitens könnten
wir zum Beispiel zählen. Wie oft etwas eingestellt ist, wie oft etwas wird bekommen, ob das nicht das beste Beispiel sein könnte oder nicht. Aber wir können im Grunde Funktionalität hinzufügen, um die Einstellung einer bestimmten Variablen zu erhalten , die nützlich sein könnte. Also für die Einstellung könnte so etwas sein, wie wir immer
die vorherige Einstellung speichern wollen , so dass wir zurück oder so etwas ändern können. Dann können wir das immer in einer anderen Variablen speichern , die außerhalb oder was auch immer nicht zugänglich ist. Es gibt also einige Anwendungen,
aber das Hauptmitnehmen, denke
ich, ist ziemlich cool, ist, dass das Einsteigen in der Einstellung im Grunde verschiedene Barrierefreiheitseinstellungen haben
kann, oder? Das war es schon für die Immobilien. Es ist eine relativ große Rolle in C-Sharp. Aber wenn du es siehst, ist es ganz offensichtlich. Normalerweise ist innerhalb von Unity ein wenig schwierig, mit
Eigenschaften zu arbeiten , weil Unity nicht wirklich ein großer Fan von Eigenschaften ist, alle Dinge berücksichtigt werden. Aber wir können mit ihnen davonkommen, wenn wir in diesem Fall auch diese einzelnen Felder haben. Also, wenn wir die privaten Felder haben, dann können wir das im Grunde umgehen. Aber ja, das war nur eine kurze Einführung für die für die Immobilien hier. Wie immer, wenn es irgendwelche Fragen gibt, zögern Sie nicht, zu fragen und ich werde sicher sein, zu antworten. Und ja.
32. (C#) Inheritance: Alles klar, willkommen zurück zur C-scharfen Einführung hier für den Einheitskurs. Und in diesem Vortrag werden wir einen Blick auf die Vererbung werfen. Also weiter mit ihm, die Klassen und Objekte, die wir jetzt im Grunde Subklassen und Vererbung betrachten werden. Und dafür haben wir für Klassen am fertigen Jahr Tier, Katze, Hund und Erbe. Wenn wir alle öffnen, dann können wir sehen, dass die Vererbung einfach leer sein sollte. Ich meine, alle Klassen sollten leer sein oder sie sind gefüllt, je
nachdem , was Sie sich entschieden haben. Wichtig ist aber, dass das Tier,
der Hund und die Katze hier nichts Schickes haben. Sie haben also keine Startmethode, sie haben keine Vererbung. Sie sind im Grunde nur leer. Und beim Vererbungsskript hat hier die Startmethode, bei der wir Sachen implementieren möchten. Nun, wir fangen in der Tierklasse an. Und lasst uns einfach denken, ich meine, ein Tier hat viele verschiedene Dinge, die Attribute mögen, die es haben könnte, und Feld. Das könnte es gewesen sein. Das einzige, was uns jetzt wirklich interessiert, ist eine geschützte Zeichenfolge. Wir werden das die Spezies nennen. Und denken Sie daran, zurück, so geschützte Variablen nur von Unterklassen zugänglich. Und es ist richtig. Wir erinnern uns, dass wir das in der Zugangs-Modifikatoren
Vortrag hatten , wo wir gesehen haben, dass es öffentliche, geschützte und private und geschützte Art von sitzt zwischen diesen. Und wir werden sehen, wie wir das jetzt in der Vererbung zu unserem Vorteil nutzen können. Also lassen Sie uns dann zwei Methoden hier erstellen, public void run, die einfach dot-log das folgende debuggen wird. Also wird es tun, diese Punktart läuft jetzt. Und dann werden wir das einfach kopieren. Und wir werden die andere Methode halten, essen. Und dann werden wir nur sagen, dass diese Spezies jetzt isst. Und das war's jetzt für das Tier. Jetzt lasst uns darüber nachdenken. Was sind jetzt einige Tiere, natürlich, ich habe bereits den Hund und die Katze. Allerdings könnte man auch eine BVA oder bewegt oder Pfeil haben, große weiße Hai zum Beispiel gibt es viele Tiere. Und natürlich, was sie alle gemeinsam haben, ist, dass sie ein Tier sind, aber sie alle haben auch verschiedene Dinge, die sie tun können. Vielleicht wird es hier etwas Interessantes geben. Aber das erste, was wir tun werden, ist innerhalb der Hundeklasse, wir werden es so machen, dass es vom Tier erbt. Wie machen wir das? Wir gehen nach dem Hund der öffentlichen Klasse und dann tippen wir einen Doppelpunkt, und dann die Klasse, aus der er stammt, also in diesem Fall, Tier. Und was bringt das jetzt auch, wie Sie sehen können, ist hier nichts passiert. Es scheint nur zu funktionieren. Hier geht nichts Interessantes vor sich. Was wir tun können, ist, dass wir jetzt können, wie wäre es, wenn wir einen neuen öffentlichen Hund machen? Das ist also ein neuer Konstruktor hier. Und nun, wir wissen, dass dies ein Hund ist, also müssen wir nicht wirklich die ändern, die wir nicht brauchen, um ihnen irgendwelche Parameter zu geben. Was ist mit der Spezies, so wie, Okay, nun, diese Punktart. Nun, wie kann ich auf die Spezies zugreifen? Das ist nicht, ich habe nichts gut erklärt, weil wir diese Tür vom Tier abgeleitet haben. Und im Inneren des Tieres haben wir eine geschützte String-Rufspezies. Deshalb können wir es hier ändern und wir können zum Beispiel Hund sagen. Und jetzt die, jedes Mal, wenn wir einen Hund erstellen, der ein Objekt ist, wird Spezies haben, das Feld, im Grunde auf Hunde gesetzt. Jetzt lassen Sie uns auch eine öffentliche Methode namens Bark machen. Debuggen Sie Punktprotokoll. Kein Pfeil, aber normal. Lass uns sicher machen. Lasst uns bellen, bellen. Warum nicht? Sie gehen. Ich meine, es könnte alles sein, aber lass es uns einfach so machen. Und dann gehen wir auch in den Katalysator. Eigentlich, kopieren Sie das einfach schnell, denn das wird es ein bisschen einfacher machen. Und dann machen Sie auch dieses Tier. Das erbt also vom Tier. Das ist eine Katze. Sie werden eine Katze machen und es wird tatsächlich miauen bitte. Wie wär's mit dem? Und dann werden wir nur einmal miauen, weil das großartig ist, oder? Und jetzt haben wir eine Katze, einen Hund, und das sind beide Tiere. Aber jetzt kommt die Frage, nun, ich meine, was können wir jetzt tun? Wirklich wie wo? Wo ist das Interessante hier? Und das Interessante kommt daraus. Sagen wir mal, wir haben einen Hund namens Fluffy. Und das ist ein neues Dokument, nur um der Argumentation willen. Jetzt flauschig, sofort. Flauschig. Wenn ich es richtig schreiben kann, kann
das Ego bellen. Er kann essen und rennen. Aber wenn wir zurückblicken, also wenn ich sage, dass er rennt, wenn wir über diese Breite nachdenken, ist das ein Hund. Ich meine, wir haben nicht ausdrücklich gesagt, dass ein Hund laufen kann, ein Tier laufen kann, aber wir haben nicht wie neu definiert diese Methode innerhalb des Hundes. Es funktioniert jedoch immer noch. Und wenn wir uns die Definitionen hier ansehen, also wenn ich in flauschige und ich schwebe über so ausgewählt, wie Sie sehen können, Rinde ist von Hunden. So war dies die Methode in Art von Hund essen ist eine Methode innerhalb des Tieres. Gleiche beim Laufen. sind beide Methoden, die haben, haben
wir in der Tierklasse und der Hundeklasse erstellt. Und sagen wir einfach für das Letzte, was wir tun werden, eine flauschige Punktbelle, richtig? Und mal sehen. Also, was wir hier erwarten, ist, dass wir wollen, dass Hund jetzt läuft, dann docken wir nicht essen und dann bellen, bellen, ich glaube, ist das, was wir sehen wollen. Mal sehen, ob das funktioniert. Also lasst uns das hier machen. Ja. Wie Sie sehen, Hund läuft jetzt, log, ist jetzt essen und bellen, bellen. Alles funktioniert völlig gut. Wir könnten natürlich das Gleiche mit der Kamera machen. Also lasst uns das einfach machen. Katze ganz ihm Schnurrhaare. Sicher, das ist ein toller Name. Schnurrhaare, Dot Run. Genau das Gleiche. Und Schnurrhaare können auch essen. Und auch miau in diesem Fall, weil Schnurrhaare Katze ist. Nun, eine interessante, sehr interessante Sache. Weil beide, Betrachten wir das ein wenig, Diego. Weil beide Tiere sind. Kann auch ein Tier namens Henry haben. Und das ist zum Beispiel in der neuen Katze richtig? Nun, das funktioniert. Zuvor. Wir haben immer gesehen, dass der Datentyp, den wir eine Variable gegeben haben, der gleiche sein muss wie, sagen
wir den Konstruktor, den wir erstellen. Da die Katze jedoch ein Tier ist, können
wir diese neue Katze auch in einem Tier retten. Eine Variable, die funktioniert. Und wenn wir Henry dot-dot-dot eat und Henry dot run nennen, zum Beispiel, lassen Sie uns das umschalten, so dass wir es überall richtig haben. Und dann werde ich auch einfach ein wenig Teiler Jahr setzen, so dass wir wissen, was was ist. Also nach dem Teiler, so sollten wir die Schnurrhaare sehen. So Hund laufen Hund essen als Rinde, Cap Run Katze essen Meow, und dann Katze und Katze wieder laufen. Ja, genau. Also haben wir Hund Rinde, wir haben Katze Katze, miau, wir haben immer laufen Katze ED. Obwohl Henry hier ein Tier ist. Also die m, Dies ist ein Tier. Es kann alles tun, was ein Tier kann, aber es kann nicht was? Eine Katze. Also Henry, Henry. Ich. Es ist ein kann sehen, das nicht funktioniert. Es wird einen Fehler werfen, weil Tier, es ist keine Definition für Miau enthalten, weil wir derzeit nicht wissen, dass Henry ist ein Tier, eine Katze. Wir wissen, dass es ein Tier und Vernunft Tier ist. Aber Katas wie Mao funktionieren nicht. Henri, dass das Männchen nicht funktioniert. Wir können Henry zu einer Katze werfen. Wenn wir wissen, dass es eine Katze ist, tun
wir es nicht unbedingt, aber in diesem Fall ist
dies einer jener Momente, in denen wir eine komplexere Kostenrechnung haben können, sagen wir. Es gibt also zwei Möglichkeiten, dies zu tun. Wir können zum Beispiel eingeben, sorry, wir können Henry als Katze eingeben, miau, wie Sie sehen können. Das funktioniert. Das ist also das als Schlüsselwort ist einfach fast das gleiche wie die Kalkulation. Und wir können auch im Grunde zwei Klammern, Putting cat, wie wir zuvor gesehen haben, dann tun Henry und dann miau. Das wären also zwei Wege, wie wir Henry zu einer Katze werfen können. Wir wissen, dass Henry eine Katze ist. Deshalb funktioniert das. Wenn wir zum Beispiel so etwas tun. Also Hund und dann sagen, Rinde. Würde ich nicht. Ich meine, mal sehen, was passiert. Du hast recht. Ich meine, das liegt daran, dass wir das natürlich auch tun können und sehen, was hier passiert. Und Sie können sehen, dass wir eine Nullreferenz bekommen, weil das natürlich nicht
funktioniert, weil Henry keine Katze ist. Henry ist ein, Henry ist kein Hund. Henry ist eine Katze. Ich sagte, Katze und Hund so oft. Ich weiß nicht mal mehr, wo ich hinzufügen soll. Also, da gehst du, miau und noch ein Miau. Wie immer. Wenn es irgendwelche Fragen gibt, zögern Sie nicht zu fragen und ich werde sicher sein, zu antworten. Und ja.
33. (C#) Polymorphism: Alles klar, willkommen zurück zur C-scharfen Einführung hier für den Einheitskurs. Und in diesem Vortrag werden wir einen Blick auf Polymorphismus werfen. Nun, das ist ein riesiges Wort für so ein einfaches Konzept. Wenn man wirklich darüber nachdenkt, ist es eigentlich lächerlich. Werfen wir einen Blick auf unsere Erbklasse und unsere Tier-, Hunde- und Katzenklauseln. Nun, was wir getan haben, ist, wir hatten letzten Vortrag eine Methode namens Eat, die im Grunde nur Ausgabe dieser Punktart isst jetzt. Und was wir tun werden, ist, dass wir
sagen, dass Hunde und Katzen vielleicht andere Dinge essen. Also, was wir tun werden, ist, dass wir diese Methoden überschreiben. Obwohl sie ein Methodenaufruf sind, ein Zitat von der Animal Klasse, Wir werden jetzt eine neue Funktionalität in ihnen zu machen und wir werden in der Öffentlichkeit wissen, leere, essen. Also die ohne die Sieben, vorzugsweise gehen sie. Idee hier ist, dass die, dass die gesamte Signatur der Methode ist die gleiche außer für diese neue. Und diese neue bedeutet im Grunde eine, dies wird eine neue Methode mit dem gleichen Namen sein. Und wir werden sagen, diese Punktart. Jetzt ist jetzt essen etwas Steak, zum Beispiel, für den Hund. Richtig? Also lasst uns das rein und dann werden wir das schnell an die Katze übergeben. Und dann trinkt dieser vielleicht etwas Milch. Und sie gehen, wir haben jetzt geschaffen, um Methoden innerhalb unserer geerbten Klassen zu essen. Und was wir sehen werden ist, dass alle, jede Anweisung sozusagen, sich in genau das verwandeln, was der Hund oder die Katze ist, wissen
Sie, was sie essen. Also lasst uns das einfach machen und sehen, was hier passiert. Wenn wir runtergehen, wie Sie sehen können, isst der
Hund jetzt Steak, Mütze, trinkt jetzt etwas Milch. Und jetzt ist das sehr Interessante, denn hier isst Kant jetzt. Warum ist das cool, obwohl das eine Katze ist? Nun, lassen Sie uns daran erinnern, Henry tatsächlich ein Tier ist. Daher wird Tier, das essen, kalt. Und hier wird Katze dot-dot-dot kalt, sehen sie. Das ist also auch eines der interessanten Dinge, die Sie
mehrere verschiedene Definitionen oder Implementierungen haben können , in diesem Fall eine andere Implementierungen der gleichen Methode. Und je nachdem, was die Unterklasse ist, können
wir spezifische verschiedene Implementierungen davon haben. Und selbst wenn wir es auf das Tier nennen, könnte
es eine andere,
eine andere Implementierung haben als auf den abgeleiteten Klassen. Ein weiteres Beispiel dafür, dass ich einige Male gesehen habe ist, dass Sie eine Art wie ein Gebiet haben können, also eine Flächenklasse. Und dann könnte dies getArea als Methode haben. Und dann kann die Algebraklasse
zum Beispiel von einem Quadrat und einem Kreis geerbt werden . Und während der Bereich der, Sie wissen, wie man die Gegend oder die Gegend ist das gleiche in dem Sinne, dass es ist, sagen
wir zum Beispiel, Meter quadriert, das ist immer der Bereich. Aber der Weg, um in den Bereich für ein Quadrat zu kommen, ist anders als von einem Kreis. diesem Grund benötigen Sie verschiedene Implementierungen
für das gleiche, was Sie als Beispiel vier verschiedene Unterklassen haben möchten , richtig? Das ist es eigentlich. Wenn für Polymorphismus Es ist nicht das Größte. Und ich würde auch wirklich nicht raten, darauf zu viel zu wohnen. Es ist ein großes Wort für ein sehr einfaches Konzept. Und ich denke, dass auch im Yen, eine letzte Sache ist, dass die Methode Überlastung wir bereits in Lecture Weise gesehen haben, Weise ein Ziel, das im Grunde auch Polymorphismus ist. Es bedeutet einfach, dass Sie mehrere Methoden mit demselben Namen oder mehreren Implementierungen einer Methode haben, und sie alle denselben Namen haben. Das würde also auch als Polymorphismus betrachtet werden. Ich würde sagen, dass das eigentlich ziemlich leicht zu verstehen war. Viel einfacher als der Name Polymorphismus vermuten würde. Und ja, das ist es im Grunde für diesen Vortrag. Ich hoffe, Sie fanden es nützlich, wenn es irgendwelche Fragen wie immer, zögern Sie nicht zu fragen und ich werde sicher sein, zu antworten. Und ja.
34. (C#) Abstrakte Kurse und Methoden in C#: Alles klar, willkommen zurück zur C-scharfen Einführung hier für den Einheitskurs. Und in diesem Vortrag werden wir einen Blick auf abstrakte Methoden werfen, eine abstrakte Klassen. Die Idee ist, dass wir zusammen mit den Klassen,
Vererbung, Dinge Seite von C Sharp fortsetzen werden. Und wir haben hier drei Skripte , das abstrakte Tier und den Biber. Nummer eins, gerade jetzt der Biber zuerst, oder wir schauen uns den Biber an, sei leer. Die abstrakte Animal Klasse sollte leer sein. Und dann ist die Abstract wieder derjenige mit der Sternmethode, aber auch leer. Und das erste, was wir tun werden, ist, dass das abstrakte Tier hier ein neues Schlüsselwort bekommt, und das ist das abstrakte Schlüsselwort. Also werden wir es zu dieser spezifischen Klasse abstrakt machen. Was das bedeutet, wir werden in ein paar Augenblicken sehen. Aber zuerst füllen wir diese Klasse mit einigen vertrauten Dingen, wie eine prädiktorgeschützte Zeichenfolge, Arten, Arten und dann auch eine öffentliche Leerlaufmethode. Debug-Punktprotokoll mit dieser Punktart läuft jetzt. Jetzt haben wir dies in der normalen Vererbung gesehen, bevor wir eine Run-Methode hatten. Und jetzt werden wir auch eine abstrakte Methode definieren. Jetzt wird die abstrakte Methode sehr interessant sein. Das wird also öffentlich abstrakte Leere sein. Und wir werden das die Tierklang-Methode nennen. Und dann schließen wir das einfach mit einem Semikolon ab. Und wie Sie sehen können, das ist es, weil, und das sind die interessanten Dinge. So haben abstrakte Methoden keine Implementierung, Implementierung innerhalb von abstrakten Klassen. Richtig? Das ist das sehr Interessante. Und das Interessante daran ist, dass die abgeleiteten oder die Unterklassen, richtig? Sie müssen, sie müssen dies individuell umsetzen. Das ist auch sehr interessant zu sehen. Und das abstrakte Schlüsselwort für spezifische, für bestimmte Methoden kann nur innerhalb von abstrakten Klassen verwendet werden. Also, wenn wir dieses Abstract nicht machen, dann werden wir bald sehen, ist abstrakt, enthält aber in einer nicht-abstrakten Klasse, die nicht funktioniert. Daher müssen wir diese Klasse abstrakt machen, so dass wir
dieses abstrakte Schlüsselwort für eine bestimmte Methode verwenden können . Nun, der Biber, anstatt vom Tier abzuleiten, wird ein abstraktes Tier sein. Die Idee ist fast im Grunde die gleiche. Der Unterschied hier ist nur, dass ich das abstrakte Schlüsselwort
mit einem ähnlichen Beispiel zeigen wollte , mit dem wir Vererbung gezeigt haben. Und der Biber jetzt hat es einen Pfeil hier und es sagt, implementiert
nicht die geerbten abstrakten Methoden,
abstraktes Tier, Tierklang. Nun, was wir tun können, ist, dass wir es tatsächlich mit
den verschiedenen Möglichkeiten beheben können, die wir entweder zur gehen können, eigentlich ist es einfacher, hier zu gehen und zu sagen, abstrakte Klasse zu implementieren. Und dann wird es das alleine machen. Also werden wir die Tier-Sound-Methode überschreiben. Und dann wird er sofort sein, als würde er hier eine neue Ausnahme werfen. Das brauchen wir nicht wirklich, weil wir. Nun, ich meine, ich weiß nicht, was der Biber sagt, aber sagen wir einfach, es sagt so etwas wie OK. Und dann können wir auch ein öffentliches Vivre machen. Und dann werden wir sagen, diese Punktart ist gleich Biber. Und ja, das ist im Grunde die Idee einer abstrakten Methode. Also müssen wir das Schlüsselwort override hier verwenden, um
die abstrakte Methode zu überschreiben und deutlich zu machen, dass dies im Grunde die Implementierung des Bibers
ist. Wir können auch darüber nachdenken, denken Sie zurück an die Katze und den Hund. Wenn sie das abstrakte Tier wie dort haben, die Superklasse, dann könnten wir uns vorstellen, dass wir genau das Gleiche tun würden. Und dann die Tierprobe, im Grunde der Wolf und die Miau, die wir vorher im normalen Tier haben, und das Katzenbeispiel und das Hundebeispiel haben wir grundsätzlich als ein ähnliches auf uns selbst umgesetzt, auf die, auf die Unterklassen selbst. In diesem Fall haben
wir es jedoch genau hier implementiert. In der abstrakten Klasse, war die, naja, im Grunde die Idee. Und dann ist die Implementierung auf jede der abgeleiteten Klassen zurückzuführen. Nun, was wir tun können, nun, lassen Sie uns den Biber begraben. Warum nicht? Ich bin Barry, der Biber und Beere. Nun, zuerst, rennen Sie, weil er das tun könnte. Und dann wird es wissen, dass es nicht essen wird. Eigentlich kann er jetzt nicht essen. Aber was wir tun können, und das ist das Tolle. Barry kann Tiergeräusch machen. So kann sehr Tiergeräusch machen. Und dann gibt es noch eine Sache, die ich Ihnen zeigen wollte wenn es um die abstrakten Klassen geht. So abstraktes Tier, richtig? Wir können nur abstraktes Tier sagen, genau wie wir es mit dem Tier gemacht haben. Und sagen wir zum Beispiel, wir haben Mary, den Biber, ausgeht und dann haben wir einen neuen Biber. Aber das funktioniert. Mary ist ein abstraktes Tier. Aber wenn wir das Folgende tun wollen, so wollten wir abstrakte Tier Larry zu tun, denn lassen Sie uns mit ihm gehen ist ein neues abstraktes Tier. Was wir sehen werden ist, dass dies nicht funktioniert, weil wir keine Instanz der abstrakten Klasse oder des abstrakten Interface-Tieres erstellen
können . Die Idee hier ist also, dass wir keine Instanzen einer abstrakten Klasse erstellen können. Das ist es, was hier wirklich wichtig ist. Also eine abstrakte Klasse, deshalb ist sie abstrakt. Es kann nicht sein, man kann in diesem Fall kein abstraktes Tier haben. Nun, wenn wir wirklich darüber nachdenken, macht
es Sinn, dass einige Dinge. Zum Beispiel, selbst im Fall eines Tieres, könnten
wir uns vorstellen, nun, ich meine, nur ein neues Tier zu haben, macht
nicht wirklich Sinn, wenn man wirklich darüber nachdenkt. Wir müssen etwas spezifischeres haben. Also sogar ein Biber, der viel spezifischer ist als ein Tier. Also könnten wir uns vorstellen, dass Tier zu einem neuen Tier
ist, das macht nicht wirklich Sinn. In diesem Fall ist
dies noch, so dass wir nicht wirklich neue Instanzen abstrakter Klassen erstellen können. Und sie haben jedoch den zusätzlichen Vorteil, das Tiergeräusch hier zu haben. Und dann auch, wenn wir
zum Beispiel Mary haben, können wir immer noch sagen, Mary Dot Tier Sound. Und Mary wird immer noch sagen:
Ah, also schauen wir mal. Wir hätten zuerst Biber läuft und dann, und dann weiter. Der erste natürlich, ist aus begraben den Biber und dann die verheiratete der Biber am zweiten gemacht hat. Und wir können das natürlich nennen, denn denken Sie daran, als wir das nicht implementiert hatten, hatten
wir tatsächlich einen Fehler in der viva-Klasse, weil diese abstrakten Methoden implementiert werden müssen, richtig? Wie Sie sehen können, habe ich das Wort muss Jahr gewählt. Sie müssen umgesetzt werden. Es gibt keinen anderen Weg. Und ja, das ist die grundlegende Einführung in die abstrakte Klasse und die abstrakte Methode. Auch in diesem ganzen wie objektorientierte Programmierung Ökosystem, unglaublich nützlich und unglaublich interessant. Aber vorerst glaube ich, dass wir es dabei belassen werden. Wie immer. Wenn es irgendwelche Fragen gibt, stellen Sie sicher, zu fragen und ich werde sicher sein, zu antworten. Und ja.
35. (C#) Virtuelle Methoden: Alles klar, willkommen zurück zur C-scharfen Einführung hier für den Einheitskurs. Und in diesem Vortrag werden wir einen Blick auf virtuelle Methoden werfen. Jetzt sind virtuelle Methoden, ähnlich wie die abstrakte, die abstrakten Gegenstücke, sie sind sehr ähnlich. Sie können etwas sein, das
noch einmal mit der Implementierung in Unterklassen zu tun hat und nicht. Schauen wir uns das abstrakte Tier noch einmal an. Und lassen Sie uns unsere guten alten Lieblings hinzufügen, die Öffentlichkeit zu vermeiden essen Methode. Und lassen Sie uns auch das Debug-Protokoll hinzufügen. Nehmen wir an, diese Spezies isst jetzt. Dies ist etwas, das wir natürlich mehrmals gesehen haben, nicht ganz, aber wir haben das schon mal gesehen. Und jetzt, anstatt dies nur eine normale Methode zu
haben, werden wir dies zu einer virtuellen Methode machen. Jetzt hat sich auf den ersten Blick
nichts geändert, weil die Idee dieser virtuellen Methode darin besteht, dass ein, dies im Grunde ein Mitglied ist, das von der abgeleiteten oder der Unterklasse überschrieben werden kann. Im Fall des Bibers können
wir ihn überschreiben oder nicht. Jetzt überschreiben wir es in unserem Fall. Und was wir tun, ist, dass wir einfach dasselbe tun, was wir mit
der abstrakten Methode gemacht haben , nur weil das einfach kein, es ist kein Muss. Also müssen wir es nicht überschreiben. Und dann, wie Sie sehen können, ist es eigentlich schon hier vorgestellt. Und in diesem Fall, wenn wir Basispunkt-Punkt-Punkt nennen, passiert
dies. Es kühlt tatsächlich die virtuelle Methode hier. Aber in unserem Fall wollen wir das eigentlich nicht nennen. Manchmal kann es so sein, dass wir wissen, dass wir das nennen wollen. Aber öfter als nicht, habe ich festgestellt, dass du das auch nicht wirklich nennen willst. Und dann lasst uns das machen. Dot-Arten fressen jetzt etwas Holz. Zum Beispiel, weil
wir es natürlich mit Bibern zu tun haben. Und jetzt können wir, wenn wir zum Beispiel in abstrakte Schrift zurückgehen, sowohl Barry dot-dot als auch Mary dot-dot dot. Wir werden glücklich sein. So wie Sie jetzt sehen können, ist es auch sehr wichtig, ist wieder einmal, denn Mary ist hier ein abstraktes Tier. Barry bekommt Biber Dot, Marie bekommt abstraktes Tier, Punkt-Punkt-Punkt. Das ist im Grunde dasselbe, was wir mit dem Polymorphismus gesehen haben. Aber in diesem Fall, weil wir eine überschriebene Methode haben, sind
beide Kohlen für die überschriebene Sache, die die BVA getan hat. Auch wenn Mary ein abstraktes Tier ist. Sie ist auch ein Biber. Und deshalb wird bei der Biberimplementierung aufgerufen, in diesem Fall für die virtuelle Methode, richtig? Das ist es eigentlich. Für die virtuellen Methoden, Es gibt nichts Lustiges daran. Wie Sie sehen können, gibt es eine Menge Überlappungen in vielen dieser Dinge. Es gibt jedoch einige subtile Unterschiede. Wie gesagt, muss eine abstrakte Methode von einer Unterklasse oder einer Dr Klasse implementiert werden. Eine virtuelle Methode kann überschrieben werden, sehr wichtig. Auch sehr wichtig. Eine virtuelle Methode kann in jeder Klasse vorhanden sein. Eine abstrakte Methode kann nur in abstrakten Klassen mit existieren, und das war es für diesen Vortrag. Ich hoffe, Sie fanden es nützlich, wenn es irgendwelche Fragen wie immer fühlen sich frei, jetzt sicher sein, zu antworten. Und ja.
36. (C#) (C#): Alles klar, willkommen zurück zur C-scharfen Einführung hier für den Einheitskurs. Und in diesem Vortrag werfen wir einen Blick auf Schnittstellen. Schnittstellen sind also etwas, das abstrakten Klassen sehr ähnlich ist, aber irgendwie immer noch ein bisschen anders. Wie Sie sehen können, haben
wir hier die Schnittstellen eines Flugzeugs und eines Vogelskripts. Und wir werden auch ein neues Skript erstellen. Und es wird einen neuen C-scharfen Skriptcode geben, den ich fliegen kann. Und wir werden diesen und den Fehler hier ignorieren, oder besser gesagt die Warnung. Und wir werden einfach auf die KI flyable doppelklicken. Befreien Sie sich von allem, was hier drin ist, auch das, und anstelle einer öffentlichen Klasse wird
dies eine öffentliche Schnittstelle sein. Es, jetzt wird der Name eine Art von dieser gelben Farbe drehen. Und darin werden wir im Grunde eine abstrakte Methode definieren. Aber es wird nicht abstrahieren, es wird nur im Grunde der Rückgabetyp sein, dann der Name
der Methode, die Klammern, und das war's. Das ist buchstäblich alles, was wir tun müssen, um in diesem Fall in die Schnittstelle zu setzen. So kann die i-te Label-Schnittstelle von
einer bestimmten Klasse implementiert werden , die gut die Fähigkeit zu fliegen haben sollten. Natürlich haben das Flugzeug und der Vogel von beiden die Fähigkeit zu fliegen. Daher werden beide die AI-Flyable Schnittstelle implementieren. Es ist die gleiche Idee, die wir hier in den Dickdarm gesetzt haben. Und dann können wir sehen, hey, implementiert
keine Schnittstellenmitglieder. Also werden wir sagen, okay, machen wir sie. Und dann müssen wir einfach die Methode fly implementieren, damit dies aufgerufen werden kann. In unserem Fall, was wir für das Flugzeug tun werden, ist, dass es
einfach das Starten der Düsenmotoren protokolliert. Triebwerke, sie gehen. Und bei dem Vogel werden
wir hier tatsächlich etwas sehr Interessantes haben. Wir werden eigentlich sagen, nun, das ist ein Tier. Sie können auch, wir könnten auch sagen, dass dies ein abstraktes Tier ist. Wir sagen nur Tier. Und es ist auch so zwei Komma i fliegbar. Und dann müssen wir auch die Schnittstelle implementieren. Und hier werden wir folgendes tun. Wir werden sagen, Debug Dot Log, Flattern. Lasst uns flattern. Seine Flügel. Sie gehen. Und wie Sie sehen können, ist der Vogel jetzt ein Tier und ein Auge fliegenfähig. Und die sind es wirklich nicht. Sie sollten sich nicht gegenseitig ausschließen. Warum? Richtig? Denn natürlich, wenn Sie ein Tier sind, können Sie fliegen,
dass, das macht Sinn in einem Flugzeug, kann auch fliegen. Wichtig ist, dass eine Klasse immer nur von einer anderen Klasse erben kann. Es kann jedoch mehrere Schnittstellen implementiert haben. Und mal sehen, wie dies innerhalb unserer Schnittstellen Startmethode aussehen würde hier. Also werden wir eine Liste von mir haben, die ich fliegen kann. Und wir werden so Dinge nennen, die fliegen können. Denn das ist buchstäblich, was die AI-flyable Schnittstelle im Grunde versucht, uns zu zeigen. Und wir werden Dinge sagen, die fliegen Punkt hinzufügen können. Und dann werden wir es sagen, neuer Vogel. Und wir werden das kopieren und ein neues Flugzeug sagen. Und dann lassen Sie uns einfach ein paar hinzufügen. Lass es uns ein bisschen zufällig machen. Vogel hier, ein Flugzeug hier, und der Vogel hier und vielleicht auch ein Flugzeug am Ende. Sie gehen. Und dann werden wir nur eine für jede Schleife am Ende hier haben. Und jetzt ist das Interessante, anstatt dieses Vogel oder Flugzeug sein zu lassen, können
wir diesen ich fliegenfähig haben, nennen diese fliegenfähig, und dann in die Sammlung Dinge, die fliegen können. Und dann rufen Sie Flyable Dot Fly. Und warum ist das so eine interessante und verrückte Sache? Oh, tut mir leid, da gehst du. Tut mir leid, da gehst du. Warum ist das so verrückt und interessant? Nun, wir haben spezifisch Jet Engine oder
die Flügel in jeder der Klassen definiert oder implementiert, die die Auge flyable Schnittstelle implementiert haben. Aber wir rufen immer noch die Fliegenmethode auf der Flyable Schnittstelle auf. Also, was wird passieren? Nun, wir würden sehen wollen, ist genau das. Nun, das ist jetzt zusammengebrochen. Also lasst es uns nicht zusammenbrechen. Und dann, wie Sie sehen können, flattern mit den Flügeln und dann starten Sie die Düsenmotoren, Stirling Motor flattern seine Flügel, flattern mit den Flügeln, Starten der Schüssel Motoren drehen,
Spiegeln und Düsenmotoren. Also, obwohl wir alles auf der Schnittstelle hier kalt haben, auf der Schnittstelle als Datentyp, haben
wir immer noch die tatsächlich implementierten Methoden bekommen. Und das ist genau das Tolle an der Schnittstelle. Denn solange wir wissen,
okay, etwas ist ein Auge fliegenfähig. Darauf können wir immer Fly anrufen. Und es wird immer funktionieren. Und dann ist das Tolle, dass wir
es dann auch in eine AI-flyable Schnittstelle umwandeln können. Und es wird immer noch funktionieren, dass wir sagen können, okay, lassen Sie uns die Fliegenmethode dazu machen. Die, eine andere interessante Sache, die ich mit diesem hatte, die tatsächlich sind, war wie ein echter Anwendungsfall, den ich in wie eine
Art Hobbyspiel hatte , das ich programmierte war, war, dass ich hatte. Also war es im Grunde vorstellen, wie ein 2D-RPG, sagen
wir, wie Zelda. Und so wie die alte Zelda, sagen wir. Und du warst in der Lage, mit bestimmten Dingen zu reden. So sind Sie in der Lage, mit bestimmten Leuten zu sprechen, natürlich, richtig, NPCs. Aber dann könntest du auch die obere Taste drücken, zum Beispiel
für eine bestimmte Konsole oder wenn es einen Ofen gab, dann kannst du sagen, hey, was hat das Gewicht? Und Sie können klicken und irgendwie mit ihm reden in mehr oder weniger. Und ich habe ein I talk Bubble Interface implementiert. Und dass ich über Schnittstelle sprechen dann gab mir die
Fähigkeit , im Grunde, was das Ding ist, mit ihm zu sprechen, im Grunde mit der Talk-Methode, leere Talk oder sogar Frühlingsreden, so etwas. Und ich war dann in der Lage, sobald das zum Beispiel in
einem NPC oder was auch immer implementiert wurde, konnte
ich dann die Implementierung dort durchführen. Wer auch immer die Hauptsache, die gesucht wurde, war, dass ich rede, ich rede über ja. Dann rede mit mir. Und ja, das ist die Schnittstelle kann in zahlreichen verschiedenen Dingen
verwendet werden und ich bin sicher, dass wir ein paar Beispiele dafür in der eigentlichen Programmierung
sehen werden, wenn wir zur Einheit kommen. Im Moment, das ist, ja, das wäre es für die Schnittstelle. Ich hoffe, du hast es nützlich gefunden wie immer. Wenn es irgendwelche Fragen gibt, zögern Sie nicht zu fragen und ich werde sicher sein, zu antworten. Und ja.
37. (C#) Summen: In Ordnung, lassen Sie uns mit der C-scharfen Einführung hier für den Einheitskurs fortfahren. In dieser Vorlesung werden wir einen kurzen Blick auf Enums werfen. Enums sind im Grunde eine Art der letzten wie Big Datentyp, den wir betrachten werden. Sie haben die Fähigkeit, wo wir irgendwie können, es ist eine Art vordefinierte Liste. Werfen wir einen Blick. Wir haben also zwei Skripte, das Spielschwierigkeitsskript und das Enum-Skript. Öffnen wir zuerst die innere Schleife. Und lasst uns sofort zum Spielschwierigkeitsskript wechseln. Die Idee ist, dass es zwei Möglichkeiten oder eine Art von zwei Orten gibt, an denen wir keine Enumeration definieren konnten. Wir können entweder eine Enumeration in seinem eigenen Skript
definieren oder wir können es in einer Art anderes Skript definieren oder, oring eine Klasse. Persönlich denke ich, dass es am besten ist, wenn Sie sie in ihr eigenes Skript setzen. Manchmal kann es jedoch einfacher sein, sie
nur im Grunde in die Seite des Skripts zu setzen , wo sie hingehören. Also haben wir die Enum-Spiel-Schwierigkeit und wir werden einfach, mittel und hart definieren. Und wie Sie sehen können, ist dies die Art und Weise, wie eine Enumeration funktioniert. Wir haben öffentliche Enumeration und den Namen der Enumeration. Und dann die individuelle Art von vordefinierten Dingen, die es für uns sein kann. Für den Spiel-Schwierigkeitsgrad kann
es entweder einfach, mittel oder schwer sein. Das sind also die einzigen drei Dinge, die es sein kann. diesem Grund ist zum Beispiel eine switch-Anweisung mit einer Enumeration wirklich nützlich, da Sie sehr viel nur vordefinierte Dinge
haben, die es sein kann. Daher ist das eine Anwendung, bei der dies wirklich nützlich sein kann. Jetzt können wir auch tun, ist, dass wir theoretisch können. Also sagen wir, zum Beispiel, Enum Sprache und definieren Sprache. So zum Beispiel Deutsch, Englisch, Französisch, oder so etwas. Und dann haben wir eine Enumeration innerhalb dieser Enums-Klasse erstellt. Wie gesagt, manchmal kann nützlich sein, manchmal nicht, weil es war, Sie möchten darauf außerhalb der Klasse zugreifen. Dann müssen Sie es natürlich öffentlich machen und auch Sie müssen dann enums dot language aufrufen. So kann es manchmal ein bisschen seltsam sein. Aber wie auch immer, lassen Sie uns eine neue Deckspiel-Schwierigkeit erstellen, zum Beispiel, nennen Sie es Spiel-Schwierigkeit gleich Spiel-Schwierigkeitsgrad Punkt einfach. Das ist also die Art und Weise, wie dies geschrieben wird. Dies erzeugt also eine neue Variable vom Typ Spielschwierigkeit und setzt sie dann auf den Wert easy. Wir können auch das gleiche mit der Sprache, Sprache und machen es Sprache dot Englisch, denn das ist, was es ist. Und wenn wir dann zu debuggen dot log dies, so zum Beispiel, Spielschwierigkeiten, und lassen Sie uns dies über und Debug-Sperrsprache kopieren. Dann. Nun, mal sehen, was wir da rauskriegen können. Einige interessante, gut, einfach und Englisch. Es ist also buchstäblich genau das, was wir hier geschrieben haben. Das ist also auch irgendwie schön, dass wir einfach ausgeben können. Und das wird ausgegeben. Warum sollten wir Enums anstelle einer ANOVA verwenden, zum Beispiel eine Zeichenfolge oder so etwas. Nun, in einer Schnur können wir immer einen Pfeil machen. Wir können etwas oder so etwas in einer Enumeration falsch schreiben. Wir nennen es immer, indem wir den Namen der Enumeration aufrufen und dann Punkt und dann, was auch immer die vordefinierten Werte dafür sind. Deshalb können wir nichts wirklich falsch schreiben. Ja, und das ist im Grunde schon es für die Enums kann wirklich, wirklich nützlich für bestimmte Dinge sein. Am besten ist es, wieder einmal ein wenig mit ihm herumzuprobieren, zu
sehen, was Sie sehen können. Und dann glaube ich, dass in den zukünftigen Vorträgen,
vor allem, wenn wir uns mehr ansehen, als wir einige Beispiele davon sehen werden. Also ja, das war es für diesen Vortrag. Ich hoffe, du hast es nützlich gefunden. Wenn es irgendwelche Fragen wie immer, zögern Sie nicht zu fragen und ich werde sicher sein, zu antworten. Und ja.
38. (C#) Exceptions und Probiere die Fangmeldung: Alles klar, willkommen zurück zur C-scharfen Einführung hier für den Einheitskurs. Und in diesem Vortrag werden wir einen Blick auf Ausnahmen werfen. Also, was sind Ausnahmen? Wir haben schon einige von ihnen gesehen, wenn es einen Fehler gibt. Im Grunde ist das, was wir eine Ausnahme nennen könnten. Aber lassen Sie uns einfach das Ausnahmeskript hier öffnen und sehen, was wir sehen können. Also zuerst werden wir hier ein neues ganzzahliges Array mit zwei ganzen Zahlen erstellen. Und dann sagen wir Debug Dot Log. Und dann sagen wir Nummer drei. Ich meine, in dieser Angelegenheit können wir auch Nummer zwei machen, und das wird im Grunde eine Ausnahme auslösen. Was ist nun eine Ausnahme? Nun, lassen Sie uns so darüber nachdenken. Sagen wir einfach, lass es uns Hallo machen. Ich bin auch hier ist eine weitere Ausgabe, die wir tun werden, nachdem wir Nummern zwei aufgerufen haben, was natürlich nicht existiert, weil Zahlen nur von 0 zu eins gehen, weil 0 der erste Index ist und dann der zweite Index eins ist. Also lassen Sie uns das einfach ein Ende nennen. Wie wir sehen können, werden wir Index außerhalb des Bereichs Ausnahme haben. Index war außerhalb der Grenzen des Arrays, und dann alles, nachdem es nicht halten konnte. Warum ist diese Ausnahme? Warum brauchen wir, warum passiert das? Was ist hier los? Nun, wir haben hier natürlich einen Fehler gemacht. Der Fehler in diesem Fall war, dass wir versuchen, auf
eine Nummer oder etwas zuzugreifen , das nicht existiert, und deshalb wird es eine Ausnahme auslösen. Jetzt können wir etwas dagegen unternehmen. Und was wir dagegen tun können, ist, dass wir im Grunde sicherstellen können, dass wir das
nicht tun, selbst wenn eine Ausnahme passiert, alles geht weiter. Also habe ich das im Grunde kommentiert und wir werden eine neue Methode dafür erstellen. Nur um dies zu zeigen, werden
wir dies die Divid-Methode nennen. Wir werden nur Float a und durch Float b teilen. Also werden wir eine geteilt durch b zurückgeben und berühmt, Sie können nicht durch 0 teilen. Also, wenn d gleich 0 ist, was wir tun werden, ist, dass wir eine neue Ausnahme werfen, kalt oder eine Nachricht darin. Sie können nicht durch 0 dividieren. Also lasst uns das einfach machen. Also lassen Sie uns Debug Dot Log tun. Lassen Sie uns etwas teilen wie zehn durch fünf geteilt. Und dann noch ein zweites. Wir machen 22 geteilt durch 0. Nennen wir das einfach so, wie es ist. Und mal sehen, was passiert. Fangen wir an. Und wie wir sehen können, werden
wir hier eine Ausnahme bekommen. Sie können nicht genau die Nachricht, die wir hier eingegeben haben, durch 0 teilen. Was wir auch tun können, ist, lassen Sie uns einfach in eine 22 geteilt durch 0 als auch. Lass es uns einfach so reinlegen. Und wie Sie sehen können, funktioniert das eigentlich nicht, weil 0 eine Konstante ist. Also müssten wir etwas wie float z tun und ich bin mir nicht einmal sicher, okay, dieser funktioniert, weil die,
das ist eine Variable und es überprüft keine Variablen. Wenn wir das tun, kommen wir rein, wir unendlich werden. Sehr interessant. So unendlich, was natürlich. Du könntest sagen, Nun, ich meine, das ist ziemlich gut, oder? Das ist okay. Ich müsste vermuten, dass es
viel mehr Dinge zerbrechen wird , als die Ausnahme in diesem Fall ausgelöst zu haben. Also, warum? Warum brauchen wir das? Was können wir tun? Nun, wir können folgendes tun, und das ist eine tolle Sache. Was wir tun können, ist, dass wir etwas tun können, das man versuchen und fangen nennt. Also werden wir in das Schlüsselwort try setzen. Und dann setzen wir das Schlüsselwort ein, das Klammern danach hat. Und dann im Inneren von hier werden wir Ausnahme e machen und dann lassen Sie uns einfach den Debug darin stecken. Und sagen wir auch, haben Sie hier einen Debug. Und wir werden das Protokoll debuggen. Lassen Sie uns sehen, Warnung die Ausnahme. Und lasst uns, ja, machen wir das einfach. Und lassen Sie uns zum Beispiel auch ein anderes einfügen. Also ein 120 mal sechs oder so etwas. Dies ist die Ausnahme davon ist die normale und dies ist nur eine danach. Mal sehen, was jetzt passiert. Rufen wir das an. Und wie Sie sehen können, zwei und dann bekommen wir die, die Systemausnahme. Sie können nicht durch 0 dividieren. Jetzt ist dies kein Fehler mehr, denn was wir getan haben, ist dass wir die Ausnahme mit diesem Fang zitiert haben. Und was gemacht hat. Und was hier möglich ist, ist, dass wir dann grundsätzlich weitermachen können. Also, wenn ich das tun würde und ich sage, nach dem Versuch und Fangen, dann was wir sehen können, ist das Folgende, dass der Code fortgesetzt und fortgesetzt wird, nach diesem Versuch und Fang, und es wird nicht aufhören. Deshalb ist ein Versuch und Fang, weißt
du, so etwas ist wirklich gut. Es gibt auch etwas namens Endlich, dass wir verwenden können. Und das wird schließlich im Grunde kalt in allem, was hier passiert. Also versuchen wir es zuerst und wir werden das fangen, und dann werden wir das endlich tun. Was auch immer im Grunde passiert, ob wir eine,
eine Ausnahme fangen oder nicht. Das wird endlich kalt. Und am Ende hier ist die Idee,
dass ich es irgendwie bekomme, aber warum brauchen wir sie? Die Idee von ist, dass wir eine Ausnahme werfen, anstatt das Programm abstürzt. Das ist eines der großen Dinge. So wird eine Ausnahme ausgelöst, wenn dies normalerweise tatsächlich wie zu einem Absturz führen würde. Aber wir können das dann mit bestimmten Dingen versuchen. Wir wissen nicht immer, wo Ausnahmen geworfen werden könnten. Manchmal wissen wir es jedoch, und dann können wir sie im Grunde mit dieser Try and Catch-Anweisung hier fangen. Und Ideen werden, wieder
einmal, dass wir dann hoffentlich entweder mit dem Fang, Tun Sie etwas dagegen oder machen Sie es so , dass wir einen Fehler beheben können, der später auf der Linie auftreten könnte. Das wäre natürlich vielleicht nicht die beste Idee, dies zu tun. Wir könnten es auch ein wenig anders machen, besonders in Unity selbst, wir können auch einen Fehler werfen. Also würde die Debug-Protokoll-Ära auch funktionieren. In diesem Fall denke
ich jedoch tatsächlich, dass diese Ausnahmeausnahme tatsächlich völlig in Ordnung ist, oder? Das ist es für Ausnahmen. Das ist nur ein kurzer kurzer kurzer Überblick. Wieder einmal, es ist nichts zu, sagen
wir spannend oder es ist nichts zu wichtig eigentlich. Aber es ist immer noch gut, das einmal gesehen zu haben, nur damit Sie wissen, was dieser Versuch und Catch bedeutet und was eine Ausnahme ist. Also, wenn das für diesen Vortrag war, hoffe
ich, Sie fanden es nützlich. Wenn es irgendwelche Fragen gibt, fühlen Sie sich frei zu fragen, und ich werde sicher sein, zu antworten. Und ja.
39. (C#) Grundlagen von Generics in C#: Alles klar, willkommen zurück zur steilen Einleitung hier für den Einheitskurs. Und in diesem Vortrag werden wir einen kurzen Blick auf ein Generikum werfen. In Ordnung, also lasst uns einfach das generische Skript hier öffnen. Und wir haben auch schon ein Paar-Skript bereit. Und wir werden ein generisches Skript erstellen. Also haben wir bereits etwas über Generika gesehen, das zum Beispiel eine Liste war. Und Sie können sehen, das ist Liste und dann t in diesen eckigen Klammern. Und dann waren wir in der Lage, einfach jede Art von Variablen dort drin zu setzen. Also jeder Datentyp, den wir in die eckigen Klammern setzen konnten und es funktionierte einfach. Und das ist im Grunde das, was wir jetzt erschaffen wollen. Also wollen wir eine Klasse erstellen, die eine generische Klasse ist, in der wir jede Art von Variable oder Datentyp einfügen können. Und ich werde dies mit einer Klasse zeigen, die ich für mich selbst auf einer halbregelmäßigen Basis verwende, ich würde sagen, es gibt etwas, das sehr ähnlich ist, ein Tupel genannt. Ich glaube, dass dies unter System ist, System.Out Tupel, richtig? Und Sie können im Grunde, wie Sie sehen können, 12 oder etwas anderes tun. Das Problem mit einem Tupel ist, dass Sie zwar im Grunde mehrere verschiedene Datentypen einfügen
können, Sie sie jedoch nie ändern können. So haben Sie ein Set es einmal und dann ist es fertig. Und deshalb habe ich im Grunde diese Paarklasse, die wir jetzt erstellen werden. Es ist also ziemlich einfach. Wir setzen tatsächlich die eckigen Klammern hinein und dann setzen wir x und y ein. Diese sind normalerweise mit einem,
einem Großbuchstaben und einem Singular gekennzeichnet . Aber theoretisch können Sie es auch x2 oder was auch immer nennen. Aber x und y wird gut gehen. Dann haben wir hier ein neues, neues Feld, das zuerst x sein wird. Und dann wird das tatsächlich eine Eigenschaft gesetzt werden. Und dann werden wir ein öffentliches warum zweites haben, das auch Getter und Setter ist. Und dann werden wir ein Publikum haben. Oh, tut mir leid, lasst uns noch einen machen. Da gehst du. Öffentliches Paar x zuerst, y Sekunde. Und dann wird dies zuerst zuerst SQL sein. Und das ist gleich der Sekunde. Und das ist es schon für die Paarklasse. So einfach kann es werden. Wir werden zuerst Ihren Kopf wirklich umwickeln müssen. Was bedeutet das? Wie funktioniert das? Nun, wenn ich zum Beispiel eine Zeichenfolge, eine
Zeichenfolge einfüge, dann wäre dies einfach eine öffentliche Zeichenfolge. Wenn ich ein ganzzahliges Tier setze, wäre dies eine ganze Zahl und das wäre ein Tier. Sie können es wirklich für alles verwenden, was Sie wollen. Und das x und das y werden einfach durch den
Datentyp ersetzt , den Sie eingeben, wenn Sie die Variable deklarieren. So können wir zum Beispiel ein Paar namens int string einfügen. Und lassen Sie uns dieses Beispiel einfach eins nennen. Nein, wow, Okay, nennen wir es Paar eins, y naught, was ein neues Paar von int String ist. Und dann im Inneren von hier, haben wir 2005 und zum Beispiel, ein Ja. Und das Tolle ist, dass wir dann nachher sagen können, dass ein Punkt zuerst zum Beispiel
gleich ist , um mit 200 zu sprechen. Also können wir das tatsächlich ändern. Und wenn wir dann zum Beispiel sagen Paar mit Tier und Schnur, dann können wir diese p R2 nennen. Und das ist ein neues Paar Tier und Schnur mit zum Beispiel einem neuen Vogel. Und ein neuer Vogel und eine Schnur. Sicher. Weil, warum nicht? Und dann können wir zum Beispiel auch zuerst anrufen, was ein tierischer Punkt-Punkt-Punkt ist. Das ist also eine ziemlich coole Sache, denn zuerst ist ein Tier, wir können dann einfach die Eat-Methode dazu aufrufen und es wird einfach funktionieren. Also die Idee von Generika, das ist wie ein sehr kleines, wie ein sehr einfaches Beispiel, richtig? Wie nicht zu kompliziert. Denn in der Theorie, zumindest in meiner persönlichen Erfahrung, fand
ich, dass es sehr selten ist, dass wir
wie ein sehr kompliziertes neues Generikum für alles brauchen . Alles andere ist in der Regel auch ziemlich leicht machbar. Es gibt einige Zeiten, in denen sie anwendbar sein könnten. diesem Grund zeige ich das als Beispiel. Aber normalerweise muss ich ehrlich sein, es ist sehr selten, dass sie wirklich kommen. Wenn sie jemals raufkommen. Das haben wir gesehen, und dann können wir natürlich weiter ausbauen. Aber im Augenblick werde ich es hier verlassen. Wie ich schon sagte, ein sehr grundlegender Überblick über Generika. Aber wie immer, wenn es irgendwelche Fragen gibt, zögern Sie nicht zu fragen und ich werde sicher sein, zu antworten. Und ja.
40. (C#) Grundlagen von LINQ in C#: Alles klar, willkommen zurück zur C-scharfen Einführung hier für den Einheitskurs. Und in diesem Vortrag werden wir einen kurzen Blick auf einen Link werfen. Also, was ist verbunden? Nun, lassen Sie uns einfach den Link in ein Skript öffnen und sehen, was wir sehen können. Dies wird also ein sehr einfacher Blick auf Link sein, oder auch als Sprache integrierte Abfrage bekannt. Und wir werden jetzt zwei Beispiele haben, ich werde
Ihnen zeigen, wie Sie im Grunde eine Liste filtern können. Und dann kann ich, ich werde Ihnen auch zeigen, wie man eine Liste nach einem bestimmten Parameter
bestellt, sagen wir mal. Das erste, was, können wir eine neue Liste bekommen, die nur die yahoo.com Männer in diesem Beispiel enthält, zum Beispiel, wo es nicht sein wird, Ich will jeden, der die yahoo.com Mail hat. Ich will die. Nun, wir können das tatsächlich bekommen, indem dies
zuerst mit System.Out Link haben. Sehr wichtig. Also müssen wir diesen Namespace verwenden und dann haben wir Zugriff auf neue Methoden auf unserer Liste. So wie Sie sehen können, alle als paralleler abfragbarer Durchschnitt, haben
wir die concat-Methode, wir haben ein paar Methoden hier. Und die Methode, die wir verwenden werden, ist wo. Dies ist also im Grunde eine Methode, die es uns ermöglicht, zu filtern. Und jetzt werden wir eine
interessante Sache im Grunde haben, die wir uns ansehen werden, was ein Lambda-Ausdruck sein wird. Und das wird so aussehen. Also werden wir ein Männchen haben, dann können wir diesen Pfeil im Grunde haben, oder? Dies ist im Grunde ein, ein Gleichheitszeichen und dann Interesse größer als. Und dann hier werden wir schreiben Mail Punkt enthält yahoo.com, und dann ist es. Und das filtert das im Grunde. Jetzt gibt dies eine neue, in diesem Fall gibt es ein neues Eisen unzählige. Wenn wir tun, um aufzulisten, nein, nicht auf Zeichenfolge, sondern auf Liste. Dann wird dies eine neue Liste zurückgeben, auf der wahrscheinlich das ist, was wir wollen. Aber was ist dieses Jahr, richtig? Das mag also etwas seltsam erscheinen. Ich verstehe das nicht. Wir haben den Pfeil noch nie vor dem Lambda-Ausdruck gesehen. Was ist das? Nun, die Idee ist, dass bei der Abnutzung braucht einen Funk, wie Sie sehen können, system.out.print. Und was ist ein Funk? Nun, ein Pilz, im Grunde ein variabler Typ oder ein Datentyp, der eine Methode oder Funktion speichert. Jetzt Pilz definiert als mit einer Zeichenfolge, in diesem Fall als Eingabe und ein bool als Ausgabe. Das ist also, was der String bool bedeutet. Die Post. Also das, jedes Element ist immer die Eingabe in diesem Fall, oder? Jedes der Elemente ist also die Eingabe. Und dann würden wir den Boolean als Ausgabe wollen. Okay, ist das in unserer neuen Liste oder nicht? Und dann werde ich sagen, nun, wenn es yahoo.com enthält, dann wird es Teil einer Liste sein. Wenn dies nicht der Fall ist, wird es nicht Teil einer Liste sein. Und das ist eigentlich so einfach,
dies für Leute zu filtern , die Dinge gesehen haben, wie zum Beispiel, die mit SQL gearbeitet haben, es ist ähnlich dem auf viele Arten. Und für das zweite Beispiel werde
ich schnell etwas kopieren. Also werde ich eine Liste von ganzen Zahlen kopieren, die Highscores genannt werden. Sie sind im Grunde zufällig, aber sie sind nur zufällig. Und was wir tun werden ist, dass wir Highscores Dot OrderBy machen können. Dies ist die Reihenfolge nach der Methode. Und wir können dann sagen, Punktzahl und dann einfach sagen, Punktzahl zum Beispiel. So würde dies jetzt die höchsten Punktzahlen bestellen. Nun, durch die, nach der tatsächlichen Punktzahl. Wie Sie sehen können, ist der Funk dort eine ganze Zahl und dann hat es eine andere Ganzzahl. Das ist also, was verglichen wird. Und das ist im Grunde wieder einmal, das eigentlich das, aber das ist es, was es verglichen wird. Die Idee ist, dass wir zum Beispiel, anstatt eine ganzzahlige Liste zu haben, könnten
wir eine Liste von Strings haben. Und dann könnten wir zum Beispiel nach
der Länge jeder der Strings sortieren , was auch funktionieren würde. Dies ist im Grunde die ganze Zahl, die hier zurückgegeben wird. Also geben wir einfach die ganze Zahl selbst zurück und sortieren danach. Dies ist wirklich nur ein sehr kurzer Blick darauf, ein sehr einfacher Blick darauf. Es gibt noch viel mehr Dinge hier drin. Aber noch einmal, wie viele davon, sagen
wir spätere Beispiele hier oder spätere Themen. Sie sind wirklich nicht so förderlich. Blick auf die Unity selbst. Ich wollte das nur noch einmal erwähnen, und auch etwas, das Sie natürlich selbst recherchieren können. Und wenn vielleicht genug Leute daran interessiert sind, könnte
ich einfach einen zusätzlichen Vortrag machen. So
könnten beispielsweise die Lambda-Ausdrücke zumindest ein wenig interessant sein. Obwohl es auch andere Datentypen gibt, die wir verwenden oder andere Möglichkeiten, können wir ähnliche Dinge innerhalb von Unity verwenden. Nun, ja, das war im Grunde der ganz einfache Blick auf Link. Wie ich schon sagte, wenn es genug Interesse gibt, könnte
ich hier ein bisschen tiefer tauchen. Für Unity selbst ist es wirklich nicht notwendig. Diese Methoden, die ich Ihnen gezeigt habe, die Abnutzung auf der Bestellung BY sind wirklich nett und dann vielleicht einige andere, die nützlich sein könnten. Aber an dieser Stelle glaube
ich, dass dies die wichtigsten zwei sind und alles andere, was man auf jeden Fall betrachten kann. Und wenn es Interessen gibt, wie ich sagte, nur um zu fragen, ob es hier etwas Unklares gibt , dann fragen Sie natürlich, und ich werde sicher antworten. Und ja.
41. (C#) Veranstaltungen und Delegierte: Alles klar, willkommen zurück zur C-scharfen Einführung hier für den Einheitskurs. In dieser Vorlesung werfen wir einen Blick auf die Veranstaltungen und die Delegierten. Dies ist ein, ein weiteres fortgeschritteneres Thema. Und wir werden uns nur einen kurzen Blick darauf werfen und sehen, was wir sehen können. Also das heikle Skript, öffnen wir das einfach. Wir haben bereits einen Float-Timer und einen Float Ziele Zeit. Nun, wie Sie sehen können, wird
dies innerhalb der Klasse anstelle der Start-Methode deklariert. Und das ist eine sehr wichtige Sache, weil wir dieses Mal tatsächlich
eine andere Methode von Unity verwenden , nur um dieses Beispiel zu zeigen. Und das wird die Update-Methode sein. Die Update-Methode ist einfach etwas, das einmal pro Frame aufgerufen wird. So haben Sie vielleicht gehört, dass die Spiele mit 60 Bildern pro Sekunde laufen. Und dann würde diese Methode 60 Mal pro Sekunde aufgerufen werden. Nun, was wir tun wollen, ist, etwas zu schaffen, wo wir grundsätzlich alle 10 Sekunden oder jede Sekunde eine bestimmte Methode aufrufen, wir setzen diese Zielzeit zum Beispiel auf. Und wir werden das mit dem Delegierten und Ereignissystem tun. Liebe hier ist, dass lasst uns nur tatsächlich, lasst uns zuerst eine Methode machen, die wir aufrufen wollen. So zum Beispiel, private Void-Testnachricht. Und wir werden das Debug-Punktprotokoll einfügen, kein Fehler, sondern ein normales Protokoll, nur eine Ausgabe, eine Nachricht ausgeben, so etwas. Und wir wollen diese spezielle Methode jedes Mal aufrufen, wenn etwas passiert. Und das können wir tun, indem wir folgendes tun. Also werden wir zuerst einen Delegierten machen. Das ist also ein öffentlicher Delegierter nichtig. Und dann werden wir das nennen, sagen
wir, auf zehn Sekunden zurück, nur als Beispiel. Und beim Delegaten, wie Sie sehen können, muss die gleiche Signatur wie die Methode haben, die wir es nennen werden. Das ist also ungültig, also ist dies im Grunde der Rückgabetyp und dann auch keine Parameter innerhalb von hier. Also im Grunde die gleiche Signatur wie yeah, Methode, wir wollen es nennen. Und dann, was wir tun können, ist, während dies der Delegierte ist, wir haben dann ein Ereignis und dann können Objekte im Grunde dieses Ereignis abonnieren. Also werden wir eine öffentliche Veranstaltung veranstalten. Und das ist von Typ auf zehn Sekunden nach, wo dies im Grunde der Typ des Ereignisses ist. Und dann geben wir ihm einen Namen, zum Beispiel Autocomplete. Und so funktionieren das Ereignis und die Delegierten grundsätzlich Initialisierung. So Objekte, Objekte können Ereignisse abonnieren. Richtig? Was wir jetzt tun werden, ist, dass wir die Testnachrichtenmethode hinzufügen. Zu dem Ereignis, und jedes Mal, wenn dieses Ereignis abgekühlt wird, wird
diese Methode aufgerufen. Also sagen wir zum Beispiel onComplete. Und dann machen wir Plusgleich-Testnachricht. Und das Wichtigste ist, ohne die Klammern, also werden wir nur den Namen der Methode hier nehmen. Und was dies tun wird, ist im Grunde, dies wird diese Methode zu einer Liste auf diesem Ereignis
hinzufügen. Dass, wenn dieses Ereignis kalt wird, dann werden wir sicherstellen, dass diese Testnachricht Zeitplan als auch. Also lassen Sie uns einfach eine Möglichkeit hinzufügen, dies aufzurufen. Deshalb habe ich diesen Timer hier drin. Es gibt eine ziemlich einfache Möglichkeit, den Timer im Grunde hinzuzufügen. Jetzt wird das eine faire, ziemlich einfache Sache sein. Ich werde diese Ziele Zeit erklären und dann werden wir Timer gleich 0 sagen. Und dann sagen wir OnComplete und rufen das auf und das ist gleich. Und was passiert hier? Nun, jeder Frame, wir werden im Grunde ein wenig Zeit zu dieser Timer-Variable
hinzufügen, die 0 ist. Und dann werden wir überprüfen, hey, ist der Timer größer oder gleich der Toilettenzeit? Wenn das der Fall ist, werden
wir den Timer und Kohle zurücksetzen onComplete. Dies sollte etwa alle 10 Sekunden passieren, wie Sie sehen können, da die Zielzeit genau 10 beträgt. Lassen Sie uns dies auf so etwas wie vier reduzieren, so dass dies ein wenig früher passieren wird. Und dann alle vier Jahre, alle vier Sekunden werden wir diese Nachricht ausgeben lassen. Mal sehen, ob das tatsächlich funktioniert. Natürlich, um sicherzustellen, dass wir auf Vorlesung 38 Veranstaltungen sind. Im Moment passiert nichts. Aber nachdem vier Sekunden vergangen sind, sollten
wir sehen, dass sie gehen und dann nach weiteren vier Sekunden sollten wir eine weitere Botschaft sehen. Wie Sie sehen können, Lassen Sie uns dies reduzieren, so dass wir jede Methode Nachricht sehen können. Und wie Sie alle vier Sekunden sehen können, wir jetzt diese Nachricht erhalten, die ausgegeben wird. Warum ist das so eine tolle Sache? Warum rufen wir nicht einfach die Testnachrichtenmethode hier auf? Nun, wir können sehen, dass diese Durcheinander Testnachrichtenmethode eigentlich privat ist. Und vielleicht wollen wir, dass dies in ganz
bestimmten Momenten geschieht , und wir wollen es nicht so schaffen, dass jedes Ding, jeder Teil unseres Programms über jeden anderen Teil weiß. Zum Beispiel haben wir vielleicht ein HP System für einen Feind oder uns selbst. Und wir haben dann eine UI innerhalb unseres Spiels, die zeigt, wie viel HP, entweder der Feind oder uns selbst, wie sagen wir, der Spieler, dann was wir tun könnten, die UI könnte wissen, okay, das ist die Gesundheit des Spielers und sie könnten Überprüfen Sie jeden, jeden Update-Frame, oder? Also jeder Rahmen, okay. Wie wär's mit dir selbst, Das ist Spieler, wie viel? Ständig aktualisiert, aber wir müssen es nicht ständig aktualisieren. Wir müssen es eigentlich nur aktualisieren, wenn sich die HP ändert. Und dann können wir diese Ereignisse machen. Also ein Delegat Art von HP ändern. Und dann haben wir ein Ereignis, das dann im Grunde die UI-Methode aufruft und acht sagt, das Vereinigte Königreich, die HP-Änderung. Das ist also die Idee, diese Ereignisse zu abonnieren. Wir können unseren Code sehr sauber trennen. Und es gibt auch keinen wirklichen Nachteil, diese Ereignisse zu haben. So können Sie im Grunde wie ein 100 oder 200 Ereignisse, ein Feuer machen. Und wenn ihre Abonnenten groß. Und wenn du es nicht tust, verlierst du gar nichts, denn in diesem Fall nennen wir das, nicht wahr? Also, das sind im Grunde Ereignisse jetzt insgesamt, das ist auch nur ein sehr kurzer Blick und Blick in sie. Wenn, sobald wir tatsächlich mit der Programmierung eines echten Spiels beginnen, werden
wir Spiel oder eine Spieleinheit Heap. Dann werden wir das wieder benutzen. Und ich glaube, dass es in diesem konkreten Beispiel viel klarer wird. Sofort. Ich wollte Ihnen nur zeigen, dass es etwas gibt, das als Ereignisse und Delegierte bezeichnet wird. Und wieder einmal ist es wirklich schwierig, sie zu meistern. Und ja, es ist nur etwas, das sehr gut ist, eine gesehen zu haben. Und wir werden uns das später noch einmal ansehen. Ich wollte dir das nur schnell zeigen und wie das wirklich nützlich sein kann. Wir werden in einer zukünftigen Vorlesung sehen. Trotzdem, wenn Sie irgendwelche Fragen haben, zögern Sie nicht und fühlen sich frei zu fragen und ich werde sicher sein, zu antworten. Und ja.
42. (C#) Datei I/O: Alles klar, Willkommen zurück zur C-scharfen Einführung hier für den Einheitskurs. Und in diesem Vortrag werden wir einen Blick auf die Dateieingabe und -ausgabe werfen. Also habe ich eine sehr coole Textdatei vorbereitet, wie Sie hier in unserem Asset-Ressourcen-Ordner deutlich sehen können. Und lass es uns einfach öffnen und sehen, wie es aussieht. Es ist ein super coole Text. Ist das nicht großartig? Und wir werden jetzt lernen, wie wir das in lesen können. Und dann werden wir auch lernen, wie man eine neue Datei schreibt. Gehen wir einfach in unsere Akte I O Skript hier. Und ich habe bereits im Grunde den Lesepfad
und den Schreibpfad vorbereitet , den Sie in Assets, Ressourcen sein werden. Und dann ist die coole Textdatei diejenige, die wir einlesen werden. Und dann werden wir auf eine super coole Texte schreiben, die wir mit Code gemacht haben. Und wie ich hier sagte, t dot TXT, es ist nur eine normale Textdatei. Was brauchen wir also,
damit wir im Grunde Dinge ein- und ausgeben können? Nun, um etwas in eine Datei zu schreiben. Zuallererst ist es ein sehr langsamer Prozess. Jetzt langsam in Bezug auf den Vergleich von zwei Dingen, die wir im Code tun können. Es ist immer noch unglaublich schnell, aber normalerweise ist das Schreiben von etwas in eine Datei ein langsamer Prozess. Das wollte ich nur erwähnen. Und wir müssen den system.console Namespace hier verwenden. Und dann werden wir sehen, also zuerst werden
wir überprüfen, ob die Datei überhaupt existiert oder nicht. Dateipunkt existiert also. Und dann werden wir den roten Pfad
zuerst setzen , weil wir schauen,
ob der Pfad lesen eine Datei hat, die dort existiert. Denn wenn nicht, können
wir das nicht wirklich öffnen. Und jetzt werden wir einen Stream-Leser verwenden. Also Stream-Leser SR Datei Punkt öffnen Text, und dann werden wir ihm den Pfad geben. Nun ist das Tolle an dem Stream-Leser, dass dies ein i Einweg ist, glaube
ich, ist der richtige Begriff dafür. Und hoffe, Sie tun es gibt, können wir das using-Schlüsselwort verwenden. Nun, Sie haben das noch nicht gesehen. Wir können tatsächlich das using-Schlüsselwort nehmen und wir können all dies nehmen, setzen Sie es in hier. Und dann, wenn wir damit fertig sind, wird
es
den Stream-Leser für uns schließen , weil wir die Datei wahrscheinlich wieder schließen müssen. Und das wird im Grunde alles mit dem using-Schlüsselwort behandelt. Und im Inneren von hier werden wir eine Schnur haben, coole S. Wir könnten es auch eine Gewohnheit nennen, ein bisschen besserer Name. Ich denke, AS wird vorerst ausreichen. Und ich werde eine while-Schleife innerhalb von hier haben, was wir sagen werden, nun, S ist gleich SR dot readline. Das ist also, die rote Linie ist einfach eine Zeichenfolge und wir werden S auf diese Zeichenfolge setzen. Und solange das NICHT null ist. Also, während das nicht null ist, werden
wir nur im Grunde S ausgeben also werden wir jede dieser Zeilen lesen, die hier drin sind. Es gibt nur eine Zeile hier drin. Wir werden es ausgeben. Und wenn wir fertig sind, sind wir damit fertig. Der Stream-Leser wird grundsätzlich entsorgt. Und jeder ist wieder glücklich. Das ist alles, was wir wirklich brauchen, um im Grunde eine Datei zu lesen. Mal sehen, ob das funktioniert. Stellen Sie sicher, dass wir auf Datei IO sind. Machen wir uns keine Sorgen um diese Warnung. Dies liegt einfach daran, dass wir die richtige Pfadvariable deklariert, aber nicht verwendet haben. Und mal sehen, bei supercool, Texte werden genau das, was wir in die Datei geschrieben haben, tatsächlich ausgegeben. Das ist also ziemlich cool. Und nun mal sehen, was wir tun können, um etwas zu schreiben. Also, wenn wir etwas schreiben wollen, werden
wir den Stream Writer verwenden. Also werden wir noch einmal sagen, verwenden und dann streamen Writer. Dies wird dann SW ist gleich Dateipunkttext, in diesem Fall auf dem rechten Pfad. Und wir werden dann im Grunde das haben, was wir nennen, ist die SW. Also der richtige Stream Writer, dot-dot-dot schreiben Zeile. Und dann können wir zum Beispiel
Hallo sagen, und dann lassen Sie uns das einfach ein paar Mal kopieren. Das ist eine andere Zeile. Ziemlich cool. Wie das funktioniert. Also lassen Sie uns das versuchen und sehen, ob das funktioniert. Also im Moment haben wir keine neue Datei in unserem Ressourcenordner. Und wenn wir damit beginnen, was wir sehen können, lassen Sie uns das beenden. Und wir
müssen das, glaube ich, neu laden, weil es nicht richtig ist, wir müssen auffrischen. Also Control R. Und dann, wie Sie sehen können, wie sie gehen. Und wie Sie sehen können, super coole Texte, die wir mit Code gemacht haben, hier drin. Und dann Hallo, das ist eine Ausrichtung. Ziemlich cool, wie das funktioniert. Alles, was wir hier reingesteckt haben, genau wie wir es gemacht haben. Und nun lassen Sie uns diese Änderung ein paar dieser Zeilen zusammenfassen. Lassen Sie uns zum Beispiel sagen, Sicher, Wie würden Sie, Warum nicht? Dies ist eine weitere Zeile und dann ziemlich cool, wie das funktioniert. Und dann lasst uns dies vielleicht zu einem von
denen ändern und sehen, was passiert, wenn wir das einfach noch einmal ausführen. Also lasst uns das einfach reinlegen. Und wieder einmal, wir haben das keine Fehler gemacht, das ist irgendwie nett. Öffnen wir diese Datei erneut. Und wie Sie sehen können, mögen sie, dass das Programm geändert hat, was hier wieder geschrieben wurde, also wird es überschreiben, was wir bereits haben. So wird die UN,
die Textdatei am richtigen Pfad in diesem Fall einfach mit dem neuen Zeug überschrieben. Ja, das sind die Grundlagen wirklich außerhalb der Dateieingabe und -ausgabe. Es gibt auch fortgeschrittenere Dinge. Und während der Unity-Programmierung Teil dieses Kurses werden
wir uns vor allem ansehen, wie man Dinge mit
JSON-Dateien liest und schreibt , weil sie so formatiert sind, dass wir sie ziemlich einfach verwenden können. Aber insgesamt war dies nur ein kurzer, kurzer kleiner Überblick über die Dateieingabe und -ausgabe. Wie immer, Ich hoffe, Sie fanden es nützlich, wenn es irgendwelche Fragen, wie immer fühlen Sie sich frei zu fragen jetzt sicher sein, zu antworten. Und ja.
43. (C#) C#: Alles klar, willkommen zurück zur C-scharfen Einführung hier für den Einheitskurs. In diesem Vortrag werden wir einen Blick auf diese C-scharfen Konventionen werfen. Dies ist also potenziell der letzte der C-scharfen Vorträge hier. Und wir werden uns nur schnell
ein paar Konventionen ansehen , die Sie befolgen sollten, wenn überhaupt möglich. Also lassen Sie uns einfach das Konventionsskript öffnen und sehen, was wir sehen können. Also habe ich hier ein paar Dinge vorbereitet und ich werde von oben nach unten
einige dieser Konventionen erklären und warum sie nützlich sein könnten und warum Sie ihnen wahrscheinlich folgen sollten. Alle Dinge betrachtet und auch gekauft ein paar dieser Dinge sind. Also erste Dinge, erstklassige Namen, richtig? So wären das zum Beispiel Konventionen und was wir gesehen haben abstraktes Tier oder Tier oder Person, sollte Pascal Fall sein. Was ist Pascal Fall? Pascal Fall bedeutet einfach, dass die Art und Weise, wie wir schreiben bestimmte Wörter, in diesem Fall, wie Sie sehen können, abstraktes Tier. Während dies alles ein Wort ist, ist
die Zusammenfassung ein Wort und Tier ist ein Wort. Und sie sind beide kapitalisiert. Also das ist es, was Pascal Fälle. Wir Großschreibung des ersten, des ersten Charakters. Und jedes Mal, wenn wir zu einem neuen Wort kommen, machen
wir dieses Wort auch groß. Das ist sehr wichtig. Das ist der Fall Pascal. Wenn wir lokale Variablen, Feldnamen
und auch Parameter betrachten , sollten diese CamelCase sein. Camelcase bedeutet einfach, dass das erste Zeichen Kleinbuchstaben ist. Und dann wird jedes Wort, das danach kommt, Großbuchstaben sein. Wenn wir uns Konstanten ansehen, haben
wir das Schlüsselwort const nicht wirklich gesehen. Die Idee hier ist einfach, dass dies eine Variable ist, die nicht geändert werden kann. Es wird also nicht so kompliziert sein. Die Idee ist, dass diese auch im Pascal-Fall sein sollten und nicht in schreienden Kappen. Das ist etwas, das ich manchmal persönlich mache. Ich denke, dass dies eines dieser Dinge ist, wie bei all diesen Konventionen, die nicht wirklich Regeln sind, sie sind nur Richtlinien, die helfen könnten. Und das ist wahrscheinlich eine persönlich, die ich würde. Ich persönlich ignoriere das wahrscheinlich die meiste Zeit, nur
weil ich manchmal das Gefühl habe, dass es leichter zu sehen ist,
okay, das ist eine Konstante. Auch wenn Sie in der Lage sein sollten, dies an dem Symbol zu sehen, das es hier hat. Allerdings mache ich normalerweise alles in schreienden Kappen, aber es ist immer noch eine Konvention, der man vielleicht folgen wollte. Daher verwenden wir immer aussagekräftige Namen für Variablen. Ich habe das schon ein paar Mal erwähnt. Aber es ist sehr gut, einen Eigennamen für Variablen zu haben. Wir haben das die meiste Zeit benutzt. Ich denke, dass ein oder zwei Mal habe ich dies nicht getan, aber in der Regel sollten Sie die einzelnen Buchstaben vermeiden. Also zum Beispiel, die ganze Zahl t und wir werden sehen, okay, na ja, was bedeutet das? Nun, es ist viel einfacher zu lesen, wenn ich es in der Timer und die Vollzeit oder abgeschlossen. Und haben Sie auch keine Angst vor wirklich langen Namen für Variablen. Wenn es ein ausdrucksstarker Name ist und es ein sinnvoller Name ist, dann sollten Sie wirklich keine Angst davor haben. Denn je besser man etwas erklären kann, desto leichter ist es zu verstehen. Deshalb sollten wir immer aussagekräftige Namen für Variablen verwenden. Ich persönlich bekomme das auch manchmal falsch, aber wenn man darüber nachdenkt, wenn man schnell programmiert, würde
man dieses S einfach nennen oder es einfach in AI anrufen. Aber was ist KI? Was ist ihr Zweck? Und das kann manchmal dazu
führen, dass Sie über Ihren Code etwas besser nachdenken und denken, naja, eigentlich brauche ich diese ganze Zahl nicht wirklich, diese Variable hier. Also ja, verwenden Sie keine Abkürzungen in Ihren Namen von Variablen. Also Dinge wie ID und XML und so etwas. Das ist in Ordnung, aber nicht persönlich zu machen und dann PRS n dafür zu tun. Das wird nur zu Verwirrung führen. Und ich muss ehrlich sein. Diese beiden, die zwei Charaktere,
die du dort rettest werden einfach keinen Fehler machen. Es gibt eine Sache, die wir nicht wirklich Unterstriche in C-Sharp verwenden. Das ist nur die Konvention. Besonders in, naja, eigentlich in irgendetwas außer den privaten Feldern. Und wir haben dies in der C Sharp Eigenschaften Vorlesung gesehen, wo ich eine gemacht
habe, ich glaube, es war eine boolesche oder eine Art von Variable, die privat war. Und damit habe ich mit einem Unterstrich angefangen. Das ist in Ordnung. Eine Klassennamen sollten immer Substantive sein. Also Tier, Person, das sind Substantive, richtig? Und sie sollten auch einzigartig sein, wenn ich mich nicht irre. Das ist also auch etwas, das keine
Tiere oder Personen sein sollte , weil es immer eine Klasse ist. Es ist ein singuläres Substantiv, das eine Klasse beschreibt. Also lassen Sie uns die Präfix-Schnittstellen mit dem Buchstaben I hören. Also das I flyable. Das war eine Schnittstelle, die wir getan haben, von der wir die Fly-Methode aufrufen konnten. Und es wird gesagt, dass wir das mit dem Großbuchstaben I beginnen sollten. Jetzt mögen manche Leute das wirklich nicht, weil sie so sind, ich weiß, ob dies ein ist oder nicht, dies ist eine Schnittstelle. Ich persönlich denke, dass dies eine gute Konvention ist. Es gibt jedoch einige Leute, die sehr,
sehr starke Meinungen haben , oder wir brauchen das nicht,
was auch immer, folgen oder ihm nicht folgen,
es spielt keine Rolle, bleiben Sie einfach konsequent. Das ist wie eines der wichtigsten Dinge. Wenn Sie Ihre Konventionen auf halbem Weg durch Ihr Projekt ändern, müssen
Sie zurückgehen und
den Rest des Codes so neu schreiben , dass er Ihren Konventionen entspricht. Wenn Sie ein paar Konventionen haben und sich an sie halten, aber nicht verrückt werden. Und auch das etwas anderes. Es ist oft so, dass wir an den Schnittstellen mit Able enden. Damit es irgendwie fliegbar ist, rede ich Blase. Weil diese Art auch bedeutet,
okay, was sind sie in der Lage zu tun? Das ist also auch etwas, das man mitnehmen kann. Dann sollten wir immer Singular Namen für Enums haben. So Spielschwierigkeiten, zum Beispiel, nicht Spielschwierigkeiten. Und wir sollten niemals den Namen im Inneren verwenden, wie enum innerhalb des Namens. Wir sollten also keine Spielschwierigkeiten haben. Enum oder Color Enum, immer nur die einzige Sache, dass es eine nie verwendende Enum ist. Woher habe ich das hier? Ich habe das von einem GitHub-Repository von Namenskonventionen. Dies ist natürlich ebenso verknüpft wie eine Ressource. Ich kann Ihnen nur raten, sich das auch anzusehen, weil es noch ein paar Dinge gibt. Dann habe ich hier reingesteckt. Ich habe das waren nur die wichtigsten, die ich gesehen habe. Und ich kann Ihnen nur raten, einen Blick auf den Link zu werfen. Das sind sie. Denn das sind einige gute Namenskonventionen, die Sie befolgen sollten. Zumindest die meisten von ihnen, um Ihren Code so standardisiert und einfach zu lesen wie möglich zu machen. Aber insgesamt, das war es mit der C-scharfen Einführung hier für den Kurs. Und ja, das war's. Ich hoffe, dass es für Sie nützlich war, und jetzt ist es los, im Grunde Unity richtig zu lernen. So können Sie sich natürlich
zunächst einmal dazu gratulieren, dies zu erreichen und
hier einzusteigen , weil es die gründliche Einführung war. Und es gab ein paar Dinge, die Sie wahrscheinlich
je nach Ihrem bisherigen Kenntnisstand lernen müssen . Aber ja, es ist fertig und ich hoffe, du hast es nützlich gefunden. Und am Ende hier, wie immer, wenn es irgendwelche Fragen gibt,
zögern Sie nicht, zu fragen und ich werde sicher sein, zu antworten. Und ja.
44. (Grundlagen (Unity) Unity und Editor erklärt: Alles klar, Willkommen bei der Einführung der grundlegenden Einheit hier für den Einheitskurs. Und in diesem Vortrag werden wir einen Blick auf die Einheit Layout werfen,
die spezifischen wie bearbeiten Dinge und gut, nur ein paar Herzen und ein paar Teile der Fenster im Grunde, einfach schnell erklären wie wenig Überblick gegeben, so dass Sie wissen, was all das bedeutet und dass Sie Ihren Weg im Grunde innerhalb der Unity-Benutzeroberfläche finden können, die Sie sehen, es gibt viele bewegliche Teile, viele Schaltflächen, die Sie klicken können und nicht nur sie. Nur eine kurze kleine Einführung dafür. Also werden wir im Grunde ganz oben links anfangen. Dies hier ist im Grunde das Szenenfenster. Und es ist eines der wichtigsten Dinge in Unity, denn das ist es, was dir im Grunde deinen Blick auf deine Spielwelt gibt, richtig? Momentan wird dies grundsätzlich in den 2D-Modus versetzt. Sie können sehen, wann in der Szene als 2D-Ansicht umgeschaltet ist, wenn sie wie in der 3D-Ansicht von der Szene abgeschaltet ist. Idee hier ist, dass dies
natürlich ein 2D-Kurs ist. Also werden wir alles in 2D machen. Wir können in die dritte Dimension schauen, indem Sie auf diese Schaltfläche klicken. Und dann, wie Sie sehen können, Wir erhalten im Grunde eine 3D-Ansicht. Aber da wir das nicht wollen, werden
wir bei 2D bleiben und dann nur herausfinden, wie wir uns hier bewegen können. Wenn wir also die rechte Maustaste nach unten drücken, sehen
wir eine kleine Hand erscheinen und dann können wir die,
im Grunde die Spielwelt bewegen . Dann verschiebt sich die Aussicht und wir können uns bewegen, oder? Das ist also ein ziemlich nützliches. der mittleren Maustaste können wir mit ihnen hinein- und auszoomen, natürlich können
wir uns auch bewegen, wenn wir die mittlere Maustaste gedrückt halten. Und dann können wir uns im Grunde bewegen. Wenn wir die linke Maustaste gedrückt halten, können
wir Dinge auswählen. Derzeit in unserer Szene. Wir können sehen, was wir hier drin haben, hier in der Hierarchie. Wir werden uns das auch etwas später ansehen. Aber im Moment haben wir nur die Hauptkamera hier drin. Und wir können dies zum Beispiel auswählen. Und dann, wie Sie sehen können, erscheint zuerst die Hauptkamera hier unten. Das ist also, was wir innerhalb des Spiels sehen würden. Und dann auf der rechten Seite hier erscheint
eine ganze Reihe von Sachen, die wir auch in einer Weile betrachten werden. Was ist also sonst noch die Szenenansicht? Zwar gibt es hier eine Reihe von Tasten, im Grunde können Sie das Audio ein- und ausschalten. Sie können die Szenenbeleuchtung verwenden. Es gibt Dinge für Himmelskartons. Sie können sehen, wie viele Objekte es gibt und auch im Raster umschalten. Zum Beispiel, im Moment haben wir kein Gitter, und dann haben wir ein Gitter. So kann das Gitter wirklich nützlich sein. Und manchmal kann es auch sein, dass die Gizmos ausgeschaltet sind. Also die Gizmos, oder im Grunde, wenn ich auf diese kleine Schaltfläche hier klicken, können
Sie sehen, gibt es bestimmte Symbole, die Sie sehen, die einfach geholfen haben, bestimmte Dinge innerhalb der Szenenansicht zu finden. Zum Beispiel die Kamera, richtig? Es spielt nicht fast keine Rolle, ob ich etwas verkleinere, dann sind die Kameras noch da. Und wenn ich viel heranzoomen als die Kameras noch größer,
aber es zeigt dir einfach in Ordnung, da ist die Hauptkamera oder es gibt eine Kamera und wenn wir das ausschalten, dann sehen wir nichts und wir wissen nicht einmal, wo sich die Kamera in diesem Fall befindet . Also sind die Gizmos im Grunde dafür, uns zu helfen, bestimmte Dinge zu sehen, die visuelle Hilfsmittel sind. Groß, dass Sie nur innerhalb der Szenenansicht sehen können, oder? Und dann gibt es hier auch nur eine Art Werkzeugkiste. Ich benutze das selten. Und dann können Sie hier auch die Kameraeinstellungen ändern. Dies sind also die Einstellungen für die Szenenansicht Kamera. In diesem Fall. Ich würde auch sagen, dass ich das normalerweise nicht benutze. Hier können Sie auch nach etwas suchen. Aber es gibt viele Suchbalken, tatsächlich gibt es eine hier, es gibt eine hier. So können wir auf viele Arten suchen. Das ist also das Szenenfenster. Im Grunde. Sie können hier auch verschiedene Modi oben links haben. Und die werden im Moment im Grunde nichts tun, wenn wir Dinge hier drin haben. Also hier geht es auch mehr um, würde
ich sagen, um die 3D-Perspektive. So schattiert bedeutet einfach, dass, wenn wir einen Würfel hier drin haben, ich einfach einen wirklich schnell hinzufügen kann, damit wir das nur als Beispiel sehen können. Also im Moment haben wir hier einen schwarzen Würfel, wie Sie sehen können. Und wenn ich dann ein Drahtmodell mache, sehe das als Drahtmodell an. Und dann bedeutet ein schattierter Drahtkörper einfach, dass wir beide
das Drahtmodell unter dem schattierten Modus sehen . Wir haben auch verschiedene Dinge, die wir tun können, Pfade zu rendern. Wir können den Alpha-Kanal MIP-Map überzeichnen lassen. Das sind also einfach wie verschiedene Rendering-Ideen, sozusagen. Verwenden Sie zum Beispiel, ich halte es normalerweise schattiert. Das ist derjenige, der am sinnvollsten ist. Und in 2D sind die Unterschiede dort eigentlich sowieso nicht so wichtig. Ganz oben haben wir auch ein paar Werkzeuge, die wir verwenden können. Also habe ich gesagt, mit der rechten Maustaste oder mit der mittleren Maustaste klicken, können wir uns bewegen. Wir können auch einfach dieses Handwerkzeug auswählen und dann mit der linken Maustaste als Klick
bewegen. Das funktioniert auch. Wir haben das Werkzeug „Verschieben“. Das Move-Werkzeug ist im Grunde, wenn ich ein bestimmtes Spiel Objekte ausgewählt habe, zum Beispiel die Kamera, dann werden diese Pfeile erscheinen und mit denen Eigen im Grunde die Kamera bewegen. Und dann auf der rechten Seite sehen Sie , dass sich die Position der Kamera tatsächlich ändert. Wie ich schon sagte, in diesem Fall, weil wir in 2D sind, werden
wir nur
die x-Richtung in diese Richtung und die y-Richtung und diese Richtung brauchen . Und ja, das, ja, das ist im Grunde das. Dann haben wir die Rotation. Das ist also das Drehwerkzeug. Wir können uns im Grunde um diesen Winkel drehen, oder? Also können wir um die drehen,
das wäre die Z-Achse, richtig? Weil die Z-Achse diejenige ist, die in den,
in den Computer selbst geht . Und dann können wir grundsätzlich auch in diese Richtung gekippt werden. Aber normalerweise ist z-Achse die einzige Drehung, die wir brauchen, in zweidimensionalen ,
dreidimensionalen, wir würden natürlich, wir könnten uns um jede Achse drehen. Wir haben auch das Skalierungswerkzeug. Dies wird also nichts für die Kamera in diesem Fall tun, weil die Kamera, die Skala des Bildes der Kamera anders
gesteuert wird als die Skala des Objekts selbst. Das gilt also nur für verschiedene Objekte, aber in diesem Fall können wir dies mit diesem Werkzeug skalieren. Und dann ist dies mein im Grunde Lieblingswerkzeug, direktes Werkzeug. Denn wenn wir, vor allem in Zwei-Dimensionen, können
wir im Grunde die Fähigkeit haben, etwas nach oben oder unten mit den Seiten zu dimensionieren. Es ist sehr ähnlich zu etwas, das Sie sehen würden, wenn Sie den Übertragungsmodus in Photoshop für jeden von Ihnen aktivieren, der, wie wer versteht, was das ist. Das ist etwas, aber das werden wir später auch sehen. Und verschieben, drehen und skalieren Sie Objekte. Das bringt also einfach alle drei zusammen in einem. Ich persönlich bevorzuge diese Ansicht nicht. Manche Leute mögen das wirklich, weil sie dann tun können, was sie wollen. Wir haben auch das Editor-Tool. Allerdings haben wir hier keine benutzerdefinierten Tools. Das tut also wirklich nichts für uns. Ich persönlich behalte meine Einheit fast ausschließlich im Rack-Werkzeug und bewege mich wie gesagt, mit der rechten oder mittleren Maustaste, normalerweise mit der rechten Maustaste und zoomen so hinein und heraus. Ja, das ist im Grunde der Kern davon. Sie können auch auf diese Tasten von einer Person Q gehen, W, E, R, T, und dann die z war ah, das ist eigentlich die y gewesen. Ja, genau. Also q0, QWERTY sind im Grunde diese Tasten, die auch funktionieren, aber ja, es ist auch genug, wenn Sie einfach darauf klicken. Also lasst uns hier die Registerkarten wechseln und auf die Spielansicht schauen. Momentan, wie Sie sehen können, gibt es hier im Grunde nichts, weil wir im Moment nichts im Spiel haben. Dies ist einfach, was Sie sehen würden, wenn Sie das Spiel spielen. Und das ist es auch, was beginnt. Wenn wir also die Start-Taste hier oben drücken, die Play-Taste, ist dies auch, was wir sehen, so dass es automatisch in die Spielansicht wechselt, sobald wir das Spiel gestartet haben. Und die Spielansicht, wie ich schon sagte, ist das, was Sie auf jeden Fall möchten. Grundsätzlich eins-zu-eins-Beispiel für das, was Sie
innerhalb des Spiels sehen würden , wenn Sie es starten würden, gibt es bestimmte Dinge, die wir tun können. Wir können hier im Grunde verschiedene Displays haben. Jetzt. Im Moment haben wir nur eine Anzeige. Wir können die Auflösung derzeit festlegen, wie Sie es sehen können. Zwei, für k, wir können auch einfach sagen, gut tatsächlich lassen Sie uns es auf Full HD setzen. Das wird gut. Wir können es hochskalieren. So zoomen Sie einfach im Bild ohne irgendwelche Phantasie wie Zoom-Techniken oder jemand Ähnliches zu tun. Es ist buchstäblich nur vergrößert. Wenn wir auf maximieren spielen, sobald wir spielen, wird das Fenster hier maximiert, das kann wirklich nützlich sein, wenn Sie sehen wollen, wissen Sie, wie fast alle Details, weil dies fast Vollbild ist. Und dann gibt es Stummschaltung Audio sollte selbsterklärend sein. Die Muse das Audio. Wir können uns Statistiken ansehen, die laufen und wir können auch die Gizmos hier einschalten. Und das sind im Grunde die gleichen Gizmos, die wir haben, die Szenenansicht. Aber das ist die Spielansicht. Es ist eigentlich nicht so viel dran. Ja, lassen Sie uns einfach mit der Hierarchie fortfahren. Lassen Sie uns auch zurück zur Szenenansicht wechseln. Die Hierarchie sind grundsätzlich alle Dinge, die sich in der aktuellen Szene befinden. Derzeit befinden wir uns in der Musterszene. Dies ist eine Szene, die erstellt wird, wenn wir ein neues Unity-Projekt starten. Und wie Sie sehen können, haben wir hier im Grunde nur die Hauptkamera als Komponente. Wir können neue Komponenten hinzufügen, indem wir zum Beispiel zu diesem kleinen Plus-Button gehen. So können wir vordefinierte Dinge haben, die wir
erstellen können , oder wir können mit der rechten Maustaste in Jahr und haben auch das gleiche. Dinge, die wir vielleicht erschaffen wollen. So können wir zum Beispiel ein leeres Objekt erstellen. Und dieses leere Objekt hat buchstäblich keine, Es hat nur eine Position, Drehung und Skalierung. Und es hat keine, sagen
wir, visuelle Markierung jeglicher Art. Also wissen wir nicht einmal, wo das ist, wenn wir das hinzufügen könnten. Und dann, zum Beispiel, Dinge ändern. Aber im Moment werden wir das nicht hinzufügen und wir werden es einfach so behalten. Übrigens, wir, wenn sich die Szene ändert, oder? Wenn wir also die Szene ändern, , dann sehen Sie hier eine kleine Geschichte und einen kleinen Laden an der Spitze. Und der Laden kann, oh Junge, Sie können die Änderungen im Grunde speichern, indem Sie einfach
Control S verwenden oder zu Datei gehen und dann speichern Sie hier. Und, ähm, ich werde das wahrscheinlich mehrmals benutzen. Und genau wie bei fast jedem anderen Programm können
wir Dinge mit Control Z rückgängig machen oder wiederholen. Das macht einfach Dinge rückgängig und dann schaltet Control Y grundsätzlich zurück und reduziert sie. Also das ist, sollte fast selbsterklärend sein, oder? Dann wird die Hierarchie, wenn wir hier etwas auswählen, auch in der Szenenansicht ausgewählt und es erscheint auch etwas im Inspektor. Der Inspektor ist eines der großen Dinge, die wir betrachten werden, wie sogar detaillierter, wenn wir uns
Skripte ansehen , weil es dort sehr interessant wird. Was aber über den Inspektor gesagt werden soll, ist, dass
wir grundsätzlich für jedes unserer GameObjects, das innerhalb unserer Szene existiert, für jedes unserer GameObjects, das innerhalb unserer Szene existiert,zusätzliche Informationen erhalten, die wir auch manipulieren können. So kann
ich zum Beispiel für die Position das im Grunde ändern. Und wie Sie auf der linken Seite sehen können, ändert es sich auch in der Szene. Dies ist also sehr wichtig und diese sind irgendwie, diese sind in ihrer Funktionalität gruppiert. So zum Beispiel hat diese Kamera offensichtlich eine Kamera-Komponente
mit ihr verbunden , wo wir verschiedene Dinge ändern können, die mit der Kamera verbunden sind. Und die Transformation bedeutet einfach, dass dies die Positionierung und die Rotationsskala ist. Das ist also, was für eine Art von, sagen
wir die physische Manifestation dieses Objekts. Und jedes Objekt hat immer eine Transformationskomponenten. Das sind also die einzelnen Komponenten. Wir werden jetzt nicht über Komponente hinzufügen sprechen. Das ist etwas, das wir später sehen werden. Selbstverständlich können wir aber Komponenten zu unseren einzelnen Objekten
hinzufügen. Schauen wir uns auch schnell die Konsole an. Die Konsole hat also zwei Hauptteile. Hier. Wir haben bereits gesehen, ob Sie die C-scharfe Einführung gesehen haben,
dann werden Sie dies mehrmals gesehen haben. Es gibt im Grunde Ausgänge. Wenn wir Debug Dot Log oder Debug tun, Debug Dot Log Warnung, dann werden diese hier angezeigt. Wenn wir sie
auswählen, können wir hier unten eine Spur sehen. Und das kann auch erweitert oder nach unten verschoben werden. Wir haben ein paar Tasten, dies löscht die Konsole. Wir können es zusammenbrechen, wir können bei Fehlern pausieren, und dann haben wir auch ein paar Dinge, die wir tun können. Wie Sie sehen können, Zielauswahl. Ich benutze das nicht wirklich. Dies ist für, wenn wir wirklich verrückt mit unserem Debugging, nicht wirklich nötig. Wir können auch auf grundsätzlich normal filtern, nur Protokolle, Warnungen und Fehler. Und das ist im Grunde die gesamte Konsole. So verrückt ist es nicht. Und wie bei fast allen anderen Dingen, werden
wir uns diejenigen ansehen, wie
noch später in der Zeile,
die Projektansicht ist im Grunde die Ordner und Verzeichnisse, die wir für unser Projekt haben. Derzeit haben
wir innerhalb unseres Assets-Ordners einen Szenen Ordner, und innerhalb davon haben wir die Beispielszene. Dies ist die Szene, die am Anfang des
Endes erstellt wird , wenn wir hier ein neues Projekt erstellen, dies ist einfach die Szene, die erstellt wird. Und das ist alles, was wir hier drin haben. Geht nach. In Zukunft werden wir ein paar weitere Ordner erstellen. Und ich werde Ihnen im Grunde auch meine persönliche Ordnerstruktur zeigen, die ich verwende. Das ist natürlich etwas, das Ihnen überlassen wird. Du kannst ihm entweder folgen oder ihm nicht folgen. Das ist nur ein Vorschlag. Gleiches mit dem Grundlayout der, des gesamten Bildschirms hier. Das ist etwas, dem Sie vielleicht folgen wollen oder nicht. Lassen Sie uns schnell auch über die richtigen Tasten sprechen hier, nur für die Fertigstellung, das ist Zusammenarbeit. Dies bedeutet einfach, dass, wenn Sie mit
mehreren Personen zusammenarbeiten möchten , mit Unity zusammenarbeiten, Sie dies damit tun können. Ich würde mir jetzt keine Sorgen machen, weil wir zuerst die Grundlagen machen. Lassen Sie uns ins Rollen mit dem Einheitskonzept und omega1 sprechen im Grunde über die Zusammenarbeit. Die verwalteten Dienste bedeuten einfach, dass es Dienste gibt. Wenn ich also darauf klicke, erscheint das Service-Fenster und das sind spezifische Dienste, die ich hier für dieses bestimmte Spiel im Grunde aktivieren
könnte. Wie die Zusammenarbeit nicht benötigt, kann
ich
dieses Services-Fenster im Grunde mit der mittleren Maustaste schließen und dann verschwindet es. Ich kann auch mit der rechten Maustaste klicken und ich glaube, dass ich auch den Tab schließen kann. Das Konto ist einfach das Konto, bei dem ich eingeloggt bin. Ihre Unity-Konto-Layer sind also die Ebenen, die vorhanden sind. Das ist etwas, über das wir später auch reden werden. Und im Layout einfach wie das Layout meiner Unity. So kann ich es zum Beispiel ändern. Ich könnte es ändern, einen Glauben, der dann wieder geladen wird. Also will ich das nicht wirklich tun, aber ich habe hier mein eigenes KJ-Layout. Wie gesagt, ich habe das und ich glaube, ich kann es auch zur Verfügung stellen. Also kann ich das tatsächlich in einer Datei speichern und ich werde das Layout zur Verfügung haben. Du solltest das jetzt haben. Es hätte am Anfang des Kurses heruntergeladen werden können. Also ja, ja, das ist es im Grunde. Ich meine, die einzigen anderen Dinge sind der Start, der Stopp und der Step-Button. Der Step-Button setzt einfach alles, was wir hier bekommen haben. Also, wenn wir das anziehen und dann hören wir zum Beispiel auf. Also diese Pause-Taste tatsächlich, und dann können wir wie Frame für Frame durch eine bestimmte Szene mit diesem Knopf Schritt. Natürlich, im Moment tut es nichts, weil, naja, hier ist nichts. Also gibt es nichts zu sehen, sind das diese drei Tasten. Und dann, wenn eines dieser besonderen Dinge nicht hier ist, können
Sie immer zu Window gehen und sich all die verschiedenen Fenster ansehen, die da sind. Also die Szene, du weißt schon, das Spiel, der Inspektor, den wir gesehen haben, Hierarchie, Projektkonsole, das sind im Grunde die wichtigsten, die fast immer da sein sollten. Und dann ist alles andere etwas, das wir im Detail
betrachten werden und einige nicht Details. Und so werden wir uns wirklich gut ansehen. Und einige der anderen Dinge sind viel fortgeschrittener, dass wir nicht wirklich brauchen, um zu machen, sagen
wir einfache Spiele oder sogar ein wenig komplexere Spiele. Aber ja, das ist im Grunde alles, was ich dir für das Unity-Layout sagen wollte, es ist ein bisschen umfassender. Aber, und es gibt natürlich noch mehr zu lernen und die Anwendungen davon. Aber ich wollte nur, dass du wenigstens ein Gefühl wohl innerhalb dieses Layouts bist, damit du weißt, okay, ich mag vage wissen, wo es ist. Okay, die Hierarchie zeigt mir alle Objekte in der Szene und dann hat das Projekt im Grunde die Ordnerstruktur und so weiter und so weiter. Also, ja, das ist im Grunde das Einheitslayout. Und der Redakteur erklärte, ich hoffe, Sie fanden das nützlich wie immer. Wenn es irgendwelche Fragen gibt, zögern Sie nicht zu fragen und ich werde sicher sein, zu antworten. Und ja.
45. (Grundlagen Unity) Unity: Alles klar, willkommen zurück zur Einführung der grundlegenden Einheit hier für den Einheitskurs. Und in diesem Vortrag werden wir einen Blick auf die grundlegende Ordnerstruktur werfen. Grundsätzlich, dass ich persönlich benutze. Ich glaube, ich weiß nicht, es hat sich im Laufe der Jahre entwickelt. Es ist nicht wirklich so kompliziert oder verrückt zu erklären, und es sollte auch ziemlich unkompliziert sein. Also in unserer Projektansicht direkt hier haben
wir den Assets-Ordner. Und dieser Ordner für Assets. Das ist im Grunde, wo wir alles haben, was unser Spiel hat oder Skripte. Wir werden unsere Szenen drin haben, wir werden unsere Bilder und Bilder und Sprites haben. Alles wird innerhalb dieses Assets-Ordners gehen, der Paketordner hier. Wir können das im Grunde für jetzt ignorieren. Wir werden auf absehbare Zeit keine Pakete verwenden. Jedoch, die Assets Ordner, Das ist, wo wir gehen, um unsere eigenen Ordner darin zu erstellen. Und wir werden im Grunde unsere Ordnerstruktur hier machen. Und das ist einfach mit der rechten Maustaste auf den Ordner Assets, erstellen und dann Ordner. Und der erste Ordner, den wir erstellen werden, wird aufgerufen werden. In diesen werden natürlich alle Skripte in der Zukunft gehen. Und dann werden wir einen Ordner namens Sprites erstellen. Also statt dort, werden
alle Sprites gehen. Und dann zwei andere Fotos, die sehr
wichtig sind , die wir auch schon erstellen können, ist der Ressourcenordner. Jetzt ist es sehr wichtig, dass dies tatsächlich
richtig geschrieben wird, weil das einer der anderen Ordner ist
, in denen wir Dinge ein- und ausgeben können, sagen wir. Dies ist also ein sehr einfacher Ordner, der von Unity gelesen werden kann. Lassen Sie es uns vorerst dabei behalten. sehen wir uns auch später an. Und dann eine Sache, die wir auch erstellen werden, ist der Ordner „Prefabs“. Wir werden darüber reden, was Prefabs sind auch in einer zukünftigen Vorlesung gerade jetzt, wir bauen im Grunde eine Art Fundament auf. Und dann werden wir zu diesen einzelnen Followern kontinuierlich auf der Linie hinzufügen. Vor allem natürlich wird der Skript-Ordner
derjenige sein , in dem wir im Grunde eine ganze Reihe von Skripten
erstellen werden, die Deca eine Fülle von Funktionalität haben und im Grunde jedes einzelne zeigen, einzelnen Funktionalitäten, die wir in dieser grundlegenden Einleitung einen
Blick auf die Einigkeit nehmen werden. Das sind also im Grunde alle Ordner, die interessant sind. Eine Sache, die für die Skripte zu erwähnen ist, dass, wenn ich zum Beispiel verschiedene Namespaces habe, ich dies bereits im C-scharfen Teil erklärt habe. Ich habe verschiedene Namespaces und
spiegeln im Grunde die Namespaces in einer Art von diesem Skript-Ordner. Und was wir tun können, ist im Grunde, wir können hier eingehen und anstelle der Projekteinstellungen unter
der Projektzeitdauer des Meershore-Projekts einen Root-Namespace
erstellen. Jetzt in unserer Einführung in die grundlegende Einheit werden
wir dies jedoch nicht tun, wenn wir unser eigenes Spiel erstellen. Wenn wir also das erste Spiel dort machen, werden
wir das definitiv tun. Denn dann wird der Skript-Ordner dies tatsächlich spiegeln. In diesem Fall ist der Skript-Ordner ein wenig besser bedient, indem man die getrennt hat, weil die Vorträge,
die kommen werden , grundsätzlich unabhängig voneinander sind. So konnte man zum Beispiel von Vorlesung zu Vorlesung 5
springen, ohne etwas zu verpassen. Wenn Vortrag für ist etwas, das Sie bereits gesehen haben oder wissen. Ja, das ist also die grundlegende Projektstruktur, nichts zu schickes oder zu verrückt danach. Es gibt ein paar weitere, gut im Grunde Ordner, die später in der Zeile zusammenkommen könnten. Wahrscheinlich, wenn wir uns mehr Zwischen- und fortgeschrittene Konzepte ansehen, dann werden mehr Ordner beitreten. sind jedoch im Grunde die Fotos, die wir für
die grundlegende Einführung und für das erste Spiel brauchen , das wir erstellen werden. Also ja, nichts zu aufregendes. Aber jetzt endlich können wir im Grunde beginnen, und in der nächsten Vorlesung werden wir endlich anfangen,
ein Skript zu lesen und tatsächlich ein bisschen zu sehen, was kann, was Einheit im Grunde bieten kann. Also noch einmal, ich hoffe, Sie fanden es nützlich, wenn es irgendwelche Fragen gibt, fühlen Sie sich frei zu fragen und ich werde sicher sein, zu antworten. Und ja.
46. (Grundlagen Unity Faktoren) und die Inspektion: Alles klar, willkommen zurück zur Einführung der Grundeinheit hier für den Einheitskurs. Und in diesem Vortrag werden wir einen Blick auf, wo sowohl der Inspektor und Skripte im Allgemeinen. Also werden wir einen Blick darauf werfen, ob Sie ein Skript sind und wie sich das manifestiert. Und dann werden wir auch sehen, wie das im Inspector aussieht. Dafür werden wir hier unser erstes Skript erstellen. Und wir sind wieder mit der rechten Maustaste auf den Skript-Ordner,
erstellen, und dann C-Sharp-Skript. Wir können das dann umbenennen. Wir werden diese Gesundheit nennen. Das ist also die, wir werden im Grunde eine Gesundheitsklasse in diesem Fall machen. Und dafür schaffen wir auch eine neue Szene. Also möchte ich im Grunde, dass jeder der verschiedenen Vorträge eine Szene damit verbunden ist. Also werden wir machen mit der rechten Maustaste auf Szenen wieder erstellen, und dann hier unten in Szene. Und das wird im Grunde drei sein. Also L3, das wären Skripte. Du kannst das natürlich benennen, was immer du willst. Man muss den Skripten nicht einmal so folgen wie die einzelnen Szenen. Du kannst tun, was immer du willst. Ich denke nur, dass das am ordentlichsten ist. Und das wird dann auch in die App heruntergeladene Inhalte übersetzen. So können Sie natürlich auch die gesamte Grundeinheit Einführung als Paket herunterladen, importieren und dann haben Sie fast die gleiche Struktur wie diese. Das erste, was wir tun werden, ist, dass wir hier ein neues leeres Objekt
erstellen. Erstellen Sie also einen Rechtsklick innerhalb der Hierarchie. Leer erstellen. Dies ist jetzt ein leeres Spielobjekt. Wir werden das nur Gesundheit nennen. Nur um des Streits willen. Ich persönlich mache eine andere Sache. Ich positioniere meine leeren GameObjects immer an Position 0, 0, 0. Es gibt buchstäblich keinen Grund, dies zu tun. Ich hasse es nur, wie diese wirklich krummen Zahlen in dieser Position zu sehen. Deshalb mache ich das. Und du musst es nicht tun, aber ich tue es. Also, ja. Und gerade jetzt, da dies erstellt und positioniert ist, können
wir im Grunde das Skript Linksklick halten und es dann hierher ziehen. Und wie Sie sehen können, kann ich hier tatsächlich einen Indikator bekommen. Und wenn ich loslasse, und wir können sehen, Gesundheit Skript ist jetzt im Grunde eine Komponente dieses GameObject. Und das Tolle ist, nachdem wir hier gerettet haben, das Tolle ist, dass wir jetzt im Grunde dieses Skript manipulieren können. Und das wird jetzt in unserem Tor laufen. So können wir entweder hier doppelklicken oder hier doppelklicken. Lasst uns einfach hier klicken. Und dann öffnet sich für mich ein visuelles Studio. Es wird auf einem anderen Bildschirm geöffnet. Also werde ich es einfach rüber packen, sie gehen. Und das ist ein neues Skript im Grunde gebildet. Und so sieht es aus. Wir erhalten eine Startmethode und wir erhalten eine Update-Methoden. sind also zwei der Dinge, die vorgeneriert werden. Und wir können auch sehen, dass dieses Health-Skript, diese Hilfe Gesundheitsklasse. Erbt vom Mono-Verhalten. Mono-Verhalten
ist, wie Sie sehen können, die Basisklasse, von der alle Unity-Skripte abgeleitet werden. Wenn Sie also ein Komponententestskript wünschen, wo immer die Startmethode funktioniert und die Update-Methode funktioniert, muss
dies grundsätzlich vom moralischen Verhalten erben. Und was ist auch wichtig, wenn ich mir dieses Mono-Verhalten schnell anschaue, die Sache, die Sie hier im Grunde ein Skript auf ein GameObject setzen müssen. Sonst wird das nicht funktionieren. Also, wenn ich ein Skript habe, in dem ich dieses Mono-Verhalten, die Vererbung, nicht habe, kann ich wirklich an nichts anhängen. Was wir also tun werden, ist, dass wir hier ein paar neue,
im Grunde Felder und Variablen erstellen . Also nicht innerhalb unserer Methode, sondern darüber. Also im Grunde als Teil dieser Klasse, werden
wir auf Create a Public Health klicken. Und wir werden es auf eine 100 und dann eine öffentliche Int-Weise gleich 100 setzen. Dies ist also etwas, das eine Gesundheitsklasse mit einer Gesundheit,
einer Integritätsvariablen und einer Manier Variable verwalten könnte . Und wir werden auch eine private Variable Ganzzahl erleben könnte. Und das wird auch eine 100 sein, nur um des Streits willen. Jetzt behalten wir das so, wie es ist und schauen zurück in Unity. Also werden wir hier etwas nachladen lassen. Jetzt. Das werden wir. Das ist eine Warnung, die uns momentan nicht wirklich betrifft. Es sagt einfach, Hey, wir haben wie ein Feld erstellt, eine Variable, die wir noch nie benutzt haben. Das ist also etwas, das im Grunde nutzlos ist, weil wir es nicht benutzen. Ich würde wirklich sagen, dass dies eine Warnung ist, die fast immer ignoriert werden kann, vor allem am Anfang. Wir tun nur, dass wir ein paar Dinge ausprobieren und ja, also kann
das die meiste Zeit ignoriert werden, wenn Sie wirklich an einem Projekt arbeiten und Sie das wie bei fast allem, was Sie erstellen, dann ist dies einfach bedeutet eine, vielleicht gibt es einige Dinge, die einige Felder oder einige Variablen, die gelöscht werden könnten. Aber in diesem Fall geht
es uns nicht darum, wen wir die Konsole freimachen können. Wenn wir nun unser Gesundheitsspielobjekt hier und ein halbes Skript betrachten, können
Sie sehen, dass etwas erschienen ist, eine Gesundheitsvariable hier und ein Mann mit variabler hier. Es gibt also zwei Felder, die mit
ihren Grundwerten erschienen sind, die wir hier eingefügt haben. Und ich meine, das ist ziemlich cool, oder? Das ist eigentlich etwas, das passiert ist, ohne dass wir irgendetwas tun. Aber wenn ich diese Variablen deklariere und initialisiere, ist das ziemlich cool. Aber wenn wir sehen, die falsche Variable ist eigentlich nicht da. Und der Grund dafür ist, dass wir es privat gemacht haben. Also sind die Zugriffsmodifikatoren in diesem Fall tatsächlich wichtig für unsere Sichtbarkeit innerhalb des Inspektors. Aber dafür können wir folgendes tun. Wir können die im Grunde Klammern hier setzen und in
serialisiertes Feld eingeben , innerhalb dessen wird dieses Feld im Grunde serialisieren. Jetzt werden wir auch nicht mehr im Grunde die Ära oder die Warnung bekommen, Hey, das wird nicht verwendet, weil jetzt es verwendet wird und es wird vom Inspektor verwendet. Und wie Sie sehen können, machen Sie sich jetzt die Erfahrung, keine Sorgen darüber. Jetzt erscheint auch die Erlebnisvariable hier. Dies ist also eine Möglichkeit,
private Variablen speziell für den Inspector sichtbar zu machen . Ja, und das sind die Grundlagen hier. Wir können auch, wenn wir jetzt damit beginnen, wird
nichts passieren, weil wir hier nichts Aufregendes haben. Aber was wir tun können, ist, zum Beispiel, können
wir Gesundheit minus gleich 20, zum Beispiel tun. Und dann nur um des Arguments willen, wenn ich herausfinden kann, wie man 0 in der Update-Methode eingibt. Wir könnten
zum Beispiel erfahrene plus gleich eins setzen , nur damit wir etwas zu zeigen haben. Und schauen wir uns das einfach an. Und dann können wir diese Veränderung hier tatsächlich sehen. Und fangen wir einfach an. Und wie Sie sehen können, jetzt ist die Erfahrung, wie Sie sehen können, es geht wirklich, wirklich schnell, weil derzeit FBS sind, ist das wie tausend oder irgendwo herum? Wir stoppen einfach schnell oder unsere Pause das Spiel. Was wir dann tun können, ist, dass wir tatsächlich Frame für Frame gehen können. Und dann, wie Sie sehen können, wird dies tatsächlich nur um einen einzelnen Frame erhöht, wie es soll. Und es wird zurückgesetzt, sobald wir das Spiel gestoppt haben. Da dies im Grunde nicht persistent ist, die Daten hier wieder auf das zurückgesetzt, was wir haben, setzen Sie es im Grunde in unserem Skript. Also ja, das ist eine grundlegende Übersicht über das Skript und den Inspektor. Wir haben in der C scharfen Einführung gesehen, dass die Startmethode im Grunde etwas, das gerade am Anfang passiert, das ist genau wahr. Sobald wir also die Szene beginnen, wird
alles in hier ausgeführt. Und danach wird
die Update-Methode jeden Frame aufgerufen. Das ist also frameabhängig. Und dann werden wir hier etwas hinzufügen. Wir werden in Zukunft auch verschiedene Wege sehen, wo wir Dinge zeitabhängig machen können. Also können wir im Grunde sagen, Hey, wir warten eine Minute auf das oder, oder eine Sekunde oder so jemand. Und ja, das ist der grundlegende Überblick darüber. Ich hoffe, Sie fanden es nützlich wie immer, wenn es irgendwelche Fragen gibt, zögern Sie nicht zu fragen und ich werde sicher sein, zu antworten. Und ja.
47. (Grundlagen Unity )Kenny Kenny Assets und The Asset Store für unsere Spiele: Alles klar, willkommen zurück zur Unity Grundeinleitung hier für den UD-Kurs. Und diese Vorlesung, wir befinden uns außerhalb der Einheit. Ich weiß verrückt. Und das ist im Grunde etwas, das ich Ihnen für Vermögenswerte
zeigen wollte , die Sie vielleicht verwenden möchten. Und für ein Beispiel für Vermögenswerte, die wir verwenden werden. Kenny-Vermögenswerte sind also im Grunde ein Haufen von Vermögenswerten und sie sind alle frei zu nutzen, oder? Es gibt also mehr als neun Seiten, wie man mit einem Haufen Zeug sehen kann. Wie Sie sehen können, gibt es verschiedene 2D- und auch 3D-Assets hier auch einige Audio-Assets. Und wenn wir zum Beispiel einfach auf die nächste Seite gehen, wie Sie sehen können, gibt es eine Vielzahl von Dingen und sie alle sind verrückt cool. Sie sehen wirklich nett aus. Und wie ich schon sagte, sie können benutzt werden. Sie sind unter einer universellen Lizenz, so dass Sie sie für kommerzielle Zwecke oder für jeden Zweck verwenden können, den Sie möchten. Und für unsere grundlegende Einführung hier, also für die Grundlagen der Einheit, werden
wir die Spielkarten hier verwenden. Sie sind eigentlich, sie bieten uns alles, was wir wirklich brauchen. Und ich möchte im Grunde nur ein bestimmtes Bild, das wir
verwenden können , um Dinge zu machen, das ein wenig schöner aussieht als nur, ich weiß nicht, wie ein schwarzer oder weißer Bildschirm. Und wie Sie hier sehen können, ist dies ein cc, Ihre Umkehrung, na ja, Sie sind frei, dies im Spiel in jedem Projekt zu verwenden, persönlich oder kommerziell. Es gibt keinen Grund, um Erlaubnis zu bitten. Geben Attribution ist nicht erforderlich durch sehr geschätzt. Natürlich, deshalb zeige ich Ihnen diese Nummer 1, weil es eine großartige Ressource ist. Und auch, weil das, ich meine, es ist erstaunlich, oder? Es war noch nie einfacher. Und es gibt einige wirklich nette Vermögenswerte hier, mit denen Sie erstaunliche Dinge machen können. Und auch, Ich werde, natürlich, die Spielkarten, Ich werde die als Download enthalten und auch der Link zu den Assets hier ist auch als Ressource verfügbar. Und dann gibt es noch eine Sache, und das ist der Unity Asset Store. haben Sie wahrscheinlich schon mal gesehen. Aber das ist im Grunde ein Brunnen, wo Vermögenswerte entweder verkauft
werden oder auch kostenlos heruntergeladen werden können. Es gibt also einige Vermögenswerte, die verkauft werden, und es gibt auch einige Vermögenswerte, die kostenlos sind. Also, wenn wir nach Top 3 filtern, wie Sie dort sehen können, gibt es hier eine Reihe von Sachen, die kostenlos zu verwenden sind und die Sie auch in Ihrem Spiel verwenden können. Wir werden uns auf die Kenny Säuren konzentrieren,
also werden wir die Kenny Assets künftig nutzen. Wie ich bereits sagte, kann
der Unity Asset Store auch ein großartiger Moment sein in dem Sie im Grunde auch neue Assets erhalten können. Und ja, das wäre es im Grunde. Ich wollte Ihnen nur erwähnen, dass wir die Kenny-Säuren
verwenden werden und dass es auch noch mehr Orte
gibt, an denen Sie online gehen können. Ich denke, öffnen Sie Spiel-Künstler, ein anderer Ort. Es gibt also viele Orte. Rubber, wir werden es bei den Kenny-Vermögenswerten behalten. Und das war nur etwas, was ich erwähnen wollte. Wie ich schon sagte, alles als Ressource zur Verfügung. Und ja, das war es schon für diesen Vortrag. Ich wollte dir das nur schnell zeigen. Ich hoffe, Sie fanden es nützlich, wenn es irgendwelche Fragen wie immer fühlen sich frei zu stellen, und ich werde sicher sein, zu antworten. Und ja.
48. (Grundlagen Unity) Szenen und Build: Alles klar, willkommen zurück zur Einführung der grundlegenden Einheit hier für den Einheitskurs. Und in dieser Vorlesung werden wir einen kurzen Blick auf die Build-Einstellungen werfen und einen Build erstellen. Was ist also ein Build und was bedeutet das zu machen? Um sich die Build-Einstellungen anzusehen? Nun, die Idee ist, dass eine Rechnung im Grunde eine ausführbare Datei ist, die Sie können, von Ihrem Spiel, das Sie ausführen können. Und es hat alles drin. Es ist im Grunde die Veröffentlichung Ihres Spiels, fast so, als würden Sie wollen, dass es veröffentlicht wird. Und es gibt einige Einstellungen, die wir tun müssen, damit dies tatsächlich funktioniert. Es gibt also eine Menge von Einstellungen tatsächlich, und wir werden einen Blick später auf die Linie als auch werfen. Aber eines der Dinge, die sehr wichtig sind, sind die Build-Einstellungen. Also gehen Sie zu Datei und dann Build-Einstellungen. Und wenn ich das einfach schnell hierher schiebe, wie Sie sehen können, sind dies die Build-Einstellungen. Es gibt ein paar Dinge, die Sie sofort sehen werden. So können wir im Grunde schauen, welche Plattform wir diese App veröffentlichen möchten. Normalerweise PC, Mac und Standalone ist eine Art von der, würde
ich sagen, der Standard. Und dann können Sie, wenn Sie es haben, verschiedene Zielplattformen auswählen und auch die Architektur hier ändern. Normalerweise möchten Sie dies am Anfang
als eine Entwicklung einfügen , die gebaut wurde, weil dies eine Entwicklung ist. Und dann ist auch sehr wichtig, wie Sie sehen können, gibt es Szenen, die Sie tatsächlich bauen möchten. Wenn Sie also neue Szenen erstellen, möchten Sie tatsächlich daran denken, dass Sie diese hier hinzufügen
müssen, wenn Sie bauen. Wie Sie jetzt sehen können, habe ich Slash Beispielszene gesehen, die, dass man da drin ist, aber die L3, die nicht da drin ist. Also kann ich es einfach rüber ziehen und es hier drin haben. Und diese 01 ist im Grunde der Index. Es gibt also eine Welle, in der wir darauf zugreifen können. Also, wenn wir uns so etwas ansehen, so gibt es tatsächlich Möglichkeit, dass wir auf diese per Skript im Grunde zugreifen können. Und ja, also schauen wir uns das schnell an, damit wir es dann bauen können. Das werde ich nicht, denn im Moment gibt es wirklich, eigentlich, weißt du was? Lass es uns tun. Grundsätzlich dargelegt, okay, wo wollen wir das bauen? Normalerweise würde ich sagen, dass
Sie innerhalb Ihres Unity-Ordners einen Ordner namens builds erstellen. Und dann wählst du das aus. Und der Build wird tatsächlich eine Weile dauern, je nachdem, wie viel dort drin ist. Nun, natürlich, ich habe im Grunde nichts hier drin. Es gibt keine, keine echten Sprites. Es gibt keine realen Vermögenswerte. Es ist fast nichts hier drin. Und nur eine Sekunde
werde ich Ihnen zeigen, wo das aufgetaucht ist. Also das im Grunde hier, da gehst du. So erhalten wir ein EXE-Jahr, dass wir eine ausführbare Datei starten könnten. Jetzt wird es auf dem falschen Bildschirm beginnen, also werde ich es jetzt nicht tun. Aber insgesamt, wie Sie sehen können, ist hier alles drin. Level 01 sind im Grunde die Daten für jede dieser Szenen dort. Und dann haben wir auch einen Ressourcenordner. Dies ist der, den ich erwähnte, der der richtige Name sein musste. Und dann gibt es auch einen verwalteten Ordner mit einer ganzen Reihe von grundsätzlich DLLs. Insgesamt. Das ist auch, was Sie im Grunde nehmen würden. Also die EXE und der Datenordner, und diese beiden wären diejenigen, die Sie im Grunde
an Leute versenden müssten , damit sie Ihr Spiel spielen. Sie sind auch Player-Einstellungen. Ich werde nur kurz darauf klicken und Ihnen zeigen, dass wir die in einer späteren Zeit auch durchmachen werden. sind einfach Dinge wie der Produktname, welche Firma Sie haben, welche Version, einige Symbole und so weiter und so weiter. Es gibt eine Menge hier und wir werden später ein paar der Projekteinstellungen abdecken. Wie ich schon sagte, im Moment werden
wir das nicht wirklich betrachten, weil sie nicht so wichtig sind, wie es sein könnte, oder? Dies war also der erstellte, der Build, erstellte einen Build. Und lassen Sie uns nur, um der Argumentation willen, eine neue Szene hier
erstellen. Das wären L5-Szenen, richtig? Weil wir über Szenen sprechen. Lassen Sie uns dies öffnen und dann lassen Sie uns auch ein neues Skript erstellen. Das ist also nur der Test. Nennen wir das einfach die Szenen Skripte so wichtig, dass es Szenen und nicht gesehen. Weil ich glaube, wenn wir das nennen, sie
nur gesehen haben, könnten wir mit etwas kollidieren. Und im Inneren von hier können wir tatsächlich etwas gebrauchen. Also müssen wir einen neuen Namespace verwenden. Das ist Unity-Motor. Nein, das ist nicht richtig. Sie kennen den Motor, der Senior Management. Und damit können wir tatsächlich alle möglichen lustigen Dinge machen. So haben wir zum Beispiel den Szenenmanager. Und der Szenenmanager kann im Grunde alles tun, was wir tun wollten. Wir können sogar neue Szenen erstellen. Wir können alle Szenen kriegen. Wir können an einem bestimmten Index gesehen werden, das ist genau der Index anstelle der Build-Einstellungen. Wir können es auch bekommen, bekommen die Szenen nach Namen. Wir können eine neue Szene laden. Hier können wir also grundsätzlich von einer Szene zur nächsten wechseln. Es gibt auch zwei Veranstaltungen, die wir abonnieren können. Und ja, das sind einige der anderen. Machen wir einfach folgendes. Lassen Sie uns es einfach so machen, dass
es unmittelbar nach dem Start eine andere Szene lädt. So wird es mit Index 1 gesehen geladen. Ist das richtig? Lasst uns einfach schnell nochmal nachsehen. Das ist also eines der Dinge, wo es ein wenig ist, ja, L3. Das ist genau richtig. Dann ist das in Ordnung. - Ja. Also Idee hier ist, dass wir das natürlich an einem Objekt befestigen müssen. Das wird also Objekte einer Szene sein, 000 000. Das ist nur noch einmal für mich, denn ich möchte wirklich, dass dies auf Position 0 000 Szenen ist. So ist das Skript jetzt an dieses Objekt angehängt. Wenn ich jetzt speichere und starte, ändert sich
diese Szene in „L3“. Wie Sie jetzt sehen können, sind wir in L3. Wir müssen das vielleicht erweitern, um es zu sehen. Und dann haben wir unser Gesundheitskript zurück. Und das läuft, weil wir im Grunde dieses C jetzt gestartet haben. Und wenn wir es schließen, sind
wir wieder bei unserem ursprünglichen L5 SI. Das ist also eine kurze Kleinigkeit über Szenen und die grundlegenden Build-Einstellungen und wie Sie Ihr Spiel erstellen. Wir werden das später unten in der Linie sehen, in ein bisschen mehr Details und ein bisschen mehr, was hineingeht. Aber insgesamt sind die Szenen selbst ziemlich wichtig. Und ja, das war es im Grunde für diesen Vortrag. Ich hoffe, Sie fanden es nützlich, wenn es irgendwelche Fragen wie immer, zögern Sie nicht zu fragen und ich werde sicher sein, zu antworten. Und ja.
49. (Grundlagen Unity) MonoBehavior in Unity: Alles klar, willkommen zurück zur Einführung der Grundeinheit für den UD-Kurs. Und in diesem Vortrag werden wir einen Blick auf das Mono-Verhaltensskript werfen. So haben wir in der ersten Vorlesung
dieser grundlegenden Einführung gesehen , dass wir ein Skript oder
eine Klasse von der Basisklasse mono Verhalten erbenmussten eine Klasse von der Basisklasse mono Verhalten erben damit es eine Komponente innerhalb des Inspektors auf unseren Objekten ist. Und jetzt werden wir uns ansehen, was dieses Modellverhalten uns
im Grunde erlaubt, einige Beispiele und Yams zu machen, im Grunde einige Beispiele dafür, was das ist und was es tut. Lassen Sie uns also eine neue Szene erstellen. Und das wäre sechs, und das ist das Mono-Verhalten. Und lassen Sie uns auch diese Szene öffnen, erstellen Sie
natürlich ein neues leeres GameObject. Lassen Sie uns einfach dieses E. nennen wir dieses Beispiel einfach in diesem Fall, weil ich nicht möchte, dass es unbedingt Mono-Verhalten genannt wird. Ich denke, das kannst du. Ich glaube, dass die Namen hier für die Fälle nicht
so wichtig sind , weil Mono-Verhalten ein Schlüsselwort ist. Und ich glaube nicht, dass die Namen hier ein alter Mitarbeiter sind. Aber nur um sicher zu sein, und wir nennen dies das Mono-Verhaltensbeispiel. Damit wir das alles nicht verwirren. Und lasst es uns öffnen. Und wie Sie sehen können, ist
dieses Jahr das Modellverhalten genau die Basisklasse. Und wie immer werden zwei dieser Methoden erstellt, die Startmethode und die Update-Methode. Und es gibt tatsächlich schon Kommentare hier drin. So Startmethode ist genau das, was es sagt. Es wird vor dem ersten Frame aufgerufen. Die Idee ist also, dass das passiert, alles in deinem Inneren passiert gleich am Anfang. Und die Update-Methode ist einfach etwas, das jeden Frame aufgerufen wird. Dazu muss das Skript aktiviert sein. Das ist etwas, das wir im Inspektor aktivieren und deaktivieren können. Das werden wir in Kürze sehen. Und dann haben wir ein paar andere grundlegende Methoden, die wir
zum Beispiel die wake-Methode nennen können . So können wir einfach wach eingeben und dann die TAB-Taste drücken, um es automatisch zu vervollständigen. Die wait-Methode ermöglicht es uns im Grunde, etwas vor der Startmethode aufgerufen zu haben. So wird die awake-Methode tatsächlich aufgerufen, wenn das Skript geladen wird. Also wird dieses spezielle Skript in diesem Fall geladen. Und das passiert übrigens, wenn entweder die Szene beginnt oder wenn ein inaktives Spielobjekt sozusagen reaktiviert wird. Also, weil wir ein bestimmtes Spiel Objekte ein- und ausschalten können. Und diese Aktivierungsmethode wird entweder aufgerufen, wie gesagt, wenn das inaktive Spielobjekt wieder auf aktiv gesetzt ist, wo die Szene zum ersten Mal geladen wird. Wir haben auch verschiedene Update-Methoden. Wir haben zwei verschiedene Update-Methoden. Wir haben das feste Update hier unten, und wir haben auch das späte Update. Also das Reparierte. Es ist im Grunde eine Update-Methode, die Framerate unabhängig ist. Und die Idee, hier zu sein, dass normalerweise die Physik innerhalb der festen Update-Methode berechnet werden sollte. Denn wie Sie hier sehen können, wird
diese Funktion als jeder Frame mit fester Bildrate bezeichnet, wenn moralisches Verhalten aktiviert ist. Also, wenn dies aktiviert ist, dieses Skript, dann wird dies in einer festen Framerate aufgerufen. Daher Bildrate unabhängig. Warum ist es wichtig,
dass, dass die Physik statt dieser, statt der Update-Methode? Nun, die Idee ist, dass, wenn Sie einen guten Computer oder einen besseren Computer haben, sagen
wir, dann vielleicht ein Spiel für Sie für 60 Bilder pro Sekunde laufen wird. Und daher wird die Update-Methode 60 Mal pro Sekunde kalt werden. Und vielleicht bekommt jemand, der einen schlechtesten Computer hat, eigentlich nur 30 Bilder pro Sekunde. Und das bedeutet dann einfach, dass dies nur 30 Mal aufgerufen wird. Und wenn die Physik von der Bildrate abhängig ist, dann würde sich alles schneller für die Person bewegen, die
den besseren Computer hat und langsamer für die Person, die den schlechtesten Computer hat. Daher geht die Physik in das feste Update, kann hier auch einen Kommentar hinzufügen. Physik, Physik im Inneren von hier. Das ist also irgendwie wichtig. Das ist das fixierte bis dahin. Und das späte Update wird auch jeder Frame genannt. Wir können diesen Weg zu diesem Gericht tatsächlich jeden Frame sehen, aber es wird aufgerufen, nachdem die Update-Methode aufgerufen
wurde , eine tatsächlich nachdem alle eine Update-Methode ha aufgerufen wurde, wurden aufgerufen. Das ist also die Sache, die zuletzt am Ende
des Frames läuft und im Grunde verwendet werden kann, wenn wir zwei Dinge haben, wenn wir so sind, okay, die Update-Methode wird gehen und dann könnte das feste Update gehen. Und dann wollen wir etwas, das am Ende, dann kann das späte Update ein persönlich gehen Ich habe es nicht oft benutzt, aber ich wollte es auch zeigen, weil es sehr wichtig sein kann. Und dann gibt es noch eine Sache, die ich zeigen wollte, und das ist
die Destroy-Methode, die onDestroy-Methode. Mal sehen, ob es etwas hat. Dies wird aufgerufen, wenn das moralische Verhalten zerstört wird. Die Idee ist also, dass wir im Grunde
eine Destroy-Methode nennen können , die dann diese bestimmte,
entweder dieses bestimmte Modellverhalten zerstört und im Grunde entfernt es von einem Spielobjekt. Oder wir können auch ein ganzes Objekt zerstören und das wird dann kalt. Diese Methode ist also genau das, was aufgerufen wird, wenn wir etwas zerstören wollen. Dies kann beispielsweise einige Daten
speichern oder eine Nachricht ausgeben
oder einen anderen Ereignisaufruf haben, den wir
beispielsweise an die Benutzeroberfläche weiterleiten möchten . Vielleicht haben Sie also 10 Feinde und wir zeigen
diese Zahl tatsächlich oben auf dem Bildschirm und in der Benutzeroberfläche. Und jedes Mal, wenn dieser OnDestroy kalt wird, wollen wir
vielleicht sehen, dass ein Feind zerstört wurde. Also aktualisieren wir die Benutzeroberfläche damit. Das wäre ein Beispiel. Also lassen Sie uns hinzufügen, wenn Sie die Protokolle hier, so mit der awake-Methode in diesem Fall debuggt. Und dann lassen Sie uns das einfach nach oben erklären. Ich kann hier im Grunde etwas markieren, damit ich es auswählen kann. Ich drücke Control C und gehe dann hierher und drücke Control V, um es einzufügen. Und das ist die Startmethode. Wir haben auch das Update. Also lasst uns das hier setzen. Lassen Sie uns das fixierte Update hier setzen, weil es irgendwie ist, wissen Sie, es ist nicht wirklich vor dem normalen Update, aber ich denke, dass das mehr Sinn macht. Und dann die Schicht, die am Ende ist. Dies ist also die Update-Methode. Und wir werden das auch für das späte Update überschreiben. Und dann last but not least, die OnDestroy werden wir hinzufügen. Wir können das wirklich sehen. Wir werden das sehen, also im Grunde zerstört. Und schauen wir uns das zuerst an und dann werden wir auch etwas anderes sehen. Vergessen Sie auch nicht, dies zu unserem Spielobjekt hier hinzuzufügen. Dies ist eines der Dinge, die wahrscheinlich einigen passieren werden , wo Sie es starten und nichts passiert. Es liegt daran, dass Sie das Ding nicht zu Ihrem Objekt hinzugefügt haben, oder? Und wie Sie deutlich sehen können, werden
das Update im späten Update jeden Frame genannt, oder? Und festes Update, wie Sie sehen können, heißt weniger wiegen, weil es egal ist, was unsere Bildrate hier oben ist. Dies wird überall gleich genannt. Also in der Theorie sollte diese Zahl im Grunde genau zur gleichen Zeit wie Ihre Zahl steigen. Und diese beiden könnten für einige völlig anders sein, für einige von Ihnen, die vielleicht einen besseren Computer haben, wird
es viel schneller sein. Und für einige von Ihnen, die einen nicht so guten Computer haben könnten, könnte
dies viel weniger rot sein und wie Sie sehen können, wach, dann wird das gespeicherte Update ausgelöst, dann das feste Update, dann das Update und endlich die späten
-Update. Und wir können auch Frame für Frame gehen. Und wie Sie sehen können, dass wir tatsächlich neue bekommen. Und wie Sie sehen können, ist es jetzt alles gleich, denn im Moment gehen wir eigentlich Frame für Frame. Und die FPS ist, wird im Grunde bedeuten, dass es 0 ist. Und dann gehe ich Frame für Frame. Daher sind sie alle synchron. Richtig? Das andere, was ich dir zeigen wollte, denn was wir noch nicht gesehen haben ist das, was wir noch nicht gesehen haben, ist der Zerstörer. Und die Destroy-Methode, die wir tatsächlich aufrufen können. Wir werden das tun, oder wir werden dieses Objekt zerstören. Was wir tun werden, ist, dass wir eine neue private Leere haben. Und wir werden das nur die Testmethode nennen. Weil warum nicht? Und diese Testmethode wird eigentlich zwei Dinge tun. Eine Sache, es wird etwas ausgeben. Es wird nur sagen, Hey, das ist ziemlich cool. Und das zweite, was es tun wird, ist, dass es dieses Objekt zerstören wird. Wie Sie sehen können, ist Destroy eine Methode, die wir aufrufen können. Und diese Zerstörungsmethode nimmt ein Objekt. Also können wir buchstäblich alles in das stecken. Und es deutet eigentlich schon darauf hin, dass entweder
die Game Object Transformation das Spielobjekt zerstören soll , das zerstört werden soll. Das zerstört also genau diesen. Das zerstört also an diesem Beispiel hier. Und das werden wir in Kürze sehen. Aber was wir tun werden, ist, dass wir nicht wollen, dass dies sofort geschieht. Wir wollen, dass dies nach einer festen Zeit geschieht. Und dafür können wir die Methode invoke verwenden. Und die invke-Methode ist eine Mono-Verhaltensmethode, die, wie Sie sehen können, die Methode
aufruft, den Methodennamen in Sekundenzeiten. Also, wenn wir aufrufen und dann rufen wir den Methodennamen ist Testmethode. Also lassen Sie uns das überschreiben, weil der Name genau sehr wichtig übereinstimmen muss. Und sagen wir einfach vier Sekunden. Also nach vier Sekunden, mit diesem Aufruf, wird
die Testmethode aufgerufen, die gedruckt wird, hey, das ist ziemlich cool, und dann das Spielobjekt zerstören wird. Daher können Sie auch diese onDestroy-Methode ausgeben und alle Update-Methoden stoppen da sie mit diesem bestimmten Objekt verknüpft sind. Also das ist eine Menge einmal,
Mal sehen, was hier passieren wird. Also, wenn wir es noch einmal aufbewahren, was wir vorher gesehen haben , lassen Sie mich das ein bisschen größer machen. Und wie Sie sehen können, hey, das ist ziemlich cool. Grundsätzlich zerstört und dann hat die Zählung gestoppt, sowie das Objekt nicht mehr da. Also ist es hier zerstört worden. Und wenn wir das jetzt im Grunde stoppen, ist
das Objekt wieder zurück. Weil das genau so ist, wie wir es vorher gesehen haben. Die Daten werden grundsätzlich für die zurückgesetzt, wenn wir es stoppen. Und ja, das ist die Idee, ein paar,
also sozusagen ein paar Mono-Verhaltenstricks zu haben . Wir können auch in einige andere schauen. Wenn wir also diese Punkte einfügen, dann können wir tatsächlich sehen, dass es eine ganze Reihe von Sachen gibt, die wir anrufen können. Und wenn Sie ein paar Methoden hier sowie natürlich, ein paar verschiedene Arten von Eigenschaften. Und ja, das sind im Grunde einige der Dinge, die wir tun können. Wir können natürlich auch das Mono-Verhalten selbst betrachten. Ich glaube, wenn wir die Kontrolle drücken. Wenn Sie also Control halten und dann auf moralisches Verhalten klicken, können
wir die Metadaten hier sehen. sind also im Grunde die verschiedenen Arten von Methoden, die kalt sein können. Und ja, aber im Moment ist
das nicht zu interessant. Im Moment denke ich, dass wir schon einiges gesehen haben. Im Grunde zerstören Sie ein Objekt und ein paar andere Dinge, die alle mit diesem Mono-Verhalten verbunden sind. Und ja, das wäre es eigentlich für diese Methode, Mono-Verhalten ist ein sehr entscheidender Teil dieses Einheits-Frameworks. Also gibt es definitiv eine, es ist eine wichtige Sache. zu verstehen ist also wirklich wichtig. So wie immer, aber in diesem Fall,
vor allem, wenn es irgendwelche Fragen wie immer fühlen Sie sich frei zu fragen, und ich werde sicher sein, zu antworten. Und ja.
50. (Grundlagen der Einheit) Short Vektoren: Alles klar, das ist nur ein kleiner Nachtrag, den
ich gemacht habe, um Vektoren und die Mathematik dahinter zu erklären. Dies ist wirklich nützlich, um tatsächlich zu verstehen. Und während wir nicht ins verrückte Detail gehen, werden
wir uns ein paar Dinge ansehen, damit Sie hoffentlich das grundlegende Konzept der Vektoren erfassen können. Also fangen wir zuerst mit etwas an. Jeder sollte mit der Zahlenzeile vertraut sein. Jetzt, wie Sie sehen können, geht die Linie von 0 auf fünf, und natürlich auch darüber hinaus. Aber für unsere Zwecke ist das alles, was wir brauchen. Du könntest dir vorstellen, dass du irgendwo auf dieser Linie bist, um deinen Standort zu kennen. Du müsstest nur eine Nummer kennen,
die Nummer, an die du schickst, oder? Dies wäre also in diesem Fall eine eindimensionale Linie, da nur eine Zahlen benötigt werden, um zu wissen, wo Sie sind. Lassen Sie uns auch die negativen Zahlen hinzufügen. Ist das noch eindimensional? Ja, es liegt daran, dass wir immer noch nur eine Nummer angeben müssen, um zu wissen, wo wir sind. Es kann negativ oder positiv sein, war
aber immer noch nur eine Zahl. Was hat das mit Vektoren zu tun? Sie könnten fragen, nun, wir können diese Zahl als Vektor darstellen. So werden die beiden dann zu einem Pfeil von 0 bis 20 in diesem Fall, und oft werden andere Fälle als Ursprung bezeichnet. Wir können verschiedene Vektoren haben. Sehen wir uns hier einige Beispiele an. Wir haben einen Vektor mit Wert2, Wert3 und Wert negativ drei. Wenn ich Sie bitten würde, die Zahlen 23 zusammen hinzuzufügen, würden
Sie sagen, nun, es sind fünf. Nun mal sehen, was passiert, wenn wir die Vektoren zusammenfügen. Hier haben wir einen Vektor mit Wert2 und hier mit dem Wert drei. Wie können wir sie zusammenfügen? Wir könnten uns vorstellen, dass der Vektor mit Wert3 den ersten Vektor hinunterfährt. Und nachdem es das Tagebuch dazu gebracht hat, was wir am Ende bei fünf haben. Also zwei plus drei gleich fünf. Dasselbe kann mit Subtraktion oder eher negativen Zahlen und Vektoren gemacht werden. Also 5 plus minus drei ist gleich zwei. Dies mag Ihnen völlig offensichtlich erscheinen, weil Sie auf diese Weise jeden Tag Zahlen hinzufügen und subtrahieren. Aber was, wenn wir eine Dimension höher in die zweite Dimension gehen? Jetzt haben wir zwei Zahlenzeilen. Dieser wird traditionell als Y-Achse bezeichnet, zeigt nach oben und als vertikal. Die andere wird X-Achse genannt und zeigt nach rechts und ist horizontal. Betrachtet man das gleiche Beispiel, das wir zuvor hatten, würden
die beiden nun als 2 0 geschrieben werden, denn jetzt brauchen wir zwei Zahlen, um zu identifizieren, wo wir in diesem Raster sind. Wir gehen zwei Schritte in die x-Richtung und 0 Schritte in die y-Richtung. Aber sagen wir, wir wollen hier landen. Nun, wir müssen fünf Schritte in die X-Richtung gehen. In drei Schritten in die y-Richtung werden
wir diesen Vektor a gleich 5,
3 mit dem Wert 53 nennen . Und wir möchten vielleicht einen anderen Vektor hinzufügen, möglicherweise gleich minus 2 und 2. Wir können genau die gleiche Reise nehmen, bevor ich einfach b entlang Vektor a gleiten, wir können zu unserem Ziel C gleich 3 fünf. Und wie Sie jetzt sehen können, ist die Addition und Subtraktion einfach eine Ergänzung für jede Zahl des Vektors unabhängig voneinander. Also, wenn Sie den x-Wert nehmen und sie hinzufügen oder subtrahieren. Und wenn wir die y-Werte nehmen und addieren, subtrahieren sie, was auch immer es ist, die Summe, Das sind die neuen Werte des neuen Vektors. Multiplikation dehnt nur den Vektor. Also, wenn wir 2, 3 Jahr haben und wir multiplizieren es mit zwei, und wir strecken nur den Vektor, so wird es 46. Und Division macht nur etwas kürzer. Jetzt verwenden wir für unsere Zwecke Vektoren in Dreidimensionalen, aber es ist genauso einfach wie in Zweidimensionen. Vielen Dank für das Anhören dieser Vorlesung über Vektoren. Ich glaube, es ist ein wichtiger Teil der Mathematik zu verstehen, besonders wenn Sie versuchen, ein Spiel zu entwickeln, egal welche Engine oder welches System Sie verwenden. Und wenn es irgendwelche Fragen gibt,
natürlich, fühlen Sie sich frei zu fragen, und ich werde sicher sein, zu antworten. Und ja.
51. (Grundlagen Unity) Transformationen und Vektoren: In Ordnung, lassen Sie uns die Einführung der Grundeinheit hier für den Einheitskurs fortsetzen. Und in diesem Vortrag werden wir einen Blick auf Transformationen werfen. Also haben wir ein paar Dinge gesehen, das Mono-Verhalten, und jetzt werden wir einen Blick auf einige der Bestandteile werfen, wenn wir auf eines unserer GameObjects klicken, können
wir sehen, dass wir diese Transformation haben, wenn wir die Position hatten, die Drehung auf der Skala. Und wir werden uns das etwas genauer ansehen. Lassen Sie uns hier eine neue Szene erstellen. Diese Szene wird also L für Transformationen sein. Und lasst uns es öffnen und außerhalb des Bildschirms. Es wird auch einfach Transformationen genannt. Transformiert, sehr wichtig, dass es mit der S. So haben wir transformiert. Andernfalls werden wir wahrscheinlich ein Problem mit dem eigentlichen Transformationsskript haben. So oder zum Teil. Lassen Sie uns also die Verbreitung von transformierten Nullen 0000 an den Transformationsskripten hier tun. Und dann können wir einfach doppelklicken, um es zu starten. Und dann können wir darüber nachdenken. haben wir schon gesehen. Also lassen Sie uns Debuggen Punkt protokollieren genau dies, diese Punkt-Transformation. Das ist also die Transformation, die an dieses Spielobjekt angehängt ist. So wird einfach die tatsächliche Transformationskomponente zurückgegeben. Also dieser hier. Mal sehen, wie das aussieht, wie dies tatsächlich ausgibt. Und wie Sie sehen können, tut es nichts. Also müssen wir eigentlich ein bisschen besser reingehen als das hier. Das sagt einfach, richtig,
das ist wie eine Transformatorklasse. Das bringt uns nicht wirklich irgendwohin. Diese Transformation hat jedoch einige Komponenten, dies ist die Position. Das ist also ein Vektor von drei. Es hat die Rotation, die ein Quaternio ist. Ich werde nur ein bisschen sagen, worin das ist. Und dann gibt es auch die Skala, die in der lokalen und Verlustskala unterteilt ist. Und das ist auch ein Vektor drei. Also lasst uns so etwas machen. Vielleicht. Ja, lokale und verlustbehaftete Skala. Und so zuerst,
die Vektoren, haben wir das in der letzten Vorlesung gesehen. Was für ein Vektor in diesem Fall ist, sind das dreidimensionale Vektoren. Allerdings funktionieren die zweidimensionalen Vektoren im Grunde auf die gleiche Weise, nur wenn die letzte Achse nicht wichtig ist. Was ein Quaternion ist, ist es eigentlich ein vierdimensionales, es ist vierdimensionales Konstrukt, um Rotationen im dreidimensionalen Raum darzustellen. Nun, das klingt unglaublich kompliziert auf den ersten Gedanken. Und es kann ziemlich kompliziert sein. Aber das Gute ist, dass die Rotation
auch in einen Vektor drei umgewandelt werden kann , im Grunde, weil der Großteil der Rotation in Euler-Winkeln durchgeführt werden kann, das ist einfach eine mathematische Art, die Rotationen als auch auszudrücken. Sie haben gemacht, vielleicht haben davon gehört, wenn Sie vielleicht mit einem Flugzeug, da ist die Gier- und Tonhöhe. Und das ist etwas, das auch damit beschrieben werden kann. Und so eine Rotation funktioniert dann. Sie nehmen im Grunde eine bestimmte Achse. Also zum Beispiel, Sie sagen, wir werden im Grunde
einen Punkt nehmen und ihn durch die x-Achse kleben und dann um das drehen. Und so funktioniert diese Rotation auch im Grunde. Aber in unserem Fall, der Rotation, werden
wir uns das vielleicht auch ein bisschen genauer ansehen. Aber im Moment ist das Wichtigste, dass in 2D nur wirklich die Z-Rotation für uns wichtig ist. Denn die Y-Drehung würde in dieser Ebene liegen, was oder besser gesagt in dieser Ebene nur Sinn ergeben würde. Und die Erwartung wäre in diesem Flugzeug, das keinen Sinn ergibt. Nur so herumzugehen, macht für uns wirklich Sinn. Alles andere in 2D spielt keine Rolle. Also lasst uns tatsächlich hierher zurückgehen und jedes dieser Dinge debuggen. Also diese Punkt-Transformation, Punktposition. Und wir können das mit Control C kopieren und es Control V einfügen, die Rotation hier abrufen und die lokale Skala in diesem Fall erhalten. Und lasst uns, warum nicht auch die andere Skala bekommen? Also, wenn wir in Maßstab setzen, wie Sie sehen können, gibt es zwei von ihnen. Es gibt die lokale Skala und die verlustbehaftete Skala. Es gibt tatsächlich schöne Kommentare dort. So können wir tatsächlich die Weltraum-Position der Transformation sehen. Wir haben eine Quaternion, die die Speicher die Rotation der Transformation im Weltraum rührt. Wir haben auch die Skala der Transformation relativ zu den Spielobjekten. Eltern, ich werde erklären, was das in einer Weile bedeutet. Und das ist die globale Skala des Objekts. Also, wenn wir uns das ansehen, Ausgabe, dies und sehen, was wir tatsächlich bekommen werden. Und das erste ist, wie die Vektoren im Grunde aussehen, oder? Es sind also drei Komponenten, genau wie hier. Die Position wird also 000,
000 sein, die Rotationsposition ist 000. Und dann ist einer, wie ich schon sagte, ein Quaternion im Grunde ein vierdimensionaler Vektor, der die Rotationen für uns gerade zum Ausdruck bringt. Denken wir nicht zu tief darüber nach. Lasst uns einfach darüber nachdenken. Okay, wir haben vier Zahlen, die irgendwie eine Rotation darstellen. Aber wir können es auch mit diesen drei Zahlen tun. Und dann könnte sich das entsprechend ändern. Die Skala, sowohl lokal als auch verlustbehaftet ist jetzt die gleiche, weil dies einfach ein, ein Spielobjekt, das sich in der Wurzel befindet. Was wir also im Grunde tun können, ist, wenn ich eine neue leere leere, also habe ich diese ausgewählt, klicken Sie mit der rechten Maustaste darauf, sagen Sie Leere erstellen als es geht. Es wird dieses Spielobjekt als ein,
als, im Grunde ein Kind für dieses Spielobjekt zu erstellen . Das ist also sozusagen das untergeordnete Objekt. Und das ist jetzt, es hat im Grunde zwei Skalen. Denn wenn wir dieses übergeordnete Element skalieren
würden, würde das Kind damit skalieren. Und wenn wir nur das Kind skalieren würden. Nur das Kind wird skaliert. Also, wenn ich in der Skala auf 22 setzen würde. Und dann, wie wir sehen werden, wenn ich das anfange und vor allem, werden
wir 22 und beide haben, weil die, die Eltern, das ist in Ordnung. Wenn wir jedoch das Transformationsskript für dieses deaktivieren, gehen Sie zum Kind-Skript und legen Sie das gleiche Transformationsskript auf dieses ein. Auch wenn die Skala hier 1, 1,
1 ist . Wir fangen damit an. Sie werden sehen, dass die lokale Skala 111 ist, da dies Maßstab selbst ist. Allerdings ist die verlustbehaftete Skala in Bezug auf die Betrachtung der Welt zwei vor zwei. Weil das hier im Grunde ja wird. Hinzugefügt. Ich glaube, dass es multiplikativ ist, richtig. Also, das ist ja. Es ist also multiplikativ. Also, wenn dies dreimal so groß in jede Richtung ist, und das ist auch dreimal so groß, natürlich. Das macht Sinn. Das ist im Grunde die Idee der lokalen Skalierung und verlustbehafteten Skalierung. Und es gibt auch noch eine letzte Sache, die die lokale Position wäre. Es gibt auch die lokale Rotation. Und noch einmal ist dies relativ zur Transformation
des Elternteils und die lokale Position ist relativ zur Transformation der Eltern. Schauen wir uns das einfach mal an. Und lassen Sie uns eigentlich wie ein schnell hinzufügen das dies, denn sonst werden wir nur verrückte Zahlen da draußen haben und wir nicht, wir werden nicht einmal wissen, was die sind. Das ist also die Position, das ist die Rotation. Und nur zur Hölle wird es auch die lokale Rotation hinzufügen. Weil, warum nicht? Wenn wir hier sind, können wir uns das schnell ansehen. Das ist also die lokale Rotation, die wir wollen. Und dann wird dies die lokale Skala sein. Wir werden das schnell umdrehen. Also werden wir das hier runterlegen, weil wir immer den Einheimischen haben, den Boden. Lasst uns das zur Gewohnheit machen. Da gehst du. In Ordnung, also haben wir die Position, dann setzen wir die lokale Position raus, dann die Rotation als die lokale Rotation, die Skala und die lokale Skala. Sehen wir uns das also schnell an. Lasst uns einfach anfangen und sehen, was wir sehen werden. Die Position ist also 000,
000 lokale Positionsnullen. Das ist sinnvoll, weil sowohl die Transformation als auch das Kind Abscheidungen Nullen haben, daher hat nichts die Rotation verändert. Ist das dasselbe, weil das genau das ist, was wir hatten. Und dann die Verluste, die Verlustskala. So Skala im Vergleich zur Welt ist drei. Lokale Skala von sich selbst ist eins. Also lassen Sie uns zum Beispiel diese 90 Grad in die z-Richtung
drehen und dann das Kind, wir könnten zum Beispiel tatsächlich auch diese fünf nach oben bewegen. Lasst uns eigentlich nur nach oben gehen. Dann werden wir sehen, dass sich die lokale Skala auf der lokalen Position nicht ändern wird, wie Sie sehen können, weil dieses Kind lokal immer noch genau hier ist. So lokal ist im Grunde die Achse davon. Und dann in Bezug auf die Weltposition, so ist die normale Position jetzt bei 0 bis 0, weil dieses Kind, wenn wir dieses betrachten, genau hier
befindet. Also, obwohl lokal, wenn dies die Wurzel wäre. Dieser ist bei 000,
000, weil es genau die gleiche Position wie diese Transformation in Zeiten der Welt ist, Es wird bewegt. Und das gleiche mit der Rotation. Wie Sie sehen können, ist das hier jetzt ein bisschen anders. Wie ich schon sagte, die Quaternion. Du brauchst sie jetzt nicht zu verstehen. Beachten Sie, dass dies anders ist als diese Rotation Grundsätzlich. Ja, und das ist die ganze Idee hier. Es ist ein wenig, kann nicht ein wenig verrückt werden. In der Regel. Einfach, was Sie erkennen müssen, ist, dass, wenn Sie untergeordnete Objekte und Kinder haben, sie ein wenig anders als normale Objekte arbeiten können. Aber in der Regel ist es, was wir auch hier sehen können. Wir können tatsächlich verschieben die Rotation und die lokale Rotation, wie mit der lokalen Position und der normalen Position. Das einzige, was wir nicht festlegen können, ist die verlustbehaftete Skala. Wir können nur auf der lokalen Skala einstellen. Jetzt für Objekte,
die keine Eltern haben, wo das Elternteil im Grunde die Wurzel ist. Das spielt keine Rolle. Sie möchten die lokale Skalierung trotzdem festlegen. Und nur damit wir hier getan haben, was wir tun werden, ist, dass wir schnell eine
sehr wie die einfachste Bewegung machen , die wir können. Und das wird diese Punkt-Punkt-Punkt-Transformation zu übersetzen sein. Dies ist also eine Methode, die wir auf diese Transformation aufrufen können. Und wie Sie sehen können, haben wir tatsächlich viele Methoden, die wir aufrufen können. Es gibt also eine Menge Dinge. Also, da gehst du hin. So, wie Sie sehen können, gibt es eine Menge Dinge an dieser Transformation, die wir nennen könnten. Und jetzt schauen wir uns übersetzen an. Und was dies bewirkt, wie Sie sehen können, verschiebt die Transformation in die Richtung und die Entfernung der Übersetzung. Also werden wir das bewegen. Wenn wir dies betrachten können, benötigt
dies einen Vektor drei Übersetzung und kann auch einen Raum relativ zu nehmen. Dies bedeutet einfach, dass es sich entlang eines bestimmten Vektors bewegt. Wir geben ihm einen Vektor mit zwei Punkten, oder? Dies ist also einfach der 0-Vektor, also einer in die X-Richtung und 0 in die y-Richtung. Und wir werden das mal mal mal eine Zeit.Deltatime. Und diese Delta-Zeit ist im Grunde Abschlusszeit in Sekunden seit dem letzten Frame. Idee ist, dass wir das nicht wollen, um dies nicht mit einer unglaublichen Geschwindigkeit zu bewegen. Aber wir wollen, dass das etwas abgeschwächt wird. Im Grunde. Mal sehen, was das tun wird. Wir werden tatsächlich, für die Zwecke dieses, wir werden das untergeordnete Objekt und das Skript hier deaktivieren. Ich werde es für diese Transformationen einschalten. Weil das gerade interessanter ist. Und ja, mal sehen, also sollte das die Position ändern. Und es sollte diese Exposition ändern. Lassen Sie uns eigentlich auch
die Rotation hier deaktivieren , weil sonst es ein wenig funky wird. Wenn wir uns das ansehen, wie Sie sehen können, bewegt
es sich nun in die x-Richtung. Und wenn wir in die Szenenansicht gehen, können
wir sehen, dass es sich tatsächlich langsam, aber sicher weg bewegt. Und ja, das ist, wie ich schon sagte, eine sehr, sehr einfache und einfache Bewegung, die wir tun können. Natürlich können
Sie theoretisch auch Ihre eigenen Vektoren hier reinnehmen, damit Sie
einen neuen Vektor erstellen können , da die Entfernung, die sie sind, wichtig ist. Wie groß ist der Vektor also wichtig? Aber ja, insgesamt ist das ein grundlegender Überblick über die Transformationskomponente, sagen wir. Dies ist also die grundlegendste Komponente, die jedes Spielobjekt immer hat. Dies ist also immer in jedem Skript vorhanden, das das Mono-Verhalten als Basisklasse hat.
Sie sollten in der Lage sein, diese Punkttransformation durchzuführen und
die Positionierung oder die Skalierung oder so etwas zu ändern . Und wie Sie sehen können, gibt es einige andere Dinge, Kinderzählung, Sie können Kinder bekommen. Es gibt eine Möglichkeit, Komponenten zu erhalten, und es gibt auch eine Möglichkeit, dieses Objekt zu drehen. Es gibt also ein paar Dinge wie Sie, wie üblich, ich würde wahrscheinlich vorschlagen, einige dieser Dinge kurz zu betrachten, aber natürlich werden wir viele von ihnen auch einen Blick auf zukünftige Vorträge werfen. Und dann eine echte Anwendung, die wir sehen, sobald wir tatsächlich anfangen, eine Weile zu machen, im Grunde ein echtes Spiel, richtig? Ein echtes Spiel als ein Spiel, wo wir platzieren können. Das ist also aufregend, aber wir bauen die sehr wichtigen Dinge auf. Dies ist also eine andere dieser Dinge, die eigentlich ziemlich wichtig ist, verwandelt einen entscheidenden Teil, im Grunde bedeutet, wo in der Welt ein bestimmtes Objekt ist. Also noch einmal, wenn es irgendwelche Fragen gibt, zögern Sie nicht zu fragen und ich werde sicher sein, zu antworten. Hand. Ja.
52. (Grundlagen Unity )Spielobjekte in Unity: Alles klar, willkommen zurück zur Einführung der Grundeinheit hier für den Einheitskurs. Und in diesem Vortrag werden wir einen Blick auf ein Spiel werfen Objekte. Also haben wir darüber gesprochen oder ich habe schon eine Weile darüber gesprochen, ich habe immer die grundsätzlich konstituierenden Elemente der Szene Spielobjekte genannt. Und das ist genau das, was das sind. Und wir werden sie jetzt genauer betrachten. Also lassen Sie uns hier eine neue Szene namens El Nine GameObjects erstellen. Und dann werden wir natürlich auch ein neues Skript erstellen und wir werden dieses Spiel Objekte auch nennen. Eine wichtige wieder mit dem S am Ende, denn sonst könnten wir auf einige Probleme mit dem Namen stoßen. Es wird also ein neues leeres GameObject benötigt. Lassen Sie uns auch dieses Spiel Objekte und 000, 000 nennen. Noch einmal, das ist nur für mich, weil ich wirklich brauche, um 0 zu sein. Ich weiß nicht warum, aber ich möchte, dass mein leeres Spielobjekt an Position 0 ist. Nun, bevor wir in das Skript gehen, werden
wir tatsächlich noch eine Sache brauchen. Und das ist etwas, um im Grunde unser sehr schönes ein Spielobjekt zu visualisieren. Also werden wir tatsächlich etwas hinzufügen, damit wir das sehen können. Also lassen Sie uns dies wie folgt tun. Ich werde schnell haben, Ich habe einen Ordner auf dem anderen auf,
auf einem anderen Bildschirm und ich werde nur ziehen, um ein PNG zu hören. Dies wird also eine PNG-Datei anstelle der Sprites sein. Aber das steht natürlich als Ressource zur Verfügung. Und diese besondere Sache ist, wie Sie im Inspektor sehen können, haben
wir jetzt diese Textur 2D statt hier. Es hat dies tatsächlich bereits als Sprite gesehen. Und es gibt wirklich nichts, was wir hier ändern
müssen , damit wir es einfach so behalten können. Wir werden in einem zukünftigen Vortrag ins Sprite gehen, im Grunde ein Sprite Editor und wie das in einem Vortrag funktioniert und sehen, was wir dort sehen können. Aber im Moment werden wir tun, ist, dass wir das tatsächlich als Spielobjekt hinzufügen. So können wir das einfach nehmen und es in unsere Szene ziehen. Und genau so erstellt
es ein neues GameObject, wie Sie sehen können. Und das ist ein Brunnen, der dann einfach hier liegt. Was wir tun werden, ist, weil das etwas klein ist. Wir werden nur die Skala hier auf etwa fünf Mal erhöhen. Und was wird, werden Sie auch sehen, ist, dass es ein wenig verschwommen ist. Wir können das beheben, indem wir diesen Filtermodus auf Punkt ändern und dann auf Übernehmen klicken, und dann ist er nicht mehr unscharf. Ich werde diese Dinge erklären, wie ich etwas später gesagt habe. Statt eines Sprite müssen
wir uns jetzt nicht wirklich damit beschäftigen, aber jetzt haben wir tatsächlich etwas. Also lasst uns auch bei 000 zentrieren und dann ein wenig nach oben bewegen wie wahrscheinlich drei. Ja, das ist gut. So, jetzt ist es oben auf dem Bildschirm. Und wenn wir zu unserer Spielansicht wechseln, ist
dies jetzt, was wir innerhalb des Spiels sehen würden. Also würden wir dieses Herz-Ass im Grunde hier oben schweben sehen. Und wir werden in der Lage sein, ein paar coole Dinge damit zu tun. Wir werden das in den Warenkorb umbenennen, weil es eine Karte ist. Und wir werden sehen, was wir sehen können. Im Moment ist dies also ein Objekt mit einer Transformationskomponente, der Sprite-Renderer-Komponente. Genau wie bei der Ausbreitung einige Salze, werden
wir in einer Weile einen Blick auf den Renderer werfen. Sofort. Wir müssen nur wissen, dass, okay, das sind sie im Grunde, so dass wir ein Bild für dieses Objekt haben. Dies ist natürlich ein leeres Objekt, wir haben das nicht, aber wir haben das Skript hier. Und was wir tun werden, ist, dass wir darauf doppelklicken und tatsächlich anfangen, etwas zu programmieren. Das erste, was wir wollen, ist, dass wir hier ein neues Feld wollen, und das wird ein privates Spielobjekt namens Karte sein. Und das ist die coole Sache, denn wie gesagt, anstelle der Hierarchie sind
die einzelnen Dinge Spielobjekte da drin. Und wir können auf diese verweisen, indem wir einfach eine neue Variable des Typs von Spielobjekten verwenden. Dies ist also einfach eine Klasse, denn dies ist eine private Welt, machen dies zu einem serialisierten Feld, so dass wir das tatsächlich innerhalb des Spektrums sehen können. Und dann anstelle der Startmethode wird die Frage wirklich, na ja, wo dieser gerade aufgerufen wird, wird ihm nur zugewiesen werden. Nun, schauen wir uns mal an. So wie Sie jetzt sehen können, gibt es hier kein Spielobjekt. Und wenn ich etwas mit dieser Karte machen würde, dann würde es passieren, dass es einfach nicht funktionieren würde, weil dies null ist. Also die, es wurde nicht zugewiesen, weil dies ist, wie Sie sehen können, num bedeutet, dass es hier kein Spielobjekt gibt. Nun, was ich tun kann, und das ist die wirklich coole Sache am Inspektor. Ich könnte das hier reinziehen. Und wie Sie sehen können, sieht es tatsächlich, dass, Oh, das ist ein Spielobjekt. Und wenn ich es hier reinstelle, kann ich sehen, dass dieses Gericht jetzt
innerhalb dieser bestimmten Variablen referenziert wird . Allerdings wollen wir das normalerweise nicht, weil
es nicht immer eine gute Idee ist, Dinge über den Inspektor zuzuweisen. Manchmal kann es gut sein, aber ich wollte Ihnen auch zeigen, wie Sie das in sich selbst machen können. Es gibt mehrere verschiedene Möglichkeiten und einer von ihnen ist im Grunde eine der einfachsten. Was wir also tun können, ist, dass wir einfach sagen können, dass Schnur gleich dem Spielobjekt ist. Also der Name des Klassenpunkts eher zu finden. Und dann innerhalb dieses Methodenaufrufs können
wir aufrufen, wir können einen Namen eingeben. In diesem Fall würde dies aufgerufen werden, da dies der Name des Objekts ist. Wir können das nochmal überprüfen. Ja, das ist der Name des Objekts wird Karte genannt,
und das ist, was braucht, um dort zu bekommen. Dies ist also eine statische Methode von GameObject, die ein GameObject zurückgibt, wie Sie sehen können, findet ein GameObject nach Namen und gibt es zurück. So wird dies durch die gesamte Szene schauen, die wir derzeit geöffnet haben. Suchen Sie nach dem Objekt mit dem hier angegebenen Namen und geben Sie es zurück. Wenn es sie findet. Wenn es es es nicht findet, wird
es natürlich immer noch null sein. Also lassen Sie uns einfach sehen, ob es dies tatsächlich findet, indem etwas wie Kartenpunkt-Transformationspunktposition
tun. Also werden wir einfach die Position des Akkord bekommen, den wir gerade dort gesehen haben. Und ja, mal sehen, ob das tatsächlich funktioniert oder ob es nicht tut. Denn im Moment, natürlich das Gericht, hat
das Gericht kein Drehbuch damit verbunden. Wir bekommen jetzt dieses, dieses Spielobjekt über dieses Skript hier und werfen einen Blick auf, also lasst uns einfach speichern und sehen, was passiert. Also das erste, was wir sehen können, ist, dass diese Karte Variable tatsächlich gefüllt hat. So hat es die Karte mit GameObject Punkt finden gefunden. Und wir sehen auch, dass 0, 3, 0 ausgegeben wurde und das ist genau die Position des Warenkorbs. Also hat alles genau so funktioniert, wie wir es wollten. Was ziemlich cool ist. Also das ist eine Möglichkeit, in der wir nach einem Spiel Objekte suchen und dann ja, sogar, sie manipulieren können, oder? Also haben wir die Transformationen letztes Mal gesehen. Wie wir diese manipulieren und die Position ändern können. Und natürlich könnten wir das zum Beispiel auch hier
tun. Aber ich wollte etwas anderes zeigen, weil es etwas anderes gibt, das wirklich interessant ist und das neue Spielobjekt hervorbringt. Das ist also alles eine Art Teil von Spielobjekten. Und was wir tun können, ist, dass wir hier im Grunde eine neue Spielobjektvariable erstellen können. Also Spiel Objekt und setzen Sie dies gleich zu instanziieren. Instanziieren ist
eine der tatsächlich Objektmethoden. Und dann geben wir ihm einfach ein, ein originelles Objekt, das dieser Akkord ist. Das könnte also etwas seltsam sein. Was machen wir hier? Nun, diese instanziierte Methode erstellt einfach ein neues GameObject basierend auf einem bestimmten Spielobjekt, das wir ihm eine Art als Vorlage geben. Dies kann auch als Prefab bezeichnet werden. Und wir werden uns die Prefabs in ein wenig ansehen, wenig wie eine Woche später. Jetzt wollte ich dir im Grunde nur schnell zeigen, dass wir neue GameObjects spawnen
können. Und dieses neue GameObject wird nun natürlich in dieser Spielobjektvariablen gespeichert. Und sie sind, wir können die Position zum Beispiel bei neuem Vektor 3 und dann etwas wie 0, minus drei einstellen. Und minus drei, f endet auf 0, so etwas. Und ja, lass uns das einfach machen und sehen, ob das funktioniert. Am Anfang sollten
wir eine neue Karte mit einem Namenskarten-Klon sehen. Genau. Und das ist an Position 0 minus 3 0. Wir werden einen Blick auf die Instanziate eine Methode in einer Weile genauer später in der Zeile als auch werfen. Ich wollte es nur schnell erwähnen, weil dies auch ein sehr großer Teil der Spielobjekte ist. Und insgesamt werden es die GameObjects sein. Das ist die Hauptsache, über die wir reden werden. So wird es immer GameObjects gemacht werden. Es wird immer Komponenten sein und es wird immer Skripte sein. Und ja, das sind die Bausteine. Die Idee ist, dass wir verschiedene Arten von Komponenten haben und GameObjects praktisch jede Art von Komponente auf sie nehmen kann. Skripte oder eine bestimmte Komponente transformiert. Und wie wir den Sprite-Renderer gesehen haben, richtig? Das hat die Fähigkeit, uns so etwas wie ein Bild zu zeigen. Und es gibt so viele mehr in der Art dieser Komponenten hier, oder? Das sind also all die verschiedenen Gruppen. Und dann für jeden von ihnen, Es gibt eine Menge von ihnen. Also gehen wir Stück für Stück, weißt
du, nach und nach. Wir werden mehr und mehr lernen. Und hoffentlich werden wir irgendwann in der Lage sein, ein kleines kleines Spiel zu machen. Mal sehen. Das wäre eine tolle Idee, wenn das wirklich funktionieren würde. Das ist also der Kern von Spielobjekten. Es kann zunächst ein wenig entmutigend sein, denn es gibt ziemlich viel zu ihnen. Nun, natürlich nur ein paar Dinge gezeigt. Wenn wir GameObject dot einfügen, haben
wir eigentlich nicht Fett, viele verschiedene Methoden, die wir aufrufen können. Es gibt also Methoden wie hier drin. Aber was interessant ist, ist, dass die, diese Anrufrate ist genau ein GameObject. Dies gibt also ein Spielobjekt zurück. Wenn wir uns das ansehen. Also die, lasst uns für die Transformation gehen. Da gehst du. Und so ist
die Verzerrungstransformation genau etwas für eine Komponente in diesem Fall. Aber die, Dies bezieht sich genau auf das Spiel Objekt. So können wir auch diesen Punkt GameObject sagen, und dann können wir genau das GameObject erhalten, an das dieses bestimmte Skript angehängt ist. Dies wäre also das Skript und dann gibt dieser Punkt GameObject das eigentliche Spielobjekt zurück. Wie Sie sehen können, dass diese Komponente zugeordnet ist. Und ja, es gibt noch viel mehr Dinge und ich bin mir ziemlich sicher, dass du viele von ihnen abholen wirst, während wir mitmachen. Weil wir einen einstündigen Vortrag über GameObjects halten konnten. Aber das bringt uns nicht wirklich irgendwohin, weil es so viele Dinge gibt , die man als eine Art Voraussetzung braucht, um andere Dinge zu verstehen. Manchmal kann es ein wenig nervös sein, aber ich denke, insgesamt werden wir eine gute durchgehende
Linie haben , um jeden einzelnen Teil zu verstehen. Aber wie auch immer, Genug sagte, dies war der Vortrag über ein Spiel Objekte. Ich hoffe, du hast es nützlich gefunden. Und ich würde natürlich eine Rezension von Ihnen
schätzen. Andernfalls, wenn Sie Fragen wie immer haben, zögern Sie nicht zu fragen und ich werde sicher sein, zu antworten. Und ja.
53. (Grundlagen Uneinheit) Input in Uneinheit): In Ordnung, lassen Sie uns mit der Einführung der grundlegenden Einheit hier für den Einheitskurs fortfahren. Und in diesem Vortrag werden wir uns die Eingaben ansehen. Also Eingaben, im Grunde, wenn Sie eine Taste drücken und dann etwas passiert. Wie können wir das in Unity tun? Nun, lasst uns das rausfinden. Lassen Sie uns eine neue Szene erstellen, L ten, genannt Eingänge und Offenheit, wie immer ein leeres Spielobjekt hier in erstellen, auch diese Eingaben aufrufen. Und lasst es. Nachdem wir dies auf 000, 000 zentriert haben, lassen Sie uns auch ein neues Skript der Namenseingaben erstellen. Man hätte es erraten können, aber da gehst du. Jetzt brauchen wir hier nicht die Startmethode. Wir brauchen nur die Update-Methode für diese. Weil die Update-Methode grundsätzlich jeden Frame ausführt. Und wenn wir eine Taste drücken, wird etwas passieren. Also, wie können wir das tun? Nun, wir setzen eine if-Anweisung ein und dann werden wir die Eingabeklasse dot aufrufen, Schlüssel runter bekommen. Dies ist also die Methode, die wir wollen, also gibt true während des Frames zurück, der Benutzer beginnt eine Taste zu drücken, und diese Taste ist mit Tastencode Punkt zugänglich. Schlüsselcode ist also eine Enumeration. Und im Inneren von hier, wie Sie sehen können, sind
sie alle im Grunde eine ganze Reihe von verschiedenen Schlüsselcodes. Und lassen Sie uns einfach für dieses eine f nehmen.
Drücken Sie F , um Dot Log zu debuggen. Rest FQ. Ich mag es. Also in der Theorie, wenn alles funktioniert, sollte
das wahr sein, wenn ich die F-Taste drücke. Also drücke ich es und das wird einmal ausgegeben, weil es in diesem Fall nur echte bekommt. Mal sehen, ob das tatsächlich funktioniert. außerdem sicher, dass das Eingabeskript hier aktiviert ist. Sehr wichtig. Gerade jetzt, nichts und dann F-Taste, und da gehst du. Nun, was ich tun kann, ist, wenn ich die Umschalttaste gedrückt halte, wie Sie sehen können, wird sie nicht erhöht. Ich halte den Schlüssel immer noch fest. Sie müssen mir einfach vertrauen. Aber in der Tat nimmt dies nicht zu. Und wenn ich es loslasse, habe ich das absichtlich gemacht. Vielleicht haben Sie das gehört. Also mal sehen. Es gibt natürlich andere Dinge, die wir tun können. Und das ist genau richtig. Es gibt also einen Eingabepunktschlüssel und sie erhalten C0 nimmt einfach auch einen Tastencode. wir ihnen auch F hier. Lassen Sie uns das einfach kopieren und sagen, drücken Sie die F-Taste. Und dann, nur zur Fertigstellung, gehe
ich einfach zum anderen. Hier ist „Steh up“. Und das heißt, das wird dann gestoppt Drücken der F-Taste Gitter. Also ist die Taste nach unten wahr, wenn ich beginne, sobald ich die Taste drücke. Für nur diejenigen erhalten Schlüssel, wie Sie sehen können,
gibt true zurück, während der Benutzer den Schlüssel gedrückt halten, der durch den Schlüssel identifiziert wird, Schlüssel genannt enum Parameter. Und sie erhalten Schlüssel wahr während des Rahmens, das der Benutzer für den Schlüssel freigibt. So haben wir die Möglichkeit zu überprüfen, ob eine Taste einmal gedrückt wurde oder nicht. Oder besser gesagt. So wie. Mal sehen, was hier passiert. Also drücke ich F und halte es gedrückt. Wie Sie sehen können, Drücken der F-Taste, es nur, es tatsächlich stoppt, wenn der Fokus nicht mehr auf das Spiel. Denn wenn Sie sich ansehen, so können wir sehen, ob ich das tue, und dann höre ich auf zu drücken, weil sie aufhören, hier zu drücken. Aber Sie können sehen, dass dies jetzt im Fokus ist, weil diese leicht blaue Linie hier. Und wenn ich mich irgendwann hierher ziehe, könnte es
vielleicht, weil ich wegklicke, dann verschiebt sich der Fokus und dann läuft das natürlich nicht mehr. Das ist wahrscheinlich das, was hier passiert ist. Das aus irgendeinem Grund ist es ja, da gehst du. Jetzt hat sich der Fokus verschoben und dann hört das natürlich auf. Das ist also eine Sache, die auch sehr wichtig ist. Trotzdem funktioniert es immer noch sehr gut. Und wie Sie sehen können, wenn ich wirklich mag,
versuchen Sie, einfach klicken Sie es einmal und immer noch wie 40, 7, 2, 4, 7, 1. Also auch sie sind, weil natürlich unsere Bildrate so sehr hoch ist. Wir drücken das oft, obwohl ich es wie kaum eine Sekunde dränge, wir immer noch absolut verrückt. Also, ja. Ja, aber das sind grundlegende Eingaben. Das ist eigentlich alles, was es für sie gibt. Es ist wie sehr unkomplizierte if-Aussagen. Das ist alles, was es wirklich gibt. Und diese geben einfach Booleans zurück. Also natürlich kannst du die auch zusammenketten, oder? Also erhalten Sie den Schlüssel mit Kicker f und dann, wenn Sie
zum Beispiel einige der booleschen Operatoren, einige der Logik-Operatoren, das Ende, und dann im Grunde diese zusammen mit einem anderen Schlüsselcode. Also ja, das sind die Eingaben sehr einfach. Und das erlaubt es dir, schon ein paar verrückte coole Sachen zu machen. Und was wir
im Grunde die nächste Vorlesung sehen werden, ist, ein sehr einfaches Bewegungsskript zu machen. Nun, es gibt etwas, das Sie vielleicht auch denken
können wenn Sie an unsere Transformationen zurückdenken, wir hatten eine sehr, sehr einfache Bewegung dort. Und wenn Sie nun die Eingaben anwenden und im Grunde das, was wir in der Transforms-Vorlesung hatten, können Sie
vielleicht schon vor dem nächsten Vortrag herausfinden, wie wir vielleicht ein sehr,
sehr einfaches Bewegungsskript erstellen können . Ja, aber damit werde
ich dich und ich vorerst verlassen, für diesen Vortrag war
es natürlich eines der wichtigsten Dinge für ein Spiel. Ich weiß, dass, wie ich immer sage, das ist eines der wichtigsten Dinge, aber das ist vielleicht nicht wichtig, wie genau es funktioniert. Aber Eingänge selbst ist wichtig für ein Spiel. Also hätten die Eingaben sie wahrscheinlich selbst herausfinden können. Aber dennoch ist dies die Input-Vorlesung. Und in der Zukunft gibt es ein bisschen mehr Nuance. So könnte es dir genauso gut nur schnell zeigen. Die Eingabeklasse hat also bereits, wie Sie sehen können, viel mehr Sachen. Dies ist also nicht der einzige Weg, um die Eingabe zu erhalten. Es gibt einiges, was du tun kannst. Aber vorerst ist dies der Input, den ich, weißt du, war. Ich denke, das macht Sinn, es dir zu zeigen. Und dann weiter unten, wenn wir jemals etwas anderes brauchen, werden
wir das auch sehen. Ja, aber dafür ist
es das Ende der Vorlesung. Ich hoffe, Sie fanden es nützlich und wie immer, wenn es irgendwelche Fragen gibt, zögern Sie nicht zu fragen und ich werde sicher sein, zu antworten. Hand. - Ja.
54. (Grundlagen Unity) Erstellen eines sehr einfachen a: In Ordnung, lassen Sie uns mit der Einführung der grundlegenden Einheit hier für den Einheitskurs fortfahren. Und in diesem Vortrag werden wir
ein sehr einfaches, aber dennoch effektives Bewegungsskript erstellen . Und dafür werden wir natürlich vor allem noch einmal eine neue Szene schaffen. Das wäre die Bewegung L 11, eine Bewegung. Und lasst uns das sofort beginnen. Und dieses Mal werden wir nicht ein leeres GameObject erstellen, aber wir werden wieder einfach
das Herz nehmen und es hier reinlegen und es tatsächlich vergrößern. Lassen Sie es bis zu viermal so groß wie die normale Größe. Und begann auf y Ebene zwei. Und dann machen wir auch ein neues Drehbuch. Das wird ein Skript namens wo ist es? Nein, ich habe es verpasst. Offenbar, da gehst du. Bewegung. Bewegung. Ja. Und lassen Sie uns dieses Skript öffnen und sehen, was wir sehen können. Also zuerst werden wir ein paar Dinge hier drin haben. Das erste, was ein serialisiertes Feld sein
wird, wird ein privater Float namens Geschwindigkeit sein. Und wir werden das auf drei setzen. Für den Moment. Wir können das natürlich später nach unten ändern. Denn mit dem serialisierten Feld steht uns
dies natürlich im Inspektor zur Verfügung. Und was wir auch tun werden, ist, dass wir eine private Transformation erschaffen werden, die nur meine Trendstränge bilden wird. Und das wird einfach auf gesetzt. Meine Transformation ist also gleich dieser Transformation. Wir müssen das nicht unbedingt tun. In einer späteren Vorlesung werden
wir jedoch über gets Komponente lernen und warum das Caching so eine sehr intelligente Idee wie diese ist. Das zu tun ist eigentlich ganz. Und dann werden wir zwei verschiedene Methoden erstellen, weil wir
anfangen werden, Dinge in einer Weise zu tun, die, sagen wir, lesbar ist. Höchstens, so wäre das großartig. Also haben wir eine Ausführungsmethode und eine Verschiebungsmethode. Nein, normale Bewegungsmethode. Da gehst du. Also dieser, Nehmen wir einfach die geschweiften Klammern hier und dann, und diese beiden sind, wird innerhalb der Update-Methode aufgerufen. Also r1 und dann bewegen. Das ist also etwas, worüber man nachdenken kann. A normalerweise ist es am besten, jede
der Funktionalitäten in Ihrer Update-Methode in ähnliche Methoden zu trennen. Und dann haben Sie sie einfach hier drin. Denn jetzt, wenn ich in diesen Code gehe und sehe, oh, okay, zuerst werde ich laufen rufen und dann werde ich mich bewegen. Das hier. Weißt du, die Benennung könnte etwas anders sein, aber in unserem Fall denke ich, dass das gut wird. Nun wird diese Move-Methode genau das haben, was wir in den vorangegangenen Vorträgen gelernt
haben. Also zuerst bekommt die input.txt Schlüssel,
nicht den Schlüssel runter, sondern den Schlüssel erhalten. Und dann mit einer Tastennote mit einem Tastencode. Das ist also der Enum-Keycode-Punkt. Lasst uns das W nehmen, damit wir uns nach oben bewegen. Dies wird dann folgendes tun. Eigentlich bin ich ja, sicher. Lass es uns so machen. Lassen Sie uns es uns zuerst so machen. Und dann werde ich Ihnen eine andere Art zeigen, es zu tun. Also meine transform.py übersetzen, oh, nein, übersetzt. Dies ist also der Methodenaufruf, den wir verwendet haben. Letztes Mal. Dies war der Methodenaufruf, um im Grunde etwas zu bewegen. Und wir werden das in Vektor zwei Punkt setzen. Das ist also die Aufwärtsrichtung mit time.Deltatime mal Geschwindigkeit. Das ist also im Grunde der Anruf, den wir tun werden
, den wir machen werden, weil wir dann den Weg nach oben bewegen werden. Also 0, 1, x ist 0, y ist 1, Delta mal,
wieder, um es so zu machen, dass wir es nicht tun, es macht dies im Grunde mehr oder weniger wie das feste Update. Nicht ganz, aber nennen wir es einfach so für den Moment, damit wir keine verrückte,
verrückte wie große Zahl haben . Lassen Sie uns auch WASD für Argumente S und D hier tun. Und dann wäre ein links, S wäre Vektor nach unten und ein Vektor zu schreiben. Also, das ist in Ordnung. Und wir werden dies mit diesem Code für jetzt und dann testen,
werden wir ein wenig refactorieren, nachdem wir getestet haben. Nehmen wir also das Bewegungsskript und fügen es diesem Akkord hinzu. Und dann gehen wir rein und sehen, ob das wirklich funktioniert. Wenn ich also die Esc-Taste drücke, bewegen
wir uns und wenn ich sie gedrückt halte, dann bewegt sie sich und die Karte bewegt sich tatsächlich. Nun werden Sie feststellen, dass die diagonale Bewegung etwas
schneller ist als die normale Bewegung. Dies liegt einfach an der IEP. Dies ist auf das ähnliche Hinzufügen, weil wir uns bewegen, sagen
wir städtische Geschwindigkeit von drei in diese Richtung und die Geschwindigkeit von drei in diese Richtung. Und dann sollten wir uns theoretisch mit einer Geschwindigkeit von sechs in die diagonalen Richtungen bewegen. Was natürlich nicht wirklich das ist, was wir wollen. Wir werden dies jedoch vorerst ignorieren. Zunächst einmal, was wir tun werden, ist, dass wir
darüber nachdenken, dies ein winziges bisschen lesbarer zu machen. Das ist nicht das Größte, und das müssen wir nicht unbedingt tun. Aber wie Sie sehen können, ist
dies wie ein sehr wie das ist fast immer das gleiche, oder? Das, dieser Anruf hier. Es sind immer meine Trends von retranslate. Und das Einzige, was sich ändert, ist das. Und wenn wir das haben, Es ist eigentlich ziemlich einfach, noch einmal eine andere Methode oder das zu machen, also wäre dies, zum Beispiel, bewegen könnte das Ding sein oder wir könnten, wir könnten es auch einfach wieder bewegen nennen. Weil wir hier
einen Umfang haben werden , der ein Vektor sein wird, um Richtung zu zitieren. Und dann können wir das im Grunde einfach überschreiben, denn das ist, wir werden nur diese benutzen. Legen Sie die Richtung hier rein. Die Geschwindigkeit wird natürlich
von hier oben genommen werden , also ist das nicht wichtig. Und dann können wir im Grunde sagen Bewegen zu und dann Vektor zu Punkt sagen. Das wäre richtig. Und dann tauschen Sie das im Grunde einfach aus. So, boop, boop, boop. Und dann stellen Sie sicher, dass wir hier die richtigen haben. Das ist übrig und das ist unten. Sie gehen, richtig. Dies ist nur ein Beispiel. Am Ende des Tages gibt es wirklich keine wie eine richtige oder falsche Antwort darauf. Ich werde jedoch sagen, dass ich glaube, dass dies wahrscheinlich besser zu lesen ist. Wir könnten auch sagen, vielleicht in Richtung zu bewegen. Das könnte eigentlich ein besserer Name sein. Und wenn wir diesen Namen ändern wollen, können wir tun, ist, können wir Control R zweimal drücken. Also im Grunde steuern RR. Und dann können wir das ändern, also bewegen Sie sich in Richtung. Und dann ist das noch besser zu lesen. Also, glaube ich, ist noch besser zu lesen. Also können wir sehen, okay, wenn die Taste gedrückt wird, dann bewegen Sie sich in Richtung Vektor Punkt-Punkt-Punkt. Also kennen wir unseren Fall. Wir bewegen uns in die Richtung nach oben. Eigentlich wie wirklich schön zu lesen. Und insgesamt denke ich, eine gute Methode, um in diesem Fall im Grunde zu refactorieren, oder? Was hat es also auch mit diesem Lauf zu tun? Also haben wir auch diese Laufmethode hier. Und was wir hier tun werden, ist, dass wir im Grunde folgendes tun werden. Also input.txt Taste nach unten. Wenn wir also die Tasten drücken, dann sagen wir Wärme oder Linksverschiebung,
nur um des Streits willen. Dann werden wir diese Geschwindigkeit auf fünf setzen. Also im Grunde, wenn ich es einmal gedrückt habe, dann werden wir die Geschwindigkeit auf 25 setzen. Und dann werden wir das kopieren und sagen, wenn wir den Schlüssel hochbekommen, dann werden wir es auf drei zurücksetzen. Das macht es einfach so, dass wir laufen können. Im Grunde. Es gibt einige, sagen wir,
Probleme, die damit verbunden sind, die wir auch betrachten werden. Aber mal sehen, ob das funktioniert. Also vor allem unsere normalen Bewegungen funktionieren immer noch. Und wenn ich dann die Umschalttaste drücke und sie bewege, wie du siehst, bin ich schneller als vorher. Und wenn ich dann aufhöre, Shift zu halten, dann funktioniert es, so dass ich in Bursts grundsätzlich laufen kann. Das ist ziemlich gut. Eines der Dinge, die ich
natürlich tun könnte. Jetzt habe ich die Umschalttaste gedrückt. Und weil es nach dem Aufstehen sucht, kann
ich im Grunde aus diesem Fenster klicken,
aufhören, die Shift-Taste zu drücken, wieder hinein gehen. Und jetzt renne ich immer. können wir auch hier sehen. Die Geschwindigkeit ist jetzt fünf. Und jetzt renne ich immer. Nun, das ist etwas, über das Sie auch nachdenken müssen. Es ist nur eine kleine Sache, die ich nur für den Moment erwähnen wollte. Und nun lasst uns auch über die Idee der denken, die Verdoppelung. Die Verdoppelung geschieht also, weil, wie ich schon sagte ,
wenn wir uns das ansehen , wenn ich
sowohl W als auch E drücke , beide Richtungen einrücken. Und dann im Grunde wird die Übersetzung beide in
die Richtung wie rechts bewegen , mit diesen Ergänzungen. Also lassen Sie uns einfach sagen, um der Argumentation willen geht in oder links eher zu bewegen. Also wird es in Richtung minus 1, 0 bewegen. Es wird auch in die Richtung 0, 1. Und diese werden im Grunde hinzugefügt. Und die diagonale Bewegung, die dann schneller ist, dass wegen der, genau wie die Vektoren arbeiten. Richtig? Fixierung dieser Diagonale ist eigentlich, ich würde nicht sagen, unmöglich für die Übersetzung. Allerdings wird es in diesem Fall etwas mehr Finesse beinhalten. Und das ist etwas, was wir nicht tun werden,
vor allem, weil die Translate Methode tatsächlich nicht immer der beste Bewegungsweg ist, wie es bessere Möglichkeiten gibt, um Bewegung zu gewährleisten. Und in der Regel auch die diagonale Bewegung. Ob die Diagonalbewegung schneller oder nicht schneller ist als natürlich, ist
das eigentlich kein wirkliches Anliegen. Aber im Moment werden wir das nicht beheben weil in diesem Fall ist eigentlich kein Problem. Und auch wegen der fixierten würde tatsächlich ein wenig tiefer in, wie das funktioniert und würde dies ein wenig komplizierter machen. Und das soll ein sehr einfaches Bewegungsskript sein, das einfach funktioniert. Nun ist dies natürlich
ein Bewegungsskript, das in diesem Fall für
eine Art von Top-Down-Ansichten oder eine Art Zelda-Ansicht funktioniert . Aber das kann an einen Plattformtyp von u angepasst werden. Warten Sie auf das Springen und die verschiedenen, sagen
wir, diagonalen Bewegungen. Es gibt also einen anderen Weg damit. Wir können grundsätzlich das Bewegungssystem benutzen oder ein anderes Bewegungssystem erstellen. Sagen wir, das ist etwas, das wir in einem späteren Vortrag einen Blick nehmen werden. Seien Sie jedoch versichert, dass dies zu einem späteren Zeitpunkt betrachtet wird, oder? Das war es also für die ganz grundlegende Bewegung. Jetzt haben Sie eigentlich eine Karte, die sich bewegen kann, was ziemlich cool ist. Alles in Betracht gezogen. Also haben wir einen ziemlich langen Weg zurückgelegt. Und das war es für diesen Vortrag. Ich hoffe, Sie fanden es nützlich wie immer. Wenn es irgendwelche Fragen gibt, zögern Sie nicht zu fragen und ich werde sicher sein, zu antworten. Und ja.
55. (Grundlagen Unity) Mouse: In Ordnung, lassen Sie uns mit der Einführung der grundlegenden Einheit hier für den Einheitskurs fortfahren. Und in diesem Vortrag werden wir einen Blick auf eine Mauseingaben werfen. Also haben wir bereits normale Eingaben gesehen und dann ein bisschen ein Bewegungsskript. Jetzt werden wir sehen, was im Grunde die Eingaben mit einer Maus sein könnten. Und lassen Sie uns eine neue Szene dafür erstellen, das wird L2 sein. Dies ist Maus-, Mauseingaben. Und dann natürlich auch ein neues Drehbuch. Dies wird auch als Mauseingabe-Rate bezeichnet werden. Okay, lassen Sie uns dies sofort an ein leeres GameObject anschließen, auch Desmos-Eingaben genannt. Warum nicht? Und dann Zentroid Nullen 0000, nur zu meinem eigenen Vergnügen dieses Mal. Und lassen Sie uns das Maus-Eingabeskript öffnen und sehen, was wir sehen können. Also zuerst, lasst uns durch die verschiedenen Tasten gehen. Also haben wir Eingabe,
Punkt, bekommen Sie die Maustaste nach unten. Es ist fast wie Unity. Hören Sie zu, was ich gesagt habe. Und anstelle von hier, müssen wir tatsächlich die Schaltfläche durch Ganzzahl angeben. Mal sehen, was das sind. Also debuggen Sie Dot Log und sagen wir einfach Watson 0, nur zum Teufel. Und dann lassen Sie uns eins hinzufügen und drei, warum nicht? Und sehen Sie, welche diese sind. Also Taste 1, 2 und 3. Und lassen Sie uns das einfach schnell ausprobieren. Das Skript ist also an das GameObject angehängt. Also lass uns mal sehen. Also, wenn ich einen Linksklick mache, ist 0, also ist der Linksklick etwa 1000. Klicken Sie mit der rechten Maustaste. Und die mittlere Maustaste ist auch gewesen. Nun, ich habe eigentlich keine weitere Taste auf meiner Maus, also Taste drei. Nun, es existiert für mich nicht in diesem Fall. Wenn Sie eine Maus haben, die mehrere Tasten hat, also mehr als, sagen wir die linke, die rechte und die mittlere Maustaste, dann können Sie tatsächlich auf sie zugreifen auch, indem Sie einfach den Index angegebenen Jahr erhöhen. Jetzt müssen Sie dies wahrscheinlich versuchen. Und ich weiß nicht, wie zuverlässig es ist, wenn man von Maus zu Maus wechselt. Also seien Sie wahrscheinlich vorsichtig, wenn Sie diesen Weg gehen. Aber ja, ja, und dann müssen wir uns etwas ansehen. Also jetzt werden wir die Mausposition nehmen, was sehr interessant ist. Also debuggen Protokolleingabe Punkt Mausposition. Und das ist sehr interessant. Die Mausposition kann jedoch besonders am Anfang etwas verwirrend sein. Also lassen Sie uns einfach sehen, die Mausposition in Aktion. So werden wir die Mausposition jedes Mal sehen, wenn ich im Grunde mit der linken Maustaste klicke. Also werden wir es nicht ständig haben, die Ausgabe in der Konsole. Aber jedes Mal, wenn ich im Grunde mit der linken Maustaste klicke, werden wir das haben. Wenn ich also in der Mitte des Bildschirms gehe, haben
wir die meiste Position von 9635. 71 und sag, okay, lass uns ganz oben auf dem Bildschirm gehen. Und da haben wir 0 und dann wie 1000 und so etwas. Also gehen wir unten links auf dem Bildschirm. Versuchen Sie, so weit wie Spender wir können zu gehen, und dann haben wir 0,514. Also die Idee hier ist, dass die untere linke Seite
des Bildschirms im Grunde 00 ist und oben rechts auf dem Bildschirm, wenn ich es schaffen kann, es zu treffen, ich ja, im Grunde traf es. Es ist im Grunde die Entschließung. So 000. Und dann hier oben ist im Grunde die Auflösung, in unserem Fall, Full HD. So 1920 von 10 ADP. Und das ist die normale Mauseingabe, also die andere Mausposition eher. Und das können wir jedoch ändern. Das Problem ist also, nun, ich meine, vielleicht will ich die tatsächlichen Koordinaten der Welt. Also, wenn ich hier klicke, will
ich 000, weil das 000 war. Also, wie bekomme ich das? Und das ist ein bisschen, während ich nicht unbedingt nur verwirrend sagen würde, es kann ein bisschen seltsam sein. Das ist also etwas, das ich manchmal auch nachschlagen muss, weil es
verschiedene Möglichkeiten gibt , wie wir unsere Mausposition grundsätzlich auf etwas projizieren können. Und was wir benutzen, ist, dass wir die Kamera dafür benutzen werden. Und wir haben noch nicht über die Kamera gesprochen. Jedoch. Und das ist eine sehr einfache Methode, die wir verwenden können. So können wir das Kameraskript verwenden. Also Kamera Punkt, das bekommt einfach die Hauptfigur dieser bestimmten Szene. Und dann werden wir Punktbildschirm zu Weltpunkt verwenden. Und dies wird einen Vektor von drei zurückgeben, wie Sie sehen können und eine Position erfordert. Also diese Position ist, dass dann natürlich, in diesem Fall, Eingabe Punkt Mausposition. Und dies wird, wie Sie sehen können, einen Punkt Grünraum in Weltraum verwandeln. Wo welcher Raum als Koordinatensystem ganz oben
in der Spielhierarchie definiert ist. Die Bildschirmposition ist also genau das, was hier in Pixeln angegeben wird. So lassen Sie unten links 000, oben rechts Bildschirmauflösung. Also Breite mal Höhe. Und das verwandelt diese dann im Grunde in den Weltraum. Mal sehen, was wir dort sehen können. einmal werden wir das bekommen, wenn ich mit der linken Maustaste klicke. Also gehen wir zurück zum 00. Das ist eigentlich negativ, weil ich irgendwie auf dem Bildschirm war. So funktioniert das eigentlich auch. Lassen Sie uns versuchen Hand tatsächlich innerhalb des Bildschirms zu bleiben. Ja, das ist okay. Wie Sie sehen können, sind
wir irgendwo entlang der 000 bei minus acht, minus, sagen wir minus neun, minus fünf und minus 10. Nun, das sollte wirklich klappen. Denn wieder einmal, in Art von Jahren, so in der Mitte sind wir bei 000 000. Ich habe fast die genaue Mitte getroffen. Das ist, das ist eigentlich ziemlich gut. Also erinnern wir uns, dass die Kamera an Position 0, 0 minus 10. Hier kommt dieses Minus 10 her, denn wir sind im Grunde in der Ebene, in der die Kameras sitzen. Wenn ich das also auf minus 5 einstellen würde und erneut klicke, dann wären wir plötzlich bei minus fünf. Die Z-Position entspricht einfach der z-Position der Kamera. Also, das ist irgendwie wichtig, nur für Ihre Informationen zu wissen. Jetzt ist dies der Bildschirm zu Welt Punkt zu Punkt genau. Es gibt auch eine andere Sache. Das könnte ziemlich nützlich sein. Dies ist auch über Kamerapunkt zugänglich, und dies ist der Bildschirm zu Ansichtsfensterpunkt. Dies ist input.txt
Maus, Mausposition, natürlich. Und diese, wenn wir uns das ansehen, wird folgendes sein. Wenn wir wieder angefangen haben, dann das Ansichtsfenster, wenn wir versuchen, 000 zu gehen, sind
wir nicht ganz bei 000. Lassen Sie uns versuchen, dieses Bein richtig zu bekommen. Eigentlich, lasst uns das klären. Dies ist das Ansichtsfenster. Das sind also 000, 000. Die tatsächliche Position war 0529 und dann die Weltposition irgendwo in etwa minus 9 wieder. Also haben wir das schon weise gesehen, die Nullen 0000. Nun, hier oben, wenn ich es bis an die Spitze bringen kann, ist 11. Das ist also im Grunde, wie Sie sehen können, eine Art in der Mitte ist 55 als 0.5.5. Das Ansichtsfenster ist also ganz unten 00 und ganz oben 11. Könnte auch für einige Dinge nützlich sein, aber das sind eine Art der wichtigsten Änderungen. Ich werde auch nur schnell die Kommentare hinzufügen, die ich hier habe. Also habe ich bereits einige Kommentare für jeden von
denen vorbereitet , so dass wir tatsächlich darüber nachdenken können ein wenig mehr. Ich habe das schon erklärt. Wie ich schon sagte, die meisten Vasopressoren können ein wenig verwirrend sein weil wir das irgendwie von bestimmten, wissen
Sie, vom Bildschirmraum in den Weltraum und so weiter übersetzen müssen. Und es gibt auch mehrere andere. So wie Sie sehen können, wenn ich hierher gehe. Also der Bildschirm, wir haben auch uracil und wir können gehen Ports zu Bildschirm und so weiter und so weiter. Damit wir es ändern können. Wir wollten es. Deshalb habe ich gesagt, dass ich manchmal sogar noch
nachsehen muss, denn am Ende des Tages, ja, so ist es manchmal. Allerdings ist normale Mausposition unten links, 00 oben rechts, Breite Zeiten adsorbiert mit Höhe ist der Vektor. Denn die abgeschirmte Weltanschauung stellt die Koordinaten statt der Welt dar. Wenn wir also in die Mitte der Karte klicken, haben
wir momentan keine Karte und wir können das einfach testen. Warum nicht? Also ziehen wir hier einfach eine Karte rein. Warum nicht? Dann können wir tatsächlich hier klicken. Also lassen Sie uns dies zum Beispiel auf 0,
drei setzen und versuchen, in die Mitte zu klicken. Und dann sollten wir in der Lage sein, zu sehen, lasst es uns versuchen und wirklich in die Mitte zu kommen. Sind sie gehen 003, dass, wie Sie sehen können, und dann negativ 10, und das ist, was ich vorher erwähnte. Die z-Position der Koordinate entspricht also der z-Position der verwendeten Kamera. In unserem Fall verwenden wir die Hauptkamera dieser Szene. Daher ist die Z-Position bei negativer 10. Und Ansichtsfenster, wie ich auch sagte, 00 unten links und eins auf eins oben rechts. Das sind also einige der Mauseingaben. Und das Lesen der Mausposition kann für einige Dinge wirklich nützlich sein. Nun, zum Klicken, sagen wir, ein anderes Spiel Objekte, können
wir tatsächlich eine, eine viel einfachere Methode verwenden. Wir müssen das nicht benutzen. Und das werden wir später auch sehen. Wir müssen also nicht grundsätzlich immer die Mausposition innerhalb dieses Knotens überprüfen. Die Mausposition könnte verwendet werden, um ein bestimmtes Spielobjekt der Maus folgen zu lassen. Nun, das ist eigentlich etwas, was Sie wahrscheinlich schon tun sollten. Das ist also etwas, das Sie vielleicht herausfinden möchten. Und ja, aber das war es für die Mauseingaben Vorlesung hier. Ich hoffe, du hast es nützlich gefunden. Wenn es irgendwelche Fragen wie immer, zögern Sie nicht zu fragen und ich werde sicher sein, zu antworten. Und ja.
56. (Grundlagen Unity) Die Kamera: In Ordnung, lassen Sie uns mit der Einführung der grundlegenden Einheit hier für den Einheitskurs fortfahren. Und in diesem Vortrag werden wir einen kurzen Blick auf die Hauptkamera werfen. So haben wir bereits in der letzten Vorlesung in der Maus Eingänge im Grunde weg gesehen mit, in dem wir die Mausposition nehmen und Art in verschiedene Arten von Punkten umgewandelt. Also haben wir die Weltpunkte gesehen. So Bildschirm, um Punkte und Bildschirm zu wachsen, um PowerPoints anzuzeigen. Und das war abhängig von der Kamera. Das sind also ein oder zwei Dinge. Zum Beispiel kann die Kamera tun. Es gibt auch noch ein paar mehr. Ich kann Ihnen schnell zeigen, dass wir dafür kein neues Skript erstellen werden. Wir werden nur in die Art des Mauseingabeskripts schauen. Also camera.capture hat im Grunde ein paar verschiedene Dinge, die wir verwenden können. Und tatsächlich einige, wie Sie sehr deutlich sehen können, gibt es eine Menge Dinge, wissen Sie, die pixelbreite, orthographische, was bedeutet das, all das, wir können die Kamera zurücksetzen. Es gibt also eine Reihe von Methoden, die wir auch aufrufen können. Aber das meiste davon normalerweise nicht, wird nicht per Skript gemacht. Wir machen tatsächlich die Änderungen innerhalb unserer Szene hier. Also hier können wir eigentlich im Grunde
all die Dinge verwenden , die wir gerade im Skript gesehen haben. Es gibt also ein paar Dinge, die wir tun können. Es gibt also eine klare Flaggen. Wir haben nur Tiefe, nicht klar und Skybox. Und wenn wir darüber schweben, wie Sie deutlich sehen können, gibt es tatsächlich eine wirklich gut durchdachte Erklärungen für viele dieser Dinge. Also, was ich werde einfach schnell durch diese Dinge gehen. Also insgesamt, Farbe, ich meine, das sollte selbsterklärende Farben sein, nur die Hintergrundfarbe, die wir haben. Culling Maske ist im Grunde, wie Sie sehen können, welche Ebenen der Kamera rendert. Es gibt also verschiedene Schichten, die hier etwas haben kann. Und wenn Sie etwas ignorieren wollen, also zum Beispiel, wenn wir zum Pik-Ass gehen, ist
dies die Standardschicht hier. Und wenn wir aufhören, die Standardebene zu rendern, dann ist
sie, wie Sie in der Hauptkamera und auch im Spiel sehen können, nicht mehr da. Dies ist zum Beispiel
etwas, das Sie ein- und ausschalten können. Die Projektion ist sehr interessant. Also, wenn wir uns das hier ansehen, so bedeutet orthographisch einfach, dass, wenn ich schnell in
der Szenenansicht auf den dreidimensionalen Raum umschalten , und ich etwas verkleinern. Also kann
ich mit der rechten Maustaste die Kamera irgendwie mit der mittleren Maustaste schwenken, ich kann sie bewegen. So können Sie diese Art von Box sehen, die sich hier im Grunde auf die unendliche Ebene erstreckt. Und das ist die Projektion, die durchgeführt wird. Es ist also eine Eins-zu-Eins-Projektion, keine Perspektive. Normalerweise haben Sie vielleicht davon gehört. Die, Es gibt eine Perspektive. Also Dinge, die Neera sind, würden
Sie größer ziehen als Dinge, die weiter entfernt sind. Diese einfache Perspektive im Grunde, jetzt hat die Orthographie tatsächlich nur alles in der gleichen Größe. Nur für die Show, ich werde tatsächlich schnell Größe dieses, Skala, dies bis zu 44. Also können wir das tatsächlich ein bisschen besser sehen. Und dann die Hauptkamera, wenn wir sie noch einmal betrachten und ich das in Perspektive ändere,
dann, wie Sie sehen können, ist
dieser Projektionskegel tatsächlich viel mehr wie eine normale Kamera, richtig? So sozusagen. Und es ist in diesem Fall nicht wirklich bemerkbar. Das eigentliche Objekt hier ändert jedoch nicht wirklich so sehr, weil
es sich vor allem um ein flaches 2D-Sprite handelt. Und auch, wir brauchten nicht wirklich diese Projektion zu verwenden. Die Projektion der Perspektive ist im Grunde notwendig, wenn Sie ein dreidimensionales Spiel wollen. Das ist der einfachste Weg, darüber nachzudenken. Es gibt auch ein Sichtfeld in diesem Fall, wir sind, wie Sie sehen können, können
wir die Projektion weiter entlang oder größer auseinander machen. Also gibt es hier tatsächlich ein f von v Schieberegler. Und es gibt noch andere Dinge, die wir daraus zu einer physischen Kamera machen können. Ich muss ehrlich sein, ich habe noch nie so viel damit herumgespielt. Und Schnittebenen bedeutet einfach, wo ist die Entfernung, wenn die Kameras das Rendern stoppen? Also lasst uns die orthogonale Größe eintragen. Sind wir eigentlich auch in die Größe gesetzt. Die Größe bedeutet also einfach die Größe der Vorhersage, wie Sie sehen können. So macht das kleinere im Grunde einfach einen kleineren Bereich es drin. Die Schnittebenen bedeuten einfach, okay, wann hört das Rendern auf? Also, wenn ich das auf negative neun setze, dann ist es wirklich, wirklich nah an der Kamera. Nun, das ändert sich nicht, weil die orthogonale Projektion nur, oh ja, das ist nur eine 2D-Oberfläche. Wenn ich Perspektive setzen und natürlich jetzt die, es ist weg. Und wenn ich die Kamera ein wenig nach oben bewegen und ist riesig, wie Sie sehen können. Das ist also tatsächlich eine wirklich gute Möglichkeit,
die Entfernung anzuzeigen , die für die Skalierung des Objekts keine Rolle spielt. Nur die Skala statt hier ist wirklich wichtig. Und die Schnittebene bedeutet einfach, dass wir, wenn dies näher an die Kamera kommt, gerade jetzt bei 0,4 von der Kamera entfernt sind, immer noch da. Aber wenn ich bei Punkt minus 9,
7 gehe , dann sind wir 0,3 entfernt. Das ist also nur an der Schwelle. Wo sehen wir es noch? Und dann bei 98, so ist es jetzt die einzige 0,2 von der Kamera entfernt, und dann stoppt es das Rendern, weil es zu nah an der Kamera ist. Das ist im Grunde, was diese Schnittebene hier, meine Kontrolle. Also, wenn ich das auf 1.1 setze, dann plötzlich, wie Sie sehen können, erscheint
die Karte wieder. Das sind also die Schnittebenen. Lassen Sie uns das tatsächlich machen, wir können auf diesen Sperrschlüssel klicken und dann, was auch immer ich anklicke, der Inspektor bleibt dort, wo er ist. Also, das ist eigentlich irgendwie nützlich. Das Ansichtsfenster zeigt, wie Sie sehen können, an, wo der Bildschirm und die Kameraansicht gezeichnet werden. Ich bin normalerweise auch etwas, das ich nicht wirklich so viel gebraucht habe. Bringen wir das Herz zurück. Wo ist die Kamera oder negative Zehn? Und dann ist das, oh tut mir leid, ich bin natürlich das, das macht Sinn. Weil dies hat, bleibt die Kamera natürlich 0, und dann ist diese bei negativem 10. Also, da gehst du. Okay, jetzt können wir das Pik-Ass wieder sehen. Und wenn wir dieses Amin ändern, können wir das einfach ändern. Wie Sie sehen können, wird der Bildschirm einfach, ich meine, Negativ wäre nicht die beste Idee. So wird der Bildschirm, wie Sie sehen können, einfach kleiner und es wird tatsächlich verschoben. Und dann,
wir, ich meine, du kannst es größer machen, aber es funktioniert nicht. Und dann können Sie es hier auch kleiner machen. Und dann auf die y-Richtung. Und das Gleiche passiert auch. Wie gesagt, verwenden Sie normalerweise nicht wirklich das Viewport Rect o so viel. Dasselbe mit fast allen anderen Dingen. Vor allem, weil sie normalerweise nicht wirklich für zweidimensionale Spiele benötigt werden. Es gibt einige, etwas über die Tiefe gesagt werden kann. Insgesamt würde ich jedoch sagen, dass dies ein guter kurzer Überblick ist, oder? Das ist also nur ein kurzer kleiner Blick darauf. Mit mir. Grundsätzlich sind die wichtigsten Dinge, die wir für
die zweidimensionale Spielentwicklung in diesem Fall brauchen , oder? Aber auch die meisten Dinge in der Kamera müssen wirklich nicht geändert werden. Das einzige, was sein könnte, ändert die Größe der Kameras. Also, wie viel es tatsächlich zeigt, vielleicht auch die Schnittebenen, obwohl ein 0.310104, es ist in der Regel genug. Das war es also für diesen Vortrag. Nur ein kurzer kurzer kurzer Überblick für die Kamera. Wenn es Fragen wie, immer, zögern Sie nicht zu fragen und ich werde sicher sein, zu antworten. Und ja.
57. (Grundlagen Unity) GetComponent in Unity: In Ordnung, lassen Sie uns mit der Einführung der grundlegenden Einheit hier für den Einheitskurs fortfahren. Und in diesem Vortrag werden wir einen Blick auf die Get Component-Methode werfen, die eine zentrale Methode ist, die im Grunde verwendet wird, um die Komponenten von GameObjects zu erhalten. Das einzige Beispiel dafür, das wir mehr oder weniger gesehen haben, war die Transformation. Aber wir haben Zugriff auf diese Transformationskomponente, indem wir einfach Punkt-Transformation verwenden und über einen bestimmten Eigentümer, das Spielobjekt, darauf zugreifen. Es gibt jedoch andere Komponenten hier. Zum Beispiel konnte der Sprite-Renderer, wie wir hier sehen werden
, im Grunde ein Bild zeigen. Wir hatten spezielle Skripte. Diese würden auch als Komponenten gezählt werden, oder zum Beispiel, die wir auch die Kamera-Komponente gesehen haben. Und wir können auf diese von anderen GameObjects innerhalb unserer Skripte zugreifen. In der Zwischenzeit habe ich hier alles in ordentliche kleine Ordner gelegt. Also werden wir einen neuen Ordner erstellen. Dies wird L 14 get Komponente sein. Jetzt fehlt l 13, weil
wir in der letzten Vorlesung natürlich einfach auf die Hauptkamera geschaut haben. Es gab keine Skripte, die damit verbunden sind. Und wir wollen auch eine neue Szene. Also lasst uns auch einen neuen Senior machen. L 14 erhält Komponente. Und innerhalb der Skripte, öffnen
wir zuerst die Szene. Und dann werden
wir anstelle der Skripte dieses Mal zwei Skripte erstellen. Eines wird das Beispielskript sein, das Sie gehen und Sie können das bereits öffnen. Und dann lassen Sie uns auch ein anderes Skript erstellen. Und das ist das erhaltende Komponenten-Skript, wo eher das ist, was wir es nennen. Ordnung, also innerhalb unseres Beispielskripts werden
wir zuerst die Update-Methode
löschen. Das brauchen wir nicht. Und dann werden wir einfach einige nette Variablen deklarieren. Wie wäre es mit einem, einem Integer-Testwert von einem 100? Und dann ein öffentlicher Float, der ein anderer Wert ist. Was jemand ist wie, ich weiß nicht, wie 42.1337 Hemden, f natürlich. Und dann lassen Sie uns auch eine öffentliche Kamera machen. Die Kamera als Variable, die in diesem Fall ist es nicht initialisieren und wir werden diese
innerhalb der Startmethode initialisieren , indem Sie Camera Main tun. Damit wird einfach die Hauptkamera hier drin gespeichert. Und wie sehr klar ist, ist
alles hier öffentlich. Andernfalls ist der Zugriff über ein anderes Skript nicht möglich. Denn in diesem Fall, oder besser gesagt, ja, ist es nicht von einem anderen Skript zugänglich, weil dies einfach. Wir holen die Klasse zurück, aber wir werden das in Kürze sehen. Lassen Sie uns auch über das Innere unserer bekommenen Komponenten nachdenken. Lassen Sie uns hier tatsächlich ein privates Spielobjekt machen. Das wird also die Karte sein. Wir werden in Kürze eine Karte hinzufügen. Und ja, lassen Sie uns zuerst die Karte hinzufügen, und lassen Sie uns ein paar Dinge darauf hinzufügen. Also noch einmal, wir können einfach das Herz-Ass hier nehmen, es
einlegen, wir positionieren es hier, machen es ein bisschen größer, damit wir es tatsächlich sehen können. Und dann werden wir hier das Beispielskript nehmen und es
auf das „On the Ass of Heart“ setzen . Also auf die Karte. Ich werde dies auch in Gericht umbenennen, weil das einfach einfacher ist. Und wir sind auch so, was wir tun könnten, natürlich, wir könnten die Hauptkamera nehmen und sie in Europa setzen oder bereits gezeigt, dass Sie es im Grunde
in den Inspektor selbst stecken und so einstellen können. Im Skript haben wir jedoch natürlich
die Kamera so eingestellt , dass die Startmethode verwendet wird. Das ist also auch in Ordnung. Und dann machen wir hier ein, ein leeres GameObject. Dies ist das bekommende Komponenten-Spielobjekt. Natürlich nochmals zentrieren, nur damit alle hier glücklich sind. Und dann die Komponenten zu bekommen, ist ein Skript, das wir auf diesem wollen. Und jetzt wollen wir irgendwie auf diese Testwerte von diesem Skript
zugreifen. Das könnte also sein, du könntest es so vorstellen. Vielleicht gibt es ein Gesundheitskript, das wir ändern
wollen , oder es gibt ein Manuskript,
das wir verfolgen wollen , oder so etwas. Wir wollen das einfach, diese Werte. Wir wollen sie ändern. Und wir wollen auch vielleicht sogar die Position der Karte ändern oder etwas Ähnliches. Nun, wie machen wir das? Nun, zuerst haben wir hier das GameObject-Kabel. Und lassen Sie uns das einfach als serialisiertes Feld machen, nur damit wir sehen können, was hier vor sich geht. Anstelle der Start-Methode werden
wir die Spielobjektiv-Punkt-Find-Methode verwenden, die uns erlaubt, die wir bereits gesehen haben, die es uns ermöglicht, einfach einen Mann zu finden, ein bestimmtes Objekt innerhalb der Szene mit den Namen, in diesem Fall Karte. Oh, noch einmal, es ist wichtig, dass der Name richtig geschrieben ist. Und jetzt, was wir tun können, haben
wir diesen Kurs gefunden, weil dies natürlich ist, nur zur Klärung, dieses Spielobjekt, das wir finden werden, dieses hat ein Beispielskript als Komponente an ihn angehängt. So können wir jetzt tun, ist, dass wir im Grunde können, und wir brauchen dies nicht unbedingt, aber Sie können Beispielskriptbeispiel sagen. Dies ist also einfach eine neue Instanz des Beispielskripts. Das funktioniert also völlig gut, weil dies eine normale Klasse ist, die wir eine normale Variable ausschalten
können. Und wir können es grundsätzlich initialisieren und setzen. So können wir dies Autos dot-get Komponente zuweisen. Wie Sie sehen können, ist dies bereits hier hervorgehoben. Also können wir sagen, get component und dann ist das, wo einige Leute ein wenig verwirrt sind. Wir haben diese Get Komponente mit den im Grunde Winkel Klammern. Und die bedeuten natürlich
ein A-Generikum . Und die Leute sind wie, ich weiß nicht ganz, was ich hier reingesteckt habe. Nun, Sie setzen hier genau das ein, was Sie wollen. Also von den Komponenten, wenn ich
also die Beispielskriptkomponente möchte, lege
ich ein Beispielskript ein und muss dann natürlich ändern, beenden Sie dies mit den Klammern hier, um zu signalisieren, dass dies ein Methodenaufruf ist. Und das wird dann zurückkehren. Wenn das, dieses Spielobjekt tatsächlich die Komponente hat, die wir hier angegeben haben, dann wird es dies zurückgeben und es einfach innerhalb unserer Variablen speichern. Wenn ich nun wieder darauf zurückblicke, können
wir sehen, dass natürlich das Beispielskript definitiv eine Komponente dieser Karte ist. Es gibt jedoch auch den Sprite-Renderer und das ist
zum Beispiel auch der Transport. Aber es gibt viele andere Dinge, die keine Bestandteile davon sind. Was zum Beispiel, wir könnten sagen, nun, ich meine, ich will Gesundheit jetzt. Der einzige Grund, warum das nicht funktioniert, ist deshalb. Also, wenn ich hier eine gesundheitliche Variable hatte und ich sagte:
Nun, gib mir den Bestandteil der Gesundheit. Wir könnten das tun. Dies wird jedoch natürlich nicht funktionieren, da es auf diesem speziellen Spielobjekt
keine Komponente Gesundheit vor Ort gibt. So können wir im Grunde sagen,
okay, gib mir diese Komponente,
besorgt mir diese Komponente, gib mir diese Komponente. Und das ist ein wirklich nützliches Werkzeug. Und eines der größten Dinge, die wir essen, müssen im Grunde tun, um bestimmte Komponenten von Spielobjekten zu erhalten. Und eine Sache, die sehr wichtig zu erwähnen ist, dass die, diese Get Component Kohle ist sehr, kann sehr, sehr intensiv in Bezug auf die Nutzung von wie CPU und Zeit. Das ist also eine, das ist eine kostspielige Kohle. diesem Grund sollten Sie immer diese in der Store-Methode verwenden und dies zwischenspeichern. Grundsätzlich so, und nicht immer wieder get-Komponente aufrufen, diese Komponente, Kegel Komponente auf der gleichen Komponente erhalten. Aber Sie sollten dies immer so zwischenspeichern. Und sagen wir einfach Debug Dot Log example.bam Testwert. Wie Sie jetzt sehen können, kann ich auf diese zugreifen, weil dieses Beispiel
einfach eine bekannte Variable vom Typ Beispielskript ist . Und das ist eine normale Klasse. Wir können uns das als eine völlig normale Klasse vorstellen. Und dann können wir das einfach überschreiben. Ich kann auch einen anderen Wert sagen. Und dann zum Beispiel die Kamera. Die Kamera, wenn die Kamera, ja, da gehst du. Das funktioniert also völlig gut. Und wenn wir damit anfangen, ist
der, den wir sehen werden, ein 142 und null. Und jetzt kommt die Frage:
Warte, warum das null ist? Weil die Kamera hier eingestellt ist? Nun, der Grund, warum dies nein ist, liegt an der Skriptausführungsreihenfolge. Und das werden wir einen Blick darauf werfen, wenn wir uns einige der Einstellungen ansehen. Aber im Allgemeinen ist die Skriptausführungsreihenfolge natürlich, weil wir zwei Skripte in Jahr 1 haben, muss
eines dieser Skripte vor dem anderen laufen, richtig? Also, weil wir sie nicht wirklich parallel ausführen können, denken Sie
vor allem so darüber nach. Wir haben 120 Skripte. Ich meine, wir können sie nicht parallel zu Skripten ausführen, wäre theoretisch möglich, aber das ist immer noch nicht passiert. Es gibt also ein paar Dinge, die wir tun können, um im Grunde sicherzustellen, dass die Variablen gesetzt wurden. Wir können, anstatt die str-Methode zu verwenden, können
wir die wait-Methode verwenden, da die wait-Methode immer vor der start-Methode aufgerufen wird. Und das stellt dann einfach sicher, dass die Kamera-Variable eingestellt wurde. Also lassen Sie uns dies versuchen und sehen, ob dies immer noch null ist oder ob wir tatsächlich Master-Knoten haben. Jetzt ist die Hauptkamera eingestellt und jeder ist glücklich. Das ist also ziemlich cool. Und in Zukunft, was Sie auch denken können, ist, naja, eigentlich, was ich will, dass ich will, ich will, die Position dieses Wagens ändern. Nun, wir können das tun. Wir können sagen, „Transport“. Also speichern wir die Transformation und sagen Karte Transformieren, Transformieren. Und dann, anstatt einfach so könnten wir das auf zwei Arten tun. Wir könnten sagen, Karte Punkt transformieren. Also können wir es so machen. Im Hintergrund. Diese Transformation tut nichts anderes. Rufen Sie dann die get-Komponenten-Methode mit transform auf. Das ist also grundsätzlich austauschbar. Wenn wir das tun. Da gehst du. Das ist also austauschbar, genau das Gleiche. Und es tut genau das Gleiche. Ja, es hat genau das gleiche Ergebnis im Grunde. Was wir dann tun können, ist zum Beispiel Akkorde transformieren Punktposition, einfach die Position ausgeben. Und dann dazwischen hier, Lassen Sie uns die Position ändern, sagen
wir einen neuen Vektor 3
, der so etwas wie, Ich weiß nicht, wie man, F zu F und F. Ja. Richtig. Also werden wir nur die Position
dieser Kerntransformation ändern , die wir mit der Get Komponente erhalten haben. Also lasst es uns wirklich so machen. So auch möglich, gleich wie get Komponente. Komponente ist und mal sehen, ob das funktioniert. Wenn das Gericht tatsächlich seine Position ändert. Und wie Sie sehen können, hat die Karte ihre Position geändert: 2, 1, 2. Und wenn wir uns die Ausgabe ansehen, können
Sie auch sehen, dass zuerst die Position 03 war und dann die Position 12 war. Die Komponentenmethode ist also ein zentraler
Bestandteil dieses komponentenbasierten Designs, den Unity innewohnt. Und es ist einfach möglich, mit dieser Methode grundsätzlich
alle Komponenten eines bestimmten Spielobjekts zu
erhalten, auf seine Variablen zuzugreifen und sie bei Bedarf auch zu ändern. Ja, das ist eigentlich eine ziemlich einfache Möglichkeit,
auf verschiedene Komponenten aus verschiedenen Skripten zuzugreifen. Insgesamt. Wie ich schon sagte, dies ist definitiv eine Kernkomponente und jede andere Komponente, über die wir lernen, kann im Grunde so zugegriffen werden. Und das Tolle ist, denn das haben wir zum Beispiel schon mit der Kamera gesehen. All die Dinge, die wir sehen. Also all die besonderen Dinge, die wir hier ändern können, die Größe oder für die Karte, das Beispielskript, den Testwert auf einen anderen Wert, dass die Kamera. Diese können auch alle von
genau einem anderen Skript geändert werden , nachdem wir die Komponente von dort erhalten haben. Also bekomme Komponente, unglaublich nützliches, unglaublich wichtiges Werkzeug für uns in unserer Toolbox, um im Grunde mit Unity zu arbeiten, oder? Aber das war es für diesen Vortrag. Wie immer, hoffe ich, Sie fanden es nützlich. Das war eigentlich wieder ein ganz großes Thema an dieser Stelle. Aber insgesamt denke ich, dass es sehr gut gelaufen ist. Und wie immer, wenn es irgendwelche Fragen gibt,
zögern Sie nicht, zu fragen und ich werde sicher sein, zu antworten. Und ja.
58. (Grundlagen Unity) Prefabs und Vorlagen: In Ordnung, lassen Sie uns mit der Einführung der grundlegenden Einheit hier für den Einheitskurs fortfahren. Und in diesem Vortrag werden wir einen Blick auf Prefabs werfen und wie man sie instanziiert. Also vor allem, was sind Prefabs? Wir werden Prefabs sind im Grunde GameObjects, die daher sozusagen ein für die Replikation
sind. So gibt es sozusagen eine Art Vorlage, aus der wir neue Objekte erstellen können, die denen sehr ähnlich sind. Und lassen Sie uns einfach eine neue Szene erstellen. Vor allem noch einmal, so gesehen 15 genannt prefabs. Und dann lasst uns das auch sofort beginnen. Eine neue Mappe hier, L 15 prefabs. Und wir brauchen nur ein Skript. Und wir nennen das den Klickspawner. Denn was wir damit machen werden. Sobald wir mit der Maustaste geklickt
haben, werden wir in einer neuen Karte schwan. Das wird also sehr interessant sein. Sagen wir einfach, wir haben die Klicks Warner hier. Klicken Sie auf „Spawner“. Wieder einmal an Position 0, 0, 0. Natürlich. auch sicher, dass die Komponenten dort sind. Und dann lassen Sie uns hier eine neue Karte erstellen. Und wir werden das auch auf 000 000 000 setzen. Und wir werden das eigentlich nur etwa doppelt so groß machen. Eigentlich behalten wir es bei 11, eins mit der Größe. Und dann können wir später darüber nachdenken, etwas damit zu tun. Und was wir jetzt tun können, ist, dass wir im Grunde sagen können, gut Karte, also ist dies jetzt ein Kartenobjekt. Und wie machen wir daraus ein Prefab? Nun, der einfachste Weg ist einfach, dieses Objekt richtig zu nehmen? Sobald wir im Grunde alles eingestellt haben, wie es sein sollte. Dies ist also die Standardpositionierung einer Karte. Dann sagen wir, okay, ziehen wir es einfach hierher zu Prefabs. Und jetzt, wie Sie sehen können, wird das blau. Und jetzt hier unten haben wir ein Prefab Asset. Die Idee ist also, dass wir jetzt diese Art von Vorlage und all die verschiedenen Werte haben, die wir hier oder innerhalb dieses Prefab gesetzt haben. Jetzt können wir auch dieses Prefab öffnen und es anstelle dieser Art von Vorlage abgeschirmt sehen, Art der Prefab Bildschirm und können es hier ändern. So können wir ein paar Dinge ändern, wie Flip das Bild,
Flip, oder wir können es bewegen. Oder wir könnten auch Komponenten hinzufügen. Zum Beispiel, jetzt werden wir das nicht tun. Um zurück zu gehen, können wir einfach den Zurück-Pfeil dort drücken. Und in diesem speziellen Fall dieses Prefab sind sie verbunden. Und das sieht man im Grunde das Blau. Unterstreichen Sie hier und es gibt einige Dinge, die als wären sie fett markiert. Und die Idee ist, dass wir, wenn
wir etwas ändern , zum Beispiel, in diesem sagen können, wie Sie Überschreibungen auf Karte in Szene sehen können, was das bedeutet, ist, dass Sie im Grunde ändern, Sie können etwas ändern hier drin. Also kenne ich die Rotation nicht. Ich meine, diese Rotation ergibt keinen Sinn. Also diese Rotation, zum Beispiel. Und mit einem Auswahlschlüssel können
wir sofort das Prefab innerhalb unserer Projekte auswählen. Wir können es auch sofort öffnen. Und im Moment, was das tut, ist, dass es die Karte überschreibt. Was bedeutet das? Nun, wenn wir uns das ansehen, hat sich nichts geändert. Dies überschreibt grundsätzlich. Es steht: Okay, wir nehmen diese Werte statt dieser Werte hier. Es gibt ein paar Dinge, die wir tun können. Also mit einem Prefab, wie Sie sehen können, können
wir es auspacken und verpacken, lösen
Sie es einfach von der Prefab ab. Wir können die Säure auswählen. Es gibt ein paar Dinge, die wir mit Prefabs machen können. Und was das Wichtigste ist im Grunde, dass wir können, jetzt hier können wir es betreten, wieder in sie
eintreten, wie Sie sehen können. Aber das Wichtigste für das Prefab, das wir
tun können, ist, dass wir neue Objekte erstellen können, all diese. Also lasst uns das einfach innerhalb unserer aktuellen Szene löschen. Und das Prefab hier,
das, das wir neue Karten erstellen werden. Und wir werden dies tun, indem wir das Clicker Spawner-Skript hier ändern. Und in ihm werden wir
ein privates GameObject haben, weil wir immer neue Spielobjekte erstellen, die das Gericht prefab genannt werden. Dies wird ein serialisiertes Feld sein, sehr wichtig, damit wir tatsächlich
darauf zugreifen können , weil es keinen anderen Weg gibt, auf den wir zugreifen können. Wir können die GameObject-Punktsuche in diesem Fall nicht verwenden, weil ,
naja, es gibt keine Karte statt R und irgendwie hier zu sehen. Also müssen wir das anders machen. Und die Art und Weise, wie wir das tun werden, ist, dass wir das manuell einstellen werden. Also werden wir sagen, dass Sie die meisten Knopf nach unten 0 bekommen. Hoffentlich erinnern Sie sich daran, dass dies die linke Maustaste war. Und was wir tun werden, ist, dass wir hier ein neues Spielobjekt erstellen werden. So neue Karte ist gleich zu instanziieren. Und ich werde sagen, Karte Prefab mit dieser Punkt-Punkt-Punkt-Transformation. Und was das tut, ist, wenn wir den Mauszeiger darüber bewegen, sollten
wir tatsächlich in der Lage sein zu sehen, wie Sie sehen können, dass dies eine Transformation als Elternteil erfordert. Dieses neue Spielobjekt, das wir mit
dem Instantiate Methodenaufruf erstellen , wird sofort dem Elternteil der Klicks Bonner zugewiesen. Und dann können wir auch, weil wir hier die neue Kartenvariable haben, da können
wir sofort ein paar Dinge ändern. Bald, neue Karte dot transform.py Mission. Und was wir tun werden, ist, dass wir dies zu einer zufälligen Position machen werden. Also werden wir sagen, zufälligen Punktbereich zwischen irgendwo zwischen negativen 10, Nehmen wir an, e1 plus 10. Und das y wird auch irgendwo zwischen einem negativen 10 und 10 sein. Lassen Sie uns das auf sieben abstellen, weil ich nicht weiß. Ich bin nicht 100 Prozent sicher, wo die Grenzen sind. Aber das werden wir auch in Kürze sehen. Und ja, wir können natürlich auch alle möglichen anderen Dinge ändern. Wenn die Karte, jetzt, über die letzte Vorlesung mit der Get Komponente
zurückdenkt , können wir
natürlich auch rufen get Komponente auf hier. Und wenn es irgendwelche besonders wichtigen Komponenten auf diesem Akkord gibt, könnten
wir diese natürlich auch setzen. Wenn dies
zum Beispiel ein Health-Skript hätte, könnten wir die Dinge auf dem Health-Skript ändern, wie Sie sehen können. So könnten wir zum Beispiel die Gesundheit ändern, wenn das auf der Karte
war, und so weiter und so weiter. Dies ist also eine Art Art, einige Werte bestimmter Objekte zu initialisieren. Richtig? Nun, es ist sehr wichtig, dass dieser Gerichtsvorstand natürlich gesetzt werden muss, und deshalb müssen wir das hier rein ziehen. Dies ist das einzige Mal, dass wir tatsächlich etwas hineinziehen müssen. Wenn wir Prefabs verwenden und wir Objekte daraus erstellen, dann muss dies eine Art mehr oder weniger manuelle Sache sein. Und mal sehen, ob das funktioniert. Wenn ich also auf den Bildschirm klicke, erscheint eine neue Karte. Und wenn wir uns diesen einjährigen Karten-Klon ansehen, und wir können sehen, dass es tatsächlich als Kind dieses Klick-Spawner erscheint. Also einige Karten, denn sieben ist definitiv ein bisschen zu weit draußen. Also das ist wahrscheinlich mehr wie fünf ist wahrscheinlich die, so fünf wäre wahrscheinlich am besten. Also kommen wir zurück zu den Klicks Boehner und sagen, okay ist irgendwo von negativen fünf bis fünf. Dies macht auch Sinn, weil die Hauptkamera, natürlich, die Größe ist auf fünf eingestellt. So dass tatsächlich in einer Menge Abfall überprüft. Also lasst uns einfach ein paar Mal herumklicken. Und wie Sie sehen können, bekommen wir jetzt eine Gruppe von Karten, nur zufällig generiert, und es
gibt immer mehr Karten und wir laichen sie einfach wie verrückt. Aber es funktioniert, es funktioniert sehr gut. Und auf diese Weise können wir im Grunde neue Objekte erstellen, sie in unserem Spiel hervorbringen lassen. Und dann natürlich, wenn sie bestimmte Skripte haben, die ausgeführt werden, dann können diese ohne Probleme laufen, ohne dass wir dort etwas besonders Verrücktes tun müssen. Also, ja, das ist im Grunde die Idee von Prefabs. Sie sind unglaublich nützliches Werkzeug, um eine Vorlage zu haben, aus der wir dann neue Spielobjekte erstellen können. Einige Beispiele dafür könnten so etwas wie eine wie sogar eine Textnachricht enthalten. Du könntest solche Präfekte haben. Du könntest Prefabs für Feinde haben. Das ist wie eines der klassischen Beispiele, richtig? Würde einen feindlichen Prefab haben und dann einen feindlichen Spawner, zum Beispiel, und dann einfach verderben sie in, wie Sie gehen. Nun ist eine Sache, die zu erwähnen ist, dass die Instanziate-Methode natürlich auch
sehr CPU-intensiv oder sehr teuer ist . Es gibt also etwas, das als Objektpooling bezeichnet wird, das Sie tun könnten. So am Anfang des Spiels, können Sie wie ein 1000 Objekte erstellen, stecken Sie sie irgendwo in der Spielwelt, wo sie nichts tun und dann im Grunde einfach ihre Positionierung einstellen und vielleicht ein paar Dinge auf ihnen ermöglichen. Aber insgesamt ist das etwas, das nicht ist, wir werden uns jetzt keine Sorgen machen. Ich wollte nur erwähnen, dass die Instantiate-Methode, wie wir das letzte Mal mit der Get-Komponentenmethode gesehen haben, nicht wirklich wie verrückt sein
sollte. Du solltest also nicht wie
ein 100.000 neue GameObjects erstellen , wie jeder Frame oder so etwas Verrücktes. Seien Sie also sehr vorsichtig, besonders wenn Sie versuchen, for-Schleifen innerhalb der Update-Methode zu verwenden. Das ist etwas, das vielleicht nicht so funktioniert, wie du es wolltest. Aber ja, das war im Grunde, um neue Spielobjekte mit Prefabs zu erstellen. Wie immer, hoffe ich, Sie fanden es nützlich. Und wenn es irgendwelche Fragen gibt, zögern Sie nicht, zu fragen und ich werde sicher sein, zu antworten. Und ja.
59. (Grundlagen Unity) Texturen und Sprites: In Ordnung, lassen Sie uns mit der Einführung der grundlegenden Einheit hier für den Einheitskurs fortfahren. Und in diesem Vortrag werden wir einen Blick auf die Sprites werfen und vor allem auf die Spektren hier. So haben wir gesehen, wir haben auch bereits das Herz-Ass als Sprite hinzugefügt. Und ich habe gesagt, dass wir uns das später ansehen werden, und jetzt ist es an der Zeit. Also habe ich das L4 tatsächlich geöffnet, um Komponentenskripte zu erhalten, damit wir
das eigentliche Sprite innerhalb der Szenenansicht hier visuell sehen können . Und wenn wir Änderungen daran vornehmen, dann können wir im Grunde nicht. Okay, was ist los? Warum es passiert und ja. Also zuerst, lasst uns von oben nach unten durchgehen. Der Texturtyp von Sprite ist derjenige, den wir im Grunde ausschließlich innerhalb dieses Kurses
verwenden werden. Und wie Sie sehen können, ist die Frage hier, wofür diese Textur verwendet wird? Genau, es wird ein Sprite sein. Das ist also diejenige, die wir benutzen werden. Die anderen interessieren uns momentan nicht. Zumindest nicht für diesen Kurs. Dann der Sprite-Modus. Der Sprite-Modus ist also sehr interessant. Wir haben Single, Multiple und Polygon. So einzelne und mehrere andere, die für uns interessant sind. Einzeln bedeutet einfach, dass dies eine einzige Textur ist. Dies ist ein einzelnes Sprite. Diese einzige Sache und mehrere, was etwas ist, das wir später in der Zeile betrachten werden, ist, wo wir mehrere bestimmte Bilder in
einer Datei haben , so dass wir im Grunde in einer Datei setzen können. Und dann können wir das über den Sprite Editor trennen
, den wir in der nächsten Vorlesung
genauer betrachten werden, Pixel pro Einheit. Also, was bedeutet das? Nun, wie Sie sehen können, wie viele Pixel im Sprite einer Einheit in der Welt entspricht. Das ist der Grund, warum wir diesen Akkord mehr oder weniger skalieren müssen, damit er wirklich
hineinpasst. Da die Karte tatsächlich ist, glaube
ich, dass das Bild 64 mal 64 Pixel ist. Was wir also tun können, ist, dass wir es auf 64 setzen können. Und wenn ich mich bewerbe, was Sie sehen werden, ist, dass die Karte jetzt sehr viel größer geworden weil es jetzt 64 Pixel für eine Raumeinheit sind. Je kleiner diese Zahl ist, desto größer wird das eigentliche Bild. Aber normalerweise hängt es davon ab, wie groß das Bild ist. Normalerweise denke ich, dass dies gestellt werden sollte, lassen Sie uns dieses Jahr schnell schauen, damit ich überall klicken kann. Normalerweise sollte diese Zahl irgendwo herum sein, wie groß die Bilder,
vor allem, wenn es ein Quadrat ist, das ist die beste der Netztyp, Arten von Sprites viel erzeugt. Ich muss ehrlich sein, das ist etwas, mit dem ich nicht zu 100 Prozent vertraut bin. Da ist gerade in meinem Kopf. Nicht wirklich so viel Unterschied da. Kanten extrudieren, wie viel leerer Raum lässt uns gleich um ihn herum, richtig? Das ist also wirklich nur wichtig. Sehen Sie, in einem generierten Netz gerade für uns, nicht so wichtig. Der Pivot, der Pivot wird es einfach ändern,
zum Beispiel, oben rechts und wenden Sie dies an. Und wie Sie sehen können, geht das plötzlich nach unten. Denn auch wenn die Karte selbst, wenn wir diese wieder entsperren, ist
der Strom selbst im Moment noch an der gleichen Position. Der Drehpunkt dieses bestimmten Bildes,
das Sprite ist nicht mehr zentriert, kann sein, kann wirklich nützlich sein. Normalerweise lasse ich es in der Mitte und ändere das Spielobjekt selbst. Das ist besser. Wir werden Physik erzeugen, wie Sie sehen können, wird einfach eine Standardphysikform erzeugt, so dass wir haben können, dies kann ein- oder ausgeschaltet sein. Ich meine, hängt davon ab, ob du Physik brauchst oder nicht. Dies sind einige erweiterte Einstellungen hier. Und Alpha
stellt natürlich sicher, dass, wenn Sie ein PNG haben, das Alpha dann grundsätzlich berücksichtigt wird. Wir können auch nachsehen, lasst uns das nochmal abschließen. Da gehen wir. Und wir können auch ignorieren die, einige der Dinge. So kann das Alpha zum Beispiel nicht transparent sein. Und jetzt ist es nicht transparent und wir können einfach sagen, na ja, was auch immer. Also dann ist das Alpha in diesem Fall nicht transparent. Aber wo Sie wollen, dass das transparent ist. Und es gibt noch ein paar andere Dinge, die wir tun können. Ignorieren Sie die PNG-Datei Gamma, können
wir Lese- und Schreib-Pixeldaten aktivieren, so dass wir tatsächlich mit diesem bestimmten Bild ändern können. Und Sprite könnte nützlich sein. Obwohl dies etwas ist, wo Sie vorsichtig sein müssen, weil dann können Sie grundsätzlich auch Ihre Sprites für immer. Und Sie können theoretisch auchhier eine Mindmap
generieren, hier eine Mindmap
generieren, die etwas sein könnte, das Sie wollen. Ja, Rap-Modus und Filtermodus. Also ist der Modus im Grunde, wenn Sie eine haben, lassen Sie uns dies tun. Wenn wir ein haben, fügen Sie dies als Textur hinzu, dann wiederholt der rote Wiederholungsmodus einfach dieses Bild, wenn wir es irgendwo aufsetzen. Wenn wir es also auf eine Oberfläche legen würden und es nicht groß genug ist, dann würde es sich einfach wiederholen. Plan würde es machen, dass es diejenigen, die ich nicht weiß, warum es immer erweitert die fortgeschrittenen, die ich bewerbe. Das ist also eine Art Interessantes. Spiegel pro Achse in der Regel lassen Sie es an der Klemme, die Summe genug, das ist gut genug. Und dann der Punkt, der die interessanten Dinge für den Filtermodus ist, weil wir gesehen haben, dass das bi-lineare ist derjenige, mit dem wir begonnen haben. wenn ich mich bewerbe, Undwenn ich mich bewerbe,werden wir sehen, dass das plötzlich sehr, sehr verschwommen wird. Und der Grund dafür ist, dass dies Pixelkunst ist. Und bi-linear ist im Grunde mehr oder weniger, glättet Kanten. Und wir werden in diesem Fall nicht wollen, dass die Kanten geglättet werden. Trilinear sollte es nicht unbedingt schlimmer machen, aber im Grunde bedeutet der gleiche Endpunkt einfach, dass es keinen Filter auf dem Hashtag gibt, keinen Filter. Und das wird Ihre Pixelkunst machen. Du bist wunderschön. Hier unten sind einige interessante, im Grunde Einstellungen, die Sie für Gewinne verwenden können, sobald diese veröffentlicht wird. maximale Größe bezieht sich also einfach auf die maximale Größe. Also, wenn ich
zum Beispiel 32 mache , wie Sie sehen können, plötzlich, oh mein Lambda, das ist nicht, kann
ich nicht einmal sehen, was los ist. Wenn ich es bei 16 Tausend lege, ist
es scharf wie ein knackiger. Aber ich denke, dass sogar 1022 oder 128, auch das ist mehr als genug. 64 immer noch genug, weil das immer noch genug ist, um alles da drin über so etwas wie ja zu
haben, so dass dann in der Mitte wahrscheinlich genug sein wird. Wir haben auch einen Algorithmus zur Größenänderung. Sie können das Format ändern. Dies wird geändert und Sie können auch die Komprimierung ändern. Dies ist im Grunde diese Einstellungen hier geändert werden können. Zum Beispiel, wenn Sie ein Handy-Spiel haben, was Sie wollen, ist, naja, eigentlich machen wir eine minderwertige Qualität und machen ein paar weniger Bits, zum Beispiel. Also kannst du ändern, oh, lass uns das eine 32-Bit machen. Oder wir können sagen, na ja, Alpha Acht, also das ist, und jetzt ist alles weg. Oder lassen Sie es einfach automatisch. Das funktioniert auch. Es gibt ein paar Dinge, die wir ändern können, denn vielleicht an bestimmten Orten, wo wir dieses Spiel veröffentlichen möchten, wollen
wir tatsächlich, dass die Größe kleiner ist. Auf einem PC
gibt es also keinen Grund, nicht die größte Größe für die Dateien zu haben, denn ob ein Spiel drei Gigabyte oder acht Gigabyte beträgt oder nicht. Es spielt keine Rolle auf dem PC, in der Regel auf einem Telefon. Das ist ein großer Unterschied, oder? Also der Unterschied zwischen einem Spiel auf einem Telefon, das unsere hat, sagen
wir, wie 250 Megabyte im Vergleich zu wie vier Gigabyte ist riesig, weil während Telefone in letzter Zeit größer in Bezug auf Speicherplatz geworden, noch vier Gigabyte für, Nehmen wir an, ein Casual Game ist viel zu viel. Das ist also im Grunde, was, das ist vier. Dies wäre also die Standardeinstellung. Und dann können Sie hier etwas für bestimmte BuildSettings überschreiben . Aber noch einmal, das ist etwas, das auch ein bisschen fortgeschrittener ist. Ich würde mir darum keine Sorgen machen. nur sicher, dass, wenn Ihr Bild verschwommen ist, wenn Ihr Schweiß es verschwommen ist, dass es entweder die maximale Größe sein könnte, die Sie in gesetzt haben. Die Komprimierung kann auch damit zu tun haben. Und auch der Filtermodus könnte die Ursache für das Problem sein, richtig? Aber das war es für den schnellen Blick auf die Textur hier in diesem Modus. Als nächstes werden wir einen Blick auf den Sprite Editor von diesem als im Grunde ein neues Fenster werfen. Und damit werden wir auch den Sprite-Modus von Multiple sehen. Ich hoffe, Sie fanden diesen Vortrag nützlich wie immer. Wenn es irgendwelche Fragen gibt, zögern Sie nicht, zu fragen und ich werde sicher sein, zu antworten. Und ja.
60. (Grundlagen Unity Grundlagen) Sprite-Editor: In Ordnung, lassen Sie uns mit der Einführung der grundlegenden Einheit hier für den Einheitskurs fortfahren. Und in diesem Vortrag werden wir einen Blick auf den Sprite Editor werfen. Und damit werden wir auch die mehrere Karten im Grunde importieren. So mehrere Sprites gleichzeitig. Wir hatten das Herz-Ass hier schon lange als Singular Textur oder Sprite. Und jetzt werden wir einen Blick darauf werfen, die Kachel-Karte selbst. Also lasst uns einfach, ich werde das hier drüben kopieren. Also ziehen wir es einfach da rein. Und wie Sie sehen können, ist dies Karten große Kachel-Karte. Derzeit, wenn ich es einfach hier platzieren würde, ist
es eine Datei mit mehreren Karten, wie Sie sehen können. Und natürlich ist dies nicht das, was wir wollen, wenn wir etwas importieren, wir wollen mehr als eine Karte, weil dies jetzt ein einzelner Modus ist. Lassen Sie uns dies also in mehrere Modi setzen, ändern Sie die Pixel pro Einheit auf 64. Und hoffen wir, dass dies vor allem anwenden, machen Sie diesen Punkt
auch sehr wichtig, den Filtermodus, so dass es gut aussieht. Und dann kommen wir in den Sprite Editor. Wenn wir das also per Editor öffnen, können
wir sehen, ob ich es einfach von dem anderen Bildschirm hier bekomme, dass wir hier im Grunde einige Dinge tun können. Wir können mit der Maustaste hineinzoomen und verkleinern. rechten Maustaste, halten Sie Das bringt uns dazu, das zu bewegen. Und wenn wir Linksklick drücken, dann haben wir die Art der Auswahl. Wenn wir jedoch die Auswahl gestoppt haben, so dass wir aufgehört haben, die linke Maustaste zu drücken. Und wie Sie sehen können, schafft es hier eine Art Sprite. Und wir können das auch ändern. Wir können es größer oder kleiner machen. Und das stellt im Grunde ein Sprite auf diesem speziellen Bild dar. Es gibt ein paar Dinge, die wirklich nett sind. Also hier oben können wir uns ein paar Dinge ansehen. Kunden wie, wir werden uns das nicht wirklich ansehen. Dies ist also ein mit einer benutzerdefinierten Gliederung. Wir wollen den Sprite Editor in diesem Fall. Und der Sprite Editor kann Spleißen, was wirklich schön ist. Also können wir entweder automatisch machen. Was das macht. Wenn ich Slice sage, wie Sie sehen können, hat
es diese verschiedenen Spreads hier automatisch erstellt. Also, das ist wirklich schön, dass, das funktioniert. Lasst uns zurückkehren. So können wir zurückkehren und jetzt gibt es keine Sprites mehr. Wir können auch verschiedene Arten haben. So können wir sagen, nach Größe. Und wir können, weil wir wissen, dass diese Karten 64 mal 64 sind, würden
wir sagen, okay, schneiden Sie sie 64 mal 64. Und dann, wie Sie sehen können, wenn ich das nicht bewege, ist
jede Karte jetzt auch in einem Sprite, aber sie ist ein bisschen größer. Es hat ein wenig Platz an den Seiten, so dass wir das tun können. Oder wenn wir wieder zurückkehren, können
wir dies auch nach Zählung tun. Wenn wir also wissen, dass
dies zum Beispiel so ist, dann wären das 10, 11, 12, 13, 14. Wir wissen also, dass es 14 Reihen und vier Spalten gibt. Und wir können schneiden, das ist eigentlich der falsche Weg, natürlich 144. Da gehst du. Jetzt, Vokal. Jetzt funktioniert es. Und das würde auch funktionieren. Es gibt also ein paar Möglichkeiten, wie wir das tun können. Natürlich können wir auch den Drehpunkt ändern. Es gibt ein paar Dinge, die wir hier tun können. Da ist etwas Polsterung, etwas Offset. Ich denke jedoch, dass die Größe in diesem Fall hier am sinnvollsten ist. Und dann haben wir im Grunde alle, wenn ich hier runter oder 56 Karten in diesem Fall, weil wir auch zwei verschiedene Möglichkeiten haben, entweder ist dies
ein, ein leerer Wagen oder wir können auch dies als Hintergrund zu schweben. Das ist, ich denke, wir haben den Hintergrund gemeint. Also ja, das ist ziemlich cool. Also lassen Sie uns einfach bewerben. Noch einmal, nur um dies zu erwähnen, sind das die Karten von den Nierenressourcen. Und wenn wir das angewendet haben, können
wir innerhalb unseres Projekts sehen, nun, das ist immer noch nur ein Titelpaket hier, aber wir sehen diesen kleinen Pfeil. Und wenn wir dies erweitern, können Sie sehen, dass jeder dieser einzelnen einen Akkord ist. Wenn wir also zum Beispiel auch das Herz-Ass herausnehmen wollen, könnten
wir es tun, indem wir dies tun. Und wenn wir bis zu viermal vier Größen haben, dann ist es, wie Sie sehen können, buchstäblich genau die gleiche Größe. Weil wir, anstatt dies eine einzigartige Karte ist, jetzt ist es Teil dieses Rudels. Und das Tolle daran ist, und wir werden uns das in
der nächsten Vorlesung etwas genauer ansehen , dem Sprite-Renderer. Was wir jetzt tun können, ist, dass wir im Grunde sagen können, ich möchte das ändern und ich möchte das Sprite bam ändern, und dann hat sich die Karte geändert. Und wir werden, wie ich schon sagte, wir werden uns
das im nächsten Vortrag etwas genauer ansehen , was das Sprite-Rendering zu bieten hat. Aber das war es im Grunde für einen kurzen kleinen Überblick über den Sprite Editor. Nun, es gibt natürlich noch ein paar Dinge, die das tun kann. Für den Moment wird dies jedoch definitiv viel mehr als genug für uns sein. Und dieses unglaublich nützliche Tool, denn jetzt müssen wir nicht unbedingt jedes
unserer Sprites unabhängig oder in separaten Dateien haben, aber wir können sie alle in einer Datei haben und sie entweder manuell ausschneiden, indem automatisch können wir es nach Zählung oder sogar nach Art, wie viele Zeilen und wie viele Spalten tun. Richtig? Das war es also für diesen Vortrag. Ich hoffe, du hast es nützlich gefunden wie immer. Wenn es irgendwelche Fragen gibt, zögern Sie nicht zu fragen und ich werde sicher sein, zu antworten. Und ja.
61. (Grundlagen Unity Grundlagen) Der Sprite: In Ordnung, lassen Sie uns mit der Einführung der grundlegenden Einheit hier für den Einheitskurs fortfahren. Und in diesem Vortrag werden wir einen Blick darauf werfen, den Sprite-Renderer. Das ist also eine weitere Komponente. Und dafür werden wir zunächst einmal wieder eine neue Szene erstellen. Das ist also 18 Sprite-Renderer. Und dann erstellen Sie hier auch einen neuen Ordner. Lassen Sie Sprite-Renderer. Und das Skript, das wir im Inneren von hier erstellen werden,
wird als Sprite-Renderer-Look bezeichnet. Natürlich ist der Name hier mehr oder weniger, wählt. Wenn Sie einen anderen Namen wollen , können
Sie natürlich. Und wir nehmen hier eine neue Karte. Wir nehmen eine Karte von dieser neuen Kachel-Karte. Grundsätzlich, sobald Sie es vier mal vier machen können, Lassen Sie uns es tatsächlich in der Mitte des Bildschirms an dieser Stelle platzieren. Und lassen Sie uns dies in Karte umbenennen, weil das wie ein viel besserer Name ist und den Sprite-Renderer-Look hinzugefügt hat. Und ja, mal sehen, was wir in dieser Sache sehen können. Zunächst einmal ist der Sprite-Renderer eine einfache Komponente. So können wir im Grunde den
privaten Sprite-Sprite-Renderer speichern und diesen einfach den Sprite-Renderer nennen. Sprite-Renderer. Da gehst du. Und wir können dies bekommen, indem wir in der Startmethode spread r1, r2 gleich und dann diese Punktkomponente erhalten. So können wir auch Komponenten aus dem GameObject erhalten, in dem wir uns gerade befinden. Also, wo dieses Skript angehängt ist. Und dann kommen wir zum Sprite-Renderer. Wie ich schon sagte, das ist eine sehr kluge Idee, dies zu tun. Und das sollten wir eigentlich immer tun. Jetzt denken wir über etwas anderes nach. Wir werden auch ein privates Sprite-Array namens Sprites haben. Und wir machen dies natürlich zu einem 0 Feld, so dass wir über den Inspektor darauf zugreifen können. Und wenn wir uns das jetzt ansehen, und wir können sehen, ist, dass wir eine Liste haben. Siehst du, das ist leer. Aber was wir tun können, ist, dass wir einfach die Sprite-Kachel-Karte nehmen und sie hierher ziehen können. Nun, wie Sie sehen können, hat das nicht funktioniert, weil wir dieses Array-Element löschen. Was wir tun müssen, ist, dass wir zwei haben. Zum Glück müssen wir nicht alles eins nach dem anderen mitnehmen. Wir können das hier nachsehen. Also oben rechts im Inspektor können wir uns das ansehen. Dann können wir im Grunde alles auswählen. Wenn wir also eines der Dinge auswählen, dann halten, verschieben und wählen Sie die obere und alles dazwischen wird ausgewählt. Und wenn wir das hier verschieben, und wie Sie sehen können, füllt
es sich jetzt mit all unseren Karten. Das ist also wirklich nett und wirklich nützlich. Und jetzt, nun plötzlich, was wir haben, ist, dass wir
eine Liste von Sprites haben , auf die wir als Array zugreifen können. Was könnten wir damit machen? Nun, was wir zum Beispiel
tun können, ist, dass wir sagen können, na ja ,
am Anfang möchte ich diesen Sprite-Renderer und das Sprite, das darin ist. Das ist also das Sprite, das angezeigt wird. Also das Sprite rendern, ich möchte, dass dies einer der Cart-Sprites ist. Zum Beispiel könnte ich sagen, nun, ich möchte, dass das so ist. Die Gerichte, aber bei Index 4, oder ich könnte sagen, naja, ich möchte eigentlich, dass dies ein zufälliger Lauf ist, random.randrange ab 0, weil natürlich random.randrange ab 0, weil natürlich
0 der erste Index den ganzen Weg bis zum Gericht verteilt Punktlänge. Also, und wenn Sie sich das ansehen, ist
das Max exklusiv. Deshalb brauchen wir keine Länge minus 1 zu tun, weil Länge nicht genommen wird, sondern nur die Länge minus eins ist der Bereich. Also das Minimum ist inklusive und das Maximum ist exklusiv, nur damit, wissen Sie, gerade jetzt, wenn wir damit beginnen, sollten wir sehen, dass diese Karte tatsächlich ihr Sprite onStart ändert. Mal sehen, ob das wirklich funktioniert. Und da gehst du. Jetzt sind es die sechs der Clubs, schätze ich. Und machen wir es noch mal. Jetzt sind es die fünf Clubs. Eigentlich bin ich mir nicht sicher. Drei von Herzen gehen sie. Und dann noch einmal, nur zum Teufel, schätze ich, das wären die sieben Diamanten, richtig? Und jetzt, jetzt ist das wirklich cool. Wir können noch zwei Dinge tun. Also, was wir tun werden, ist, dass wir die Eingabe hier nehmen und Keydown, Keycode-Punkt-Raum
bekommen. Also drücken Sie die Leertaste. Was wir tun werden, ist das Sprite Renderer dot Sprite ist im Grunde genau das. Also können wir das tatsächlich kopieren. Wieder einmal wäre dies jetzt zum Beispiel
etwas, das wir hier in eine andere,
nun, nur eine andere Methode einführen würden . Dies wäre also eine Änderung zu zufälligem Sprite. Wir müssen das nicht unbedingt tun, zumal dies nur ein kurzes kleines Beispiel ist. Aber weil wir im Grunde zweimal ein Zitat haben, gibt es einen guten Sinn, dies zu tun. Denn jetzt, wenn du dir das jetzt ansiehst, werden wir so sein, okay, was passiert, wenn ich die Leertaste drücke, oh, geändert in zufälliges Sprite. Okay, das ergibt Sinn. Und das ist viel lesbarer, als wenn ich das hier drin habe. Weil wir das definitiv aufteilen müssen. Wir können okay, zufällig, okay, also die Summe des Zufalls, okay, ich nehme ein zufälliges Sprite, aber dieses hier, ich lese gerade den Namen der eigentlichen Methode und es ist wie, okay, das ist, das macht Sinn. Also bekomme keydown, keycode dot return. Dies wäre also der Returnschlüssel. Wir können auch einfach eine andere ändern und wir können, wir können, wir müssen nicht notwendigerweise zurückkehren. Lass uns das tun, lass es uns wirklich tun. Machen wir die C-Taste, C-Taste. Denn was ich hier tun möchte, ist, dass sich der Sprite-Renderer, Sprite-Renderer-Punktfarbe ändern soll. Und dies kann getan werden, indem zufällige Punktfarbe S, H, v. Dies gibt einfach eine zufällige Farbe zurück, die Sie gehen, was ziemlich cool ist. So sehen wir, dass wir tatsächlich die Farbe ändern können. Und mit Platz können wir es auf eine andere Karte ändern. Und wenn ich wieder in diesen Sprite-Renderer schaue, noch
einmal, all diese Dinge hier. Also sind alle diese Felder grundsätzlich über das Skript verfügbar. Trotz natürlich, sowie die Farbe hier. dieses x und y umdrehen, können
wir das auch tun. Der Draw-Modus, Maskeninteraktion, der Drehpunkt trotz Sortierpunkt eher. Die orangefarbene Schicht ist also etwas, das sehr wichtig ist. Also, wenn wir diese Strickjacke haben, kopieren Sie sie, indem Sie Control C,
Control V drücken , um sie einzufügen. Jetzt haben wir hier eine neue Karte. Und die Sortierebene bestimmt einfach, wo sich dieser Akkord befindet. Also, wenn wir das nur aus Gründen der Argumentation hier ändern. Also vier von Herzen, jetzt, Ass der Herzen ist jetzt Schicht 0. Dieser ist um später 34. Daher ist es höher, also ist es darüber. Und wenn ich es reduziere,
dann, wie Sie sehen können, ändert sich auch das. Das ist also etwas zu beachten und auch im Hinterkopf zu behalten. Sehr wichtig. Aber genug gesagt, jetzt, lasst uns das hier versuchen und sehen, ob das funktioniert. Also haben wir unsere Karte hier. Und jetzt hat dies eine zufällige Karte gewählt und ich glaube an, tatsächlich hat diese eine gewählt. Wir können dies versuchen, indem wir die Leertaste drücken. Ich denke, das war eine sehr glückliche Auslosung. Ich schätze. So. Ja, wir können wählen, wir können einfach die Leertaste setzen und wie Sie sehen können, wählt
sie eine zufällige Karte da drin, die wirklich, wirklich cool ist. Und wenn ich C drücke
, ändert es auch seine Farbe zufällig. Oh, das war sehr schwarz. Und dann, wie Sie sehen können, gehen Sie. So ändert sich auch die Farbe zufällig. Und wenn ich beide gleichzeitig drücke, dass sich beide ändern, oder ich kann einfach eine Rave-Party machen. Lass uns gehen. Ich mag es, das ist ziemlich cool. Das ist also eine sehr coole Sache. Der Sprite-Renderer, hauptsächlich, denke
ich, dass nach meiner Erfahrung
das Sprite, das sich definitiv ziemlich verändert. Das ist also etwas, das sehr wichtig ist. Die Idee, das Sprite zu ändern und
im Grunde all diese Sprites innerhalb eines anstelle eines Arrays zu speichern . Das macht auch viel Sinn. Der Grund, warum ich mich hier für einen Bereich entschieden habe, ist natürlich, dass wir es nicht wirklich ändern müssen, sobald
wir es auf einmal eingestellt haben. Und die Anzahl der Spreads ändert sich nicht. Oder besser gesagt, selbst wenn es sich ändert, ändert es sich während des Spiels nicht. Während das Spiel läuft, müssen
wir das nicht ändern. Wir müssen hier keine dynamische Liste haben. Im Grunde. diesem Grund ist a ein Array, funktioniert gut. Sie können natürlich auch eine Liste erstellen. Das spielt keine Rolle. Entweder. Einer von denen wäre in Ordnung, oder? Aber das wäre es für diesen Vortrag, der den Sprite-Renderer betrachtet. Natürlich gibt es noch ein paar Dinge,
aber wie üblich, im Moment ist
dies ein sehr guter Startpunkt für den Sprite-Renderer kann wirklich nützlich sein, um das Sprite und auch die Farbe zu ändern. Das ist irgendwie schön, sich das anzusehen, oder? Okay, das war es für diesen Vortrag. Wie immer, hoffe ich, Sie fanden es nützlich. Und wenn es Fragen gibt, fühlen Sie sich
immer frei zu fragen, werde
ich sicher sein, zu antworten. Und ja.
62. (Grundlagen Unity Grundlagen) 2D-Colliger: In Ordnung, lassen Sie uns mit der Einführung der grundlegenden Einheit hier für den Einheitskurs fortfahren. Und in diesem Vortrag werden wir einen Blick auf Box-Collider oder kollaborative im Allgemeinen werfen. Und die Art und Weise, wie wir das tun werden, ist
natürlich zunächst, hier eine neue Szene zu schaffen. L 19 Kollider genannt Liter. Sie gehen, Lassen Sie uns das öffnen und lassen Sie uns auch einen neuen Ordner hier erstellen, et al. 19 Kollider. Und dann statt tatsächlich lassen Sie uns das Skript erstellen. Und wir werden das das Kollisionsskript nennen. Es ist eigentlich nah dran. Lasst uns das aufmachen. Das Ego. Bevor wir irgendetwas drinnen machen, werden
wir hier tatsächlich eine schöne Szene schaffen. Wieder einmal, für die Ressourcen habe ich eine bestimmte kenny Vermögenswerte wieder. Und wir werden tatsächlich ein bisschen eine Art 2D-Art schaffen, Dinge zu tun. Also lasst uns diese Sprites hier rüber ziehen. Das wäre also die Alien-grüne Front, die Kiste. Wir haben Schmutz links, MIT und rechts, und wir haben die Lava hier. Nun, in der Theorie, sollten diese irgendwo sein wahrscheinlich 28. Also lassen Sie uns zuerst wirklich markieren alle diese, wählen Sie alle aus, lassen Sie sie alle zeigen. Und dann versuchen wir 128 für die Pixel pro Einheit für jetzt. Und lasst uns hier einfach eine kleine Plattform machen. Nur um des Streits willen. Wir werden das nicht sofort verwenden, aber wir werden es in Kürze nutzen. So negativ vier und dann die linke negative vier. Und dann müssen wir das
einfach mit einer verschieben , die genau richtig ist, minus eins. Und dann ist dieser plus eins und ein negativer Vier. Und dann haben wir hier eine kleine Plattform, was ziemlich schön ist. Wir können den Außerirdischen hier reinbringen
, der eigentlich sehr groß ist. So negativ 2,5 wahrscheinlich, ja. Jetzt ist es tatsächlich auf dieser Plattform perfekt gestellt. Und dann haben wir auch die Kiste Jahr, die gerade in der Luft bei 2,5 schweben wird, kein Lepton 25, 2,5 und negative drei. Und dann wird die Lava hier sein, nur damit wir sie haben. Wir werden das auch ein bisschen größer machen. So etwas wie das. Lass es uns tun. 2.52.2.5, 725. Oh Mann, das ist viel zu groß. 2.52.5 bei negativer zwei und negativer drei. Lassen Sie es uns hier setzen. Ja, das ist ziemlich gut. Das ist jetzt unsere Szene. Und was machen wir? Was, was ist, was ist los? Nun, was wir tun werden, ist folgendes. werden wir eigentlich. Geben Sie das, das hier. Also werden wir zuerst diese Dinge Spieler umbenennen. Wir werden auch eine leere machen, was der Boden sein wird, in dem wir
diese einfach auswählen und sie hierher ziehen, so dass der Boden jetzt nein ist, nein, nein, ich habe ihn nicht zentriert. Das ist nicht möglich. Ich muss das zentrieren. Jetzt. Jetzt ist alles in Ordnung. Wo der Boden gerade hier drin ist. Die Lava ist in Ordnung und das wird nur eine Kiste. Okay, was können wir jetzt tun? Nun, der Spieler wird jetzt tatsächlich
die Bewegungsskripte bekommen , die wir vor langer,
langer Zeit gemacht haben , damit wir ihn tatsächlich bewegen können. Und mal sehen, das sollte funktionieren. Also, wenn ich WASD drücke, kann
ich den Spieler tatsächlich bewegen. Natürlich kann ich sie einfach durch diese Dinge bewegen, weil nein, es gibt nichts, was mich davon abhält und auch nichts passiert. Das ist also irgendwie interessant. Aber was können wir tun, um uns im Grunde zu ermöglichen? Nun, wir haben etwas, das eigentlich ist, bevor wir in das Skript gehen, wir haben etwas, wir haben eine andere Komponente, die wir verwenden können. Und das ist in Sichtweite der, wenn Sophie schließlich wählen Sie den Spieler. Und wenn wir sagen, Komponenten hinzufügen, dann haben wir einen Collider. Jetzt ist dieser Collider anstelle von Physics 2D, und wir werden den Box-Collider in diesem Fall verwenden, könnten
wir auch Kapselkollider verwenden. Das würde wahrscheinlich funktionieren, aber die sind einfach im Grunde anders. Die verschiedenen Formen, der Box-Collider wird gut. Nun in unserem Fall, wie Sie sehen können, wird
der Box-Collider tatsächlich angezogen, wie oben auf das gesamte Bild hier, das ein bisschen zu groß ist. Also würden wir eigentlich wollen, dass die Größe etwas anders ist. Wenn ich das ändere, dann können Sie sehen, dass sich diese grüne Box um sie herum ändert. Lass uns so etwas wie 1,25 machen. Und dann ändert sich der Offset im Grunde, wo sich das befindet. Und wenn wir so etwas wie einen negativen Punkt machen, dann machen wir vielleicht einen. Tut mir leid, 35, 37, fünf, so etwas. Nur um des Streits willen. Das ist eine gute Box um diesen Spielercharakter. Und jetzt hat es einen Box-Collider. Das ist also ziemlich cool. Jetzt. Bringt uns das irgendwohin? Ich meine, gerade jetzt, nicht wirklich, weil nichts anderes einen Collider hat. Also, was wir tun werden, ist, dass wir alle
diese Dreckpfade auswählen , Ihre Bestellplattformen. Und wir werden auch einen Box-Collider hinzufügen. Und wenn ich diese jetzt ausdehne, dann können wir sehen, dass es hier ein paar Kollider hat. Das wird gut. Denn gerade jetzt wollen wir nur aus dem
Grunde sehen , wie es aussieht, wenn ich einziehen würde. Also lasst uns sie tatsächlich ein wenig nach oben bewegen. So negativ zwei, so dass er über dem Boden schwebt. Denn gerade jetzt ist unsere Bewegung eigentlich keine Bewegung für 2D. Es ist eher eine Bewegung für eine Top-Down-Sache, aber wir werden das innerhalb der Zeit ändern. Lassen Sie uns auch nur, nur damit wir den Box-Collider sowohl der Lava als auch unserer Box hinzugefügt haben. Und wir werden die Einstellungen dort optimieren und ein wenig. Jetzt kann ich mich bewegen. Und was passiert, wenn ich einen Collider habe und der Boden einen Collider hat, was passiert, wenn ich jetzt runtergehe? Mal sehen, was passiert. Nichts passiert. Und die Frage ist, warum ist nichts passiert? Weil das einen Kollider hat und das einen Zusammenstoß und ich dachte, das wäre eine Art Kollision. Ja, aber wir brauchen noch eine Sache, denn damit die Physik funktioniert. Und die Sache, die wir brauchen, ist unter Physik 2D hier unten, und es wird der starre Körper 2D genannt. Nun hat dies, wie Sie sehen können, viele Dinge auch eine Menge Informationen. Lassen Sie uns einfach die Informationen reduzieren, die wir sehen. Und wie Sie sehen können, gibt es eine Menge Dinge hier drin. Und das erste, was wir tun müssen, werden
wir über diesen starren Körper 2D in der nächsten Vorlesung viel detaillierter sprechen. Moment ist das einzige, was wir tun müssen, im Grunde die Gravitationsskala auf 0 zu setzen. Das ist alles, was wir tun müssen. Und dann legen Sie das im Grunde einfach rein und schauen Sie es nicht noch einmal an. Aber wir brauchen das, sonst wird nichts von diesen Dingen funktionieren. Aber jetzt, wenn ich versuche, nach unten zu gehen, bleibe ich fest. Ich bleibe bei all diesen Dingern fest. Denn jetzt kollidieren diese. Nun, was wirklich lustig ist. Was ich tun kann, ist, dass ich meinen Kerl umdrehen kann, wie du siehst. Und jetzt ist alles wirklich seltsam. Lassen Sie uns auch etwas mit dem starren Körper zu tun haben. Grundsätzlich können wir die Rotation einfrieren. Wir werden uns
aber darum kümmern, wie ich in der nächsten Vorlesung sagte. Also der Box-Collider, was können wir jetzt tun? Warum ist das interessant? Was ist so, was können wir dagegen im Skript tun, oder? So können wir jetzt im Grunde mit all diesen Dingen kollidieren. Aber was gibt uns das wirklich? Was bringt uns das? Du könntest dir vorstellen, dass, wenn ich in die Lava gehe, das wehtun wird. Und vielleicht, wenn ich die Box berühre, möchte
ich nur in der Konsole ausgeben, Hey, du hast die Box berührt. Sagen wir einfach, das sind die beiden Dinge, die ich will. Wie kann ich das tun? Nun, es gibt Methoden dafür, und diese Methoden werden in diesem Kollisionsskript betrachtet. So die Kollisions-Skript, können
wir eine Methode auf Kollision aufgerufen eingeben 2D verwenden. Und wie Sie sehen können, gibt es ein paar andere auf Kollision Ausgang auf Kollision bleiben, diese sollten mehr oder weniger selbsterklärend auf Kollision eingeben einfach bedeutet, dass dies einmal aufgerufen wird. Wie Sie sehen können, sobald ein Collider 2D oder ein starrer Körper 2D beginnen zu berühren. Und verlassen bedeutet einfach, wenn sie aufhören zu berühren und bleiben wird wie jeder Frame genannt, den sie berühren. Dies gibt Ihnen eine Kollision 2D. Und mit dieser Kollision 2D haben
wir tatsächlich eine Menge Dinge, die wir hier nennen können. Wie Sie sehen können, können wir Collider, Kontakt,
Kontaktanzahl oder wie viele Kontexte es gibt anrufen . Wir können die Kontaktstellen holen. Wir können den starren Körper bekommen, die Transformation. Wir kriegen eine Menge Sachen. Im Moment wollen wir den Collider. Und wir wollen den Namen des Colliders. Und wir werden prüfen, ob dies eine Box ist oder nicht. Wir wollen also wissen, ob das mit der Box kollidiert ist oder nicht. Und. Ist der Fall. Dann melden wir uns einfach aus, hey, hue, touch, du berührst die Box. Und das ist alles, was es dazu gibt. Dies ist also eine Möglichkeit, die Kollision natürlich in 2D zu machen. Mal sehen, ob das tatsächlich
funktioniert hat , bevor wir sehen können, ob das funktioniert oder nicht. Wir müssen natürlich auch das Kollisionsskript hier zu unserem hinzufügen, zu unserem Spieler. Das ist sehr wichtig. Vergiss das nicht. Und dann schauen wir mal, was passiert. Wenn ich also den Boden berühre, passiert nichts. Wenn ich die Lava anrühre, passiert nichts. Aber wenn ich die Box anrühre, wie Sie sehen können, haben Sie eine Kiste angefasst. Und jedes Mal, wenn ich das wieder mache, erhöhen
wir diesen Zähler. Wenn ich es jedoch weiter mache, funktioniert
es nicht, weil wir die gut genannt haben,
wir haben die On Collision Enter 2D-Methode implementiert und nicht zu den Staubblättern. Und da ist noch etwas anderes. Also innerhalb der Box Collider, wenn wir uns das ansehen. Wenn wir uns zum Beispiel nur die Larve ansehen, gibt es ein paar Dinge, die wir verwenden können. So bearbeiten Sie Collider einfach, wir können den Collider im Grunde etwas detaillierter bearbeiten. Wir müssen das im Moment nicht tun. Das physikalische Material interessiert uns im Moment nicht. Wir können jedoch diesen Auslöser verwenden und dies ist Trigger ist eine sehr, sehr interessante Sache, weil dies ausgelöst wird einfach physisch entfernt die Art und Weise, wie wir dies berühren können. Also werde ich dir das nur zeigen. Also, während der normale Kollider ich damit kollide, und jetzt, wenn das ein Auslöser ist,
dann, sobald ich hineingehe, kollide
ich nicht damit, weil es im Grunde nur ein Brunnen ist, es ist nur ein Auslöser. Es ist eine bestimmte Zone, in der, wenn ich
eintrete, ich immer noch kann, etwas passieren kann. Aber ich kollidiere nicht damit. Und das wäre auch eine, eine andere besondere Methode hier. Und das ist zum Beispiel auf Trigger Stay to D. Also gibt es, wieder, natürlich, geben Sie dies, bleiben Sie auf diesem, der Ausgang dafür noch einmal. Auch sehr wichtig. Stellen Sie sicher, dass Sie die 2D-Methode verwendet haben, wenn Sie mit 2D arbeiten, andernfalls funktioniert sie auch nicht. Und in diesem können wir im Grunde fast genau dasselbe tun. Jetzt, wie Sie sehen können, gibt es ein bisschen seltsam. Also das wird immer noch Kollision genannt oder obwohl Sie einen Collider bekommen, ich weiß nicht, warum sie die automatische Benennung davon immer noch nicht behoben haben, aber sie gehen. Und dann sagen wir, collider dot name gleich das wäre die Lava. Und wenn das der Fall ist, dann können
Sie zum Beispiel sagen, dass Sie jetzt beschädigt werden. Beschädigt, sie gehen nach rechts. Und dann im Inneren von hier, natürlich, was Sie tun können, ist, wenn Sie einen Verweis auf Gesundheitsskript haben, zum Beispiel könnten Sie sagen, hey, jetzt verlieren Sie Gesundheit und dann könnten Sie irgendwann sterben wenn Sie in der Labor oder Sie sterben sofort, wenn Sie in der Lava sind oder so etwas. Aber im Moment, das einzige, was wir wollen, ist, während der Spieler in der Lava bleibt, wir wollen im Grunde, dass Sie beschädigte Ausgaben bekommen. Mal sehen, ob das funktioniert. Und natürlich tut es das. Das ist sehr gut. Nun, was interessant ist, warum geht es weiter? Und wenn ich wieder ausziehe, geht es weiter. Dies ist wegen einer der Einstellungen statt eines starren Körpers, wie ich sagte, nächste Vorlesung, wir werden dieses Problem und ein paar andere Dinge beheben. Ich werfe auch einen Blick auf den starren Körper selbst. Aber vorerst. Und das ist eigentlich alles, was ich Ihnen für die Collider selbst zeigen wollte. Insgesamt sind die Kollider ein unglaublich nützliches Werkzeug und so einfach zu implementieren und zu arbeiten. Dasselbe gilt im Grunde die, die Auslöser hier, die ein unglaubliches Werkzeug sind, um im Grunde zu haben, wissen Sie, verschiedene Dinge passieren zu bestimmten Zeiten, ohne überhaupt etwas zu sehen sein zu müssen. Also, dieser Trigger, könnten
wir auch einfach keinen Sprite-Renderer haben und dann würde das immer noch funktionieren. Es gibt also ein paar Sachen, die wir damit machen können, was wirklich nett ist. Und ja, das wäre es für die Kollider. Wie immer hoffe ich, dass du das nützlich findest. Und natürlich würde ich eine Rezension von Ihnen wirklich schätzen. Andernfalls, wenn es irgendwelche Fragen wie immer fühlen Sie sich frei zu fragen und ich werde sicher sein, zu antworten. Und ja.
63. (Grundlagen der Uneinheit) Rigidbody2D-Grundlagen: In Ordnung, lassen Sie uns mit der Einführung der grundlegenden Einheit hier für den Einheitskurs fortfahren. Und dieser Vortrag werden wir einen kurzen Blick auf den starren Körper 2D nehmen. Das ist also ein Teil des physikalischen Systems der Einheit. Und das haben wir schon mal gesehen. Ich sagte, dass wir letzten Vortrag , dass wir das im Grunde ignoriert haben und gesagt haben, nun, wir brauchen das, damit die Zusammenstöße funktionieren. Aber jetzt werden wir es uns ein wenig genauer ansehen. Also die ersten Dinge. Erstens, das erste, was wir tun sollten, ist, dass wir über die Zwänge sprechen sollten. Die Einschränkungen sollten ziemlich offensichtlich sein. Das Einfrieren der Rotation bedeutet einfach, dass dieses bestimmte Spielobjekt in unserem Fall der Spieler nicht in z-Richtung drehen kann. Jetzt können wir sie immer noch manuell drehen, aber das Physiksystem kann es nicht drehen. Und wir wollen das eigentlich tun. Denn was wir zuvor gesehen haben, ist, dass, wenn der Spieler, Ich bin tatsächlich mit der Box kollidiert, dann beginnt der Spieler zu drehen. Und das ist definitiv nicht etwas, was wir wollen. Nun, es gibt einige verschiedene Dinge, die wir hier verwenden können. Also der Körpertyp ist das erste, was. Und das ist zwischen nicht,
dynamisch, kinematisch und statisch. Und die Hauptunterschiede hier ist im Grunde statisch bedeutet einfach, dass es sich nicht ändert. Kinematik bewegt sich und dann bewegt sich die Dynamik mit etwas mehr Dynam,
Dynamik, sehen Sie, ich denke, etwas mehr Dynamik. Ich denke, die Masse wird verwendet, berechnen Sie die Kraft später entlang der Linie, weil wir auch Kraft auf einen starren Körper anwenden können. Und die Schwerkraftskala bedeutet einfach gut, Gravitationsskala, aber was Sie erwarten würden, also a, wenn Sie eine Gravitationsskala von 1 und Masse haben, dann fallen Sie nach unten, wenn Sie anfangen. Also zum Beispiel, wenn ich das tun würde und ich mich nicht bewegen, wie Sie sehen können, fiel der Spieler plötzlich herunter. Also, wenn ich den Spieler nach oben schiebe, wie Sie sehen können, fällt
der Spieler jetzt herunter und ich kann versuchen, nach oben zu gehen, aber das funktioniert nicht wirklich, denn während ich meine Position ändere, zieht mich
die Schwerkraft tatsächlich wieder nach unten, so dass ich mich nach links bewegen kann Richtig. Das funktioniert gut. Runter. Nach unten zu bewegen macht keinen Sinn. Und dann macht das Aufsteigen auch keinen Sinn, denn während ich meine Position trainiere, kämpft
das Physiksystem irgendwie dagegen. Und hier ist im Grunde auch der Teil, wo man an ein Sprungsystem denken könnte. Das ist also eine Art, natürlich eine Plattform und jetzt funktioniert die linke und rechte Bewegung völlig gut. Und jetzt ein Springen zu implementieren, könnte etwas
sein, das möglich wäre, denn wenn Sie eine Schwerkraftskala haben, dann meine ich, das ist fast ein Sprung, aber es ist nicht ganz eine Trommel, weil ich
die W-Taste gedrückt halten muss , um im Grunde nach oben zu bewegen. Es gibt also wahrscheinlich einen Weg, dies zu tun. Aber wie auch immer, der starre Körper, wir hatten ein Problem, bei dem wir in diesem waren und aufhören,
uns zu bewegen , plötzlich, wurden wir jetzt nicht mehr beschädigt. Dies liegt an dem Schlafmodus. Die Idee ist also, dass wir wach anfangen. Aber wenn wir aufhören zu bewegen, dann fängt das Physiksystem für den Spieler einfach an zu schlafen. Im Grunde. Wenn wir das nie schlafen lassen, dann werden wir feststellen, dass, wenn wir hier reingehen und wir hier drin bleiben, dann wird es uns im Grunde weiter schaden. Natürlich genau das, was wir in diesem Fall wollten. Wir wollen nicht, dass das in diesem Moment schlafen geht, oder? Einige dieser Dinge wie die Masse, der lineare,
lineare Ziehen und der Winkelwiderstand, oder einfach genau diese Dinge in Bezug auf die Physik. Und in Bezug auf physikalische Komponenten oder, oder physikalische Werte. Das sind sie. So wird natürlich vor allem die Masse verwendet, um die Kraft zu berechnen. Wenn ich also auf dieses Objekt,
abhängig von der Masse, Kraft setzen würde, würde es sich ändern. Das ist also einfach eine ganz normale Sache von der Physik selbst. Grundsätzlich haben wir die Interpellate ist, wie Sie sehen können, ist der pro Frame Update-Modus für den Körper. Wir können entweder interpolieren oder extrapolieren oder Sie können keine auswählen. Normalerweise würde ich sagen, dass keiner das ist, was du willst. Interpolation bedeutet einfach, dass die dazwischen liegenden Schritte berechnet werden. Insgesamt. Ich denke, dass es normalerweise für die meisten Dinge, die wir im Inneren von hier machen werden, nicht so viel wichtig ist. Gleiches mit der Kollisionserkennung. So diskret bedeutet einfach, dass es in diskreten Schritten ist, so dass es in diskreten Schritten ist. Kontinuierlich bedeutet, dass es kontinuierlich ist, oder? Werfen wir einen kurzen Blick auf den, im
Grunde den starren Körper innerhalb von Skripten. Also, wenn wir auf die gehen, zu unserem Skript, das wir hier hatten, die Kollisionen als der starre Körper kann durch entweder nicht zugegriffen werden, tatsächlich, es kann nur durch gute Komponente und dann starre, starre Körper 2D zugegriffen werden. So können wir dies innerhalb eines starren Body 2D speichern. Dies wäre starrer Körper 2D gleich list.rev get Komponente. Und dann können wir darüber nachdenken, was wir hier tun können. So zum Beispiel, starrer Körper, 2D-Punkt. Und dann, wie Sie sehen können, gibt es eine Menge Sachen, die wir tun können. Zunächst einmal können wir natürlich alle Komponenten ändern,
die wir in der Komponente innerhalb des Inspektors gesehen haben. Wir können natürlich auch einige andere Dinge ändern und einige andere wirklich coole Methoden machen. Rufen Sie einige Methoden auf, zum Beispiel mit Gewalt. So könnten wir zum Beispiel Kraft in eine bestimmte Richtung
hinzufügen. So Vektorpunkt, zum Beispiel, oder sagen wir, Sicher, lassen Sie uns Vektorpunkt für den Moment machen. Dadurch wird dann eine Kraft in diese Richtung hinzugefügt. Also in y, eine Richtung. Wenn wir zum Beispiel sagen würden, setzen Sie die Gravitationsskala wieder auf 0. Mal sehen, was jetzt passieren würde. Ist Sie sehen können, es bewegt sich sehr, sehr langsam. Also, das ist jetzt die Kraft. Jetzt kann ich es noch bewegen und ich kann es immer noch ändern. Die Kraft bleibt noch. Denn wenn wir hier in die Info schauen, können
Sie tatsächlich sehen, dass die Geschwindigkeit 0,02 ist. Und genau so die, so die Geschwindigkeit ist Punkt 0 2. Also im Grunde Punkt 0, 2. Ich denke, eine Sekunde wäre die Geschwindigkeit in diesem Fall. Also, wenn ich das dann so etwas wie mal 20 skaliere, so dass ich jetzt 20 mal schneller bin. Sollte 0,4 sein, schätze ich. Und jetzt sind ziemlich viel schneller nach oben. Ja, Punkt, das ist großartig. Und dann, wie Sie sehen können, jetzt ziemlich schnell nach oben, null natürlich, wie ich sagte, ich kann nach unten gehen, kein Problem. Aber in diesem Fall, die Kraft, die hinzugefügt wurde, gibt es, ja, Es bleibt im Grunde. Und das ist ziemlich cool. Wir können natürlich auch Drehmoment hinzufügen. Theoretisch können wir das. Was gibt es sonst noch? Wir können den Abstand zwischen diesem und einem Collider berechnen. Wie Sie sehen können, gibt es einiges, was wir tun können. Wir können die Position bewegen. Dadurch wird der starre Körper an eine bestimmte Position verschoben. Wir können uns Überschneidungen ansehen. Es gibt also eine Menge Dinge, wie Sie sehen können, die wir tun können. Wir können auch die Wakeup aufrufen, so dass es den Schlafzustand deaktiviert. Aber die Werbekraft ist wirklich das Interessante. Wir können, glaube ich, sofort seine Geschwindigkeit auf etwas einstellen. Wie Sie sehen können, sagt
das eigentlich das. Also, wenn ich sage Geschwindigkeit gleich,
ich denke, wie gesagt, das war ein 2D-Vektor. Es ist eine geheime Aussage. Ja, dies ist ein 2D-Vektor, also wäre dies ein neuer Vektor, 2 D, zum Beispiel 0 und dann 0,15. Anstatt eine Kraft hinzuzufügen, stellen
wir nun die Geschwindigkeit direkt ein. Lasst uns das machen. Also lass uns mal sehen. Und jetzt, wie Sie sehen können, ist die Geschwindigkeit jetzt 0,15. Das sind also alle Dinge, die in der Info hier sind, sehr wichtig auch. Aber der Grund, warum wir
die Geschwindigkeit nicht unbedingt selbst einstellen wollen , liegt natürlich an der Masse. Wenn wir eine Kraft hinzufügen, bestimmt die Masse die Geschwindigkeit am Ende. Also manchmal wollen Sie die Geschwindigkeit einstellen,
manchmal ist es besser, die Kraft hinzuzufügen hängt wirklich davon ab, wohin Sie mit diesem gehen wollen, wie viel von den Physiksystemen Sie verwenden möchten? Persönlich würde ich sagen, dass es wahrscheinlich am sinnvollsten nicht
zu viel von dem Physiksystem zu haben, aber es hängt wirklich davon ab, welche Art von Spiel Sie versuchen zu machen. Und eine letzte Sache, die ich zum Beispiel nur zeigen wollte,
ist, wenn wir
zum Beispiel einen linearen Drag haben . Ich meine, 50 ist wahrscheinlich ein bisschen zu viel. Lassen Sie es uns vorerst auf eins setzen. Und ich habe eine Kraft auf sie gelegt. Dann werden Sie sehen, dass die Geschwindigkeit abnimmt und plötzlich irgendwann 0 ist. Jetzt ist es okay. Jetzt ist es sehr langsam, sehr langsam, sehr langsam. Und dann ist es irgendwann so klein , dass sie sich im Grunde nicht mehr bewegen. Und das wird zu 0. Ich meine, das ist im Grunde schon 0. Weil der lineare Drag einfach bedeutet, dass das, was wir sind, wir haben etwas ziehen, direkt bevor wir im Grunde nur
eine Sache waren , die ohne Widerstand im Raum schwebt. Und jetzt würden wir es Luftwiderstand setzen. Das ist also, wie Sie sehen können, was es sagt. Und keine Dämpfung 0 bedeutet keine Dämpfung. Dies ist also etwas, das Sie
zum Beispiel mit dem linearen Ziehen steuern können . Und das gleiche mit Angular Drag einfach für eine Rotation in diesem Fall, richtig? Das wäre es, obwohl für den starren Körper insgesamt, gibt es ein paar coole Dinge, natürlich kann es damit tun. Aber ich denke, als ein allgemeiner Blick
darauf, es ist ziemlich cool. Und vielleicht die insgesamt, in Bezug auf eine Idee oder vielleicht haben Sie jetzt eine Vorstellung davon, wie Sie Lage sein
könnten, im Grunde eine Art Sprungmechaniker im Spiel hinzuzufügen. Dies wäre etwas, das Sie
zum Beispiel ausprobieren könnten . Es wird nicht unbedingt benötigt, aber es wäre eine gute Idee. Vielleicht können Sie sich etwas einfallen lassen. Aber wie auch immer, das wäre es für den starren Körper 2D, irgendwie eine kurze Übersicht darüber. Wie immer, hoffe ich, du hast es nützlich gefunden. Und wenn noch Fragen vorhanden sind, dann zögern Sie nicht, zu fragen und ich werde sicher sein, zu antworten. Und ja.
64. (Grundlagen Unity) Grundlegende UI: In Ordnung, lassen Sie uns mit der Einführung der grundlegenden Einheit für den Einheitskurs fortfahren. Und in dieser Vorlesung werden wir einen kurzen Blick auf einen sehr,
sehr einfachen UI-Text werfen. Und der Grund, warum ich Ihnen
den grundlegenden UI-Text zeigen möchte , ist, dass Sie eine grobe Schätzung der Benutzeroberfläche haben, zumindest wie Sie bestimmte Texte anzeigen. Und dann später in einem anderen Abschnitt, werden
wir einen tiefen Sprung in die Benutzeroberfläche machen. Schau dir jede einzelne Komponente an, die es gibt, wie man sie benutzt und solche Dinge. Ich denke, dass ein grundlegender UI-Text bereits Wunder wirken kann. Und dafür schaffen wir eine neue Szene. Wieder einmal, l 21. Wenn ich es nicht tue, wenn ich mich nicht irre und ich glaube nicht, dass ich das tue. Lassen Sie uns einfachen UI-Text machen. Texte, das Ego. Und lasst uns das sofort öffnen. Und dann anstelle des Skript-Ordners, ein neuer Ordner, L21, UI-Text, mit einem sehr einfachen C-scharfen Skript namens UI-Text. Wer hätte erraten, es gibt sofort anfangen das. Und lassen Sie uns einen neuen,
grundsätzlich Text innerhalb unseres Spiels erstellen . Wie können wir das tun? Nun, in einer Art Hierarchie, klicken Sie mit der rechten Maustaste. Und dann auf UI und dann Text gehen. Wir werden jetzt die normalen Texte benutzen. Wie ich schon sagte, alle anderen Dinge sowie was dieser Text Mesh pro bedeutet. Ich werde es jetzt in zukünftigen Vorträgen erklären. Wir werden uns nur mit dem normalen Text beschäftigen und wie wir tatsächlich bekommen, dass dies angezeigt wird. So haben wir jetzt einen neuen Text und wie Sie sehen können, wurden noch
einige Dinge generiert. Erstens, das Ereignissystem, wir werden dies
brauchen, löschen Sie dies nicht, sonst funktionieren einige Dinge möglicherweise nicht. Und die Leinwand und Leinwand ist im Grunde, man könnte sich eine Leinwand im Grunde als eine,
als eine Leinwand vorstellen , auf die man malen würde. Und in unserem Fall malen wir nicht darauf, aber unsere Benutzeroberfläche ist im Grunde auf dieser Leinwand gestempelt. Wenn wir nun ein wenig verkleinern, werden
Sie sehen, dass
der Text zunächst riesig ist und auf der Leinwand auch sehr, sehr groß ist. Und wir können dies ändern, indem wir hier auf
Canvas gehen und dann den Rendermodus auf Bildschirm-Space-Kamera ändern. Und dann nehmen Sie die Hauptkamera und setzen Sie sie in diese Render-Kamera. Und plötzlich wird die Leinwand auf die Größe der Kamera gelegt. Und unser Text ist hier unten. Und wir können die Größe mit dem rect-Werkzeug ändern. Dies ist der einfachste Weg, dies zu tun. Wir können diese Größe im Grunde ändern und es zum Beispiel tierisch hier oben setzen. Und dann machen Sie die Schriftgröße auf dem Text selbst größer. Das ist hier erledigt. Und dann plötzlich, lasst uns so etwas machen. Zentrieren Sie es und sie, wir gehen, jetzt haben wir einen neuen Text. Insgesamt. Dies ist das einzige, was wir in der Canvas selbst tun müssen. Wie Sie sehen können, gibt es noch einiges mehr. wir uns vorerst keine Sorgen. Machen wir uns nur Sorgen um den Text selbst. Wo wir natürlich den Fonds ändern können. Theoretisch können wir die Schriftgröße,
den Stil, die Ausrichtung ändern . Also alles, was Sie auch tun können, ist zum Beispiel in Word. Und natürlich kann die Farbe auch geändert werden,
lassen Sie uns diese Art von einer weißen Farbe machen. Und wenn ich ins Spiel gehe und Sie sehen können, dass der neue Text dort ohne Problem erscheint. Ich kann den Text hier in diesem, in diesem Textfeld ändern. So zum Beispiel zu 100. Und was ich jetzt tun werde, ist, dass ich den UI-Text
als Komponente zu den beiden genau diesem Textspielobjekt hinzufügen werde . Und im Inneren werden wir sehen, wie ich den Text per Skript ändern könnte. Also für mich, um das Skript zu
ändern, ändern Sie die tatsächliche Benutzeroberfläche über Skript, ich werde Unity Engine WI verwenden. Dies ist also ein Namespace, den wir verwenden müssen. Und dann lassen Sie uns zum Beispiel eine
private Textvariable namens Testtext erstellen. Und wir werden dies zu einem ernsten Feld machen, nur damit wir sehen können, was vor sich geht. Und das ist die Benutzeroberfläche, wie Sie sehen können, das UI-Element, die Unity-Engine, mit Punkttext. Und das ist genau diese Komponente hier. Theoretisch ist diese Komponente hier dieser Text. Und was wir tun können, ist, dass wir sagen können, wenn wir die Texte setzen wollten, sie sind Test, test.txt. Text ist also die String-Variable, die tatsächlich angezeigt wird. Und wir können dies festlegen, indem wir
zum Beispiel tun , wenn wir wollen, dass dies auf 300 gesetzt wird, wenn wir das tun, dann wird es sagen, dass das nicht funktioniert, weil wir tatsächlich zu String sagen müssen. Oder wir können natürlich so etwas wie dieses 300 Fahrzeug sagen. Das ist natürlich noch einfacher. So können wir dies auf eine beliebige Zeichenfolge setzen, die wir wollten. Und natürlich gibt es auch einige andere Dinge , die wir tun können, damit wir die Ausrichtung der Farbe ändern können. Wir können die Schriftart selbst verfolgen, können auch die Schriftgröße ändern. Also im Grunde, alle Dinge, die wir innerhalb der tatsächlichen Komponente gesehen haben, können
wir ändern, wenn Ihr Skript als auch. Aber im Moment ist das einzige, was ich eigentlich tun möchte, im Grunde, das zu ändern. Um die einhundert, zweihundert, dreihundert zu ändern, sobald ich anfange. Und wir müssen das hier einstellen. So wie Sie sehen können, testen Sie Texte, keine jetzt. Also, was wir entweder tun können, ist einfach in sich selbst oder innerhalb des Skripts. Bevor wir beginnen, können wir sagen, es hat Texte als gleich diesem Punkt erhalten Komponentententext. So nutzen Sie die Schuldenkomponenten-Methode
noch einmal , um im Grunde den Text am Anfang zu bekommen. Und wenn wir damit beginnen, können Sie sehen, dass es sich auf 300 dreht. Ist das nicht großartig? Richtig? Und dies ist ein sehr, sehr grundlegender Weg, um einen Text umzusetzen und wie wir dies ändern können. Wieder einmal können wir einfach die Get-Komponenten-Methode verwenden,
um grundsätzlich auf den Text und dann auf alle damit verknüpften Variablen zuzugreifen. Wir werden uns nicht zu viele dieser Dinge ansehen. Wie ich schon sagte, das ist etwas, das ich nur schnell erwähnen wollte. Zeigen Sie schnell, so dass Sie sehr,
sehr einfach nur UI-Text und nichts anderes wirklich machen können . Nur damit wir das in unserer Toolbox haben, um uns anzusehen,
nun, unser erstes Spiel im Grunde zu machen, oder? Aber das war es schon für diesen Vortrag. Ich hoffe, Sie fanden nützlich wie immer, wenn es irgendwelche Fragen immer zu stellen, und ich werde sicher sein, zu antworten. Und ja.
65. (Grundlagen Unity) Grundlegende Einheitlichkeit: Oder lassen Sie uns mit der Einführung der grundlegenden Einheit hier für den Einheitskurs fortfahren. Und in dieser Vorlesung werden wir einen kurzen Blick auf einige Debugging-Tools werfen, die Sie in Unity haben. Und lassen Sie uns einfach eine neue Szene erstellen, L22-Debugging. Nun wären diese Debugging-Tools Werkzeuge, die im Grunde die Debug-Klasse verwenden. Dies ist also ein anderer Ordner, L22-Debugging. Und dann ein Drehbuch hier. Kühlen Sie es, das Debugging-Beispiel. Lassen Sie uns dies öffnen und lassen Sie uns auch ein leeres Spielobjekt namens Debugging erstellen. Zentriert es, natürlich, gehen
sie Nullen 0000 und fügen das Debugging-Beispielskript hinzu. Und dann schauen wir mal, was wir sehen können. Also werden wir einfach etwas ausgeben. Wenn ich hier drücke, werden wir den Tastencode Punkt d verwenden. Wenn ich also D drücke, dann werden wir etwas debuggen. Ich denke, das ergibt Sinn. Und das erste, was wir bereits wissen, ist natürlich das Debug-Punktprotokoll. Das ist etwas, das wir schon gesehen haben. Du kennst das schon, oder? Dies sollte selbsterklärend sein, sperrt
einfach eine Nachricht an die Konsole. Es gibt auch die Debug-Warnung. Jetzt haben wir ein paar Warnungen gesehen. So könnte das zum Beispiel
ein Morgen sein, den Sie schreiben. Und das haben wir einige Male zuvor gesehen, zum Beispiel mit
Variablen, die zugewiesen wurden, aber nicht wirklich kalt anderswo. Aber ich glaube nicht, dass wir selbst angerufen oder gewarnt haben. Und es gibt auch Blick, Ära. Dies ist die einzige Sache, die es immer darauf hindeutet, dass manchmal vor dem Protokoll vorgeschlagen wird. Ich bin mir nicht sicher, warum dies in den letzten geändert hat, sagen
wir Einheit Versionen, aber was auch immer der Fall, diese drei, Lassen Sie uns hier sagen. Das ist ein Pfeil. Natürlich. Arrow, da gehst du. Und mal sehen, wie das aussieht, wenn wir damit anfangen. Also zuerst, naja, natürlich muss ich den Knopf drücken. Deswegen ist nichts passiert. Das würde das natürlich erklären. D. Und dann, wie Sie sehen können, kannten Sie das bereits. Ich warne Sie, und das ist ein Araber. Es gibt natürlich auch Filterung über die Konsole. Ich habe das schon erklärt. Und diese drei Dinge sind im Grunde etwas, das wir tun können, und wir können das auch weiterhin drängen. Und wie Sie sehen können, steigt die Zahl. Und das ist wirklich nützlich, denn natürlich können Sie,
je nachdem, was Sie in Ihrem Code ausdrücken möchten, entweder eine Warnung oder einen Fehler herausziehen. Und das ist wirklich schön für Debugging-Zwecke. Was ich jedoch sagen möchte, ist, dass alle Debugging-Tools sehr teuer sind, also sollten sie alle herausgenommen werden, wenn das echte Spiel
veröffentlicht wird oder entweder auskommentiert oder einfach nur sicherstellen, dass sie nicht mehr da drin sind. Ich bin mir nicht sicher, ob sie während des Spiels kalt sind oder wenn das Debug
etwas ist , das nur anstelle des Editors gemacht wird, bin
ich nicht 100 Prozent sicher. Aber jedenfalls, so. Es gibt noch etwas, das wir tun können, und das ist eine Ziehlinie. Was ist das? Nun, dieser Punkt transformiert Punktposition. Also beginnen wir an dieser Position und wir sagen, zum Beispiel, wir gehen von hier aus nach rechts. Also Vektor dreimal fünf. Und dann können wir auch sagen, nun,
wir wollen, dass das rot gefärbt wird. Und zehn F bedeutet, dass er zehn Sekunden lang bleibt. Das ist also ziemlich cool, denn was wir tun können, ist, dass wir einfach eine Linie zeichnen können. Und während der, Sie könnten sagen, nun, warum sollte ich eine Linie zeichnen wollen? Mal sehen, wie das aussieht. Es sieht nicht wie irgendetwas aus, weil die Gizmos nicht eingeschaltet sind. Lassen Sie uns die Gizmos einschalten und plötzlich sehen wir diese rote Linie. Es bleibt dort für 10 Sekunden und geht dann weg. Wie du sehen kannst, da gehst du. Warum ist das so cool? Warum können wir das benutzen? Nun, es ist eigentlich wirklich nützlich, denn manchmal
wollen Sie vielleicht wissen, was mit etwas los ist. Vielleicht willst du wissen, ob sich etwas in Richtung bewegt oder so etwas. Und dann kann das Zeichnen einer Linie mit dem Debug-Tool wirklich nützlich sein. Jetzt kann ich natürlich viele Linien zeichnen, und sie werden alle irgendwann ablaufen. Aber ja, so könnte die Draw-Linie, unglaublich nützlich sein. Ich meine, ich denke, es ist wirklich nützlich. Deswegen wollte ich es zeigen. Es ist wirklich cool. Es gibt auch die Sperrausnahme. Wenn ich es kriege, Sperre Ausnahme, da gehst du. Also in diesem können wir zum Beispiel, sagen System, eine neue System.Out Ausnahme. Und dann sagt das, ja, es ist eine Ausnahme. Dies protokolliert also nur eine Ausnahme im Grunde. Und dann last but not least, was ich Ihnen auch zeigen möchte, ist der Debug-Punkt, dot. Und das behaupten einfach eine bestimmte bool Bedingungen. Also, wenn ich hier einen wahren, dann wird nichts ausgegeben. Und wir werden das einfach ignorieren. Wenn ich eine falsche setzen, werden
wir sehen, dass die Behauptung gescheitert wird und wir werden eine Referenz mit dieser Zeile haben. Mal sehen, wie das aussieht. Wenn ich diese wieder gespeichert, drücken Sie D, Wie Sie sehen können. Also zuerst, du kennst das schon. Dann warne ich Sie, dass wir einen Pfeil haben, das ist unser eigener Fehler. Wir können auch eine Ausnahme suchen. Ausnahme. Ja, es ist eine Ausnahme. Und dann ist die Behauptung fehlgeschlagen, debuggen Sie Dot Assertion bool. Also können wir im Grunde bestimmte Dinge behaupten und sagen:
Hey, wenn das richtig ist, dann fahren Sie fort. Wenn dies nicht der Fall ist, dann kann Stop nützlich sein für, Lassen Sie uns Debugging hinzufügen. Und ja, das sind die Dinge, die ich dir zeigen wollte. Natürlich
gibt es innerhalb des div ein paar weitere Dinge, die Sie betrachten können, aber insgesamt sind das irgendwie diejenigen, die ich Ihnen zeigen wollte. Wenn es andere Dinge gibt, die Sie brauchen, könnten Sie natürlich selbst in die Debug-Klasse schauen und sich ein paar Dinge ansehen, aber das sind die, die ich für mich am nützlichsten fand. Und ja, das wäre es eigentlich schon für diesen Vortrag und diesen Abschnitt. Und ich hoffe, Sie fanden es wie immer nützlich. Wenn Sie irgendwelche Fragen haben, zögern Sie nicht, zu fragen und ich werde sicher sein, zu antworten. Und ja.
66. (Cheese Clicker) Die Idee von "Cheese Clicker“: Alles klar, Willkommen im Käseklicker hier für den Einheitskurs. Und in dieser Vorlesung wollte
ich Ihnen nur kurz zeigen, was
wir in diesem Abschnitt des Kurses erstellen werden. Wir wollen einen Käseklicker erstellen. Es gibt eine Art wie Cookie Clicker, aber mit Käse. Das ist die Idee, die ich mir ausgedacht habe. Und weil Cookie Clicker ein sehr leicht zu verstehen ist, dachte
ich, dass es dann auch sinnvoll wäre, ihn zu Käse zu machen. Und es wäre hoffentlich einfacher zu folgen, denn das Konzept ist so einfach. Allerdings können wir mit diesem immer noch eine sehr gut interessante Systeme erstellen. Und wir können auch schaffen, wer wird. In diesem Fall ist dies bereits fertig. In diesem Fall wollte ich Ihnen das zeigen und mal sehen, wie es spielt. Die Art und Weise, wie es spielt, ist, dass wir im Grunde die Möglichkeit haben, neue Gebäude zu schaffen, damit wir ein Clickergebäude und ein Melkstandgebäude bauen können. Wir haben auch Upgrades, die generiert werden, die wir implementiert haben. Und wenn wir auf den Käse klicken, dann, wie Sie sehen können, erhöht sich
die Käsezahl hier oben. Und wenn wir genug Käse haben, um etwas zu bauen, dann
werden sich die eigentlichen Tasten hier auch drehen, so dass wir darauf klicken können und dann können wir zum Beispiel auf den Klicker klicken. Die Zahl hier würde steigen, und diese Zahl wird auch steigen. So werden die Kosten steigen, sowie die Anzahl der Gebäude, die wir von diesem Typ haben. Der Clicker erzeugt für uns einen Käse pro Sekunde. Wir können dann zum Beispiel durch ein Upgrade hier unten, und dann bringt uns der Klicker plötzlich pro Sekunde zu Käse. Und wenn wir zum Beispiel
eine Melkstation hier unten haben , werden wir alle zwei Sekunden fünf Käse erzeugen. Richtig? So sieht das Spiel so aus. Wir haben auch ein paar Cheats eingebaut. Also, wenn ich Plus drücke, dann werden wir den Käse erhöhen. Wenn ein Plus Minus, dann werden wir den Käse reduzieren. Das ist also ziemlich cool. Und das alles wird in den nächsten Vorträgen aufgebaut werden. Zuallererst wird der Käse, um sie zu klicken, auf die Gebäude schauen. Wir werden eine einfache Benutzeroberfläche hinzufügen, die wir im Grunde verwenden können. Und zuletzt werden wir das Upgrade-System hinzufügen. Alles im Grunde hier drin. Wie üblich. Die, sowohl dies als Paket steht für Sie zum Download zur Verfügung, sowie jedes der Sprites hier sind als Ressource verfügbar. Und yum, wie auch immer Sie das verwenden möchten. Grundsätzlich können Sie im Grunde das Ihr,
das gesamte Projekt hier abrufen , es herunterladen und dann den Code ansehen, während ich ihn aufschreibe, während ich es erkläre, oder Sie können es grundsätzlich parallel zu mir schreiben. Es gibt natürlich etwas für Sie zu entscheiden, wie Sie das am besten
verstehen können und wie Sie am besten sehen können, wie das funktioniert. Aber insgesamt, das wird es für diesen Vortrag sein. Nun hoffe ich, dass Sie Spaß haben werden für die kommenden Vorträge, wo wir tatsächlich unser eigenes erstes Spiel erstellen, den Käseclicker. Und ja, das wäre es. Und ich hoffe, Sie haben Spaß in den kommenden Vorträgen. Und ich würde sagen, wenn es irgendwelche Fragen, natürlich,
während der Herstellung dieses Spiels, dann fühlen Sie sich frei zu fragen, und ich werde sicher sein, zu antworten. Und ja.
67. (Käse Clicker) Erstellen: In Ordnung, willkommen, den Käseklicker hier für den Einheitskurs zu kreieren. Und in diesem Vortrag machen wir einen Käse, auf den wir klicken können. Und auch ein Spielobjekt, in dem wir unseren Käse lagern können. Also im Grunde ein Käselager, sozusagen. Und dafür, das erste, was ich bereits vorbereitet habe, der Skript-Ordner und der Sprites-Ordner hier. Das sollte nichts Verrücktes oder völlig Neues für dich sein. Und nehmen wir den Käse. Das ist also die Ressource Sprite, die ich habe. Grundsätzlich als Ressource verfügbar. Und wir werden uns ändern, wenn Sie hier zahlen. Zunächst einmal werden die Pixel pro Einheit 150 sein. Wir werden diesen Filtermodus Punkt machen, so dass wir eine
Art gestochen scharfes Bild haben und die Komprimierung auf keine gesetzt wird, weil dies, einige grundlegende, es ist kein Pfeil als Warnung hier. Also dann die Komprimierung keine und dann wird die Warnung verschwinden. Richtig? Jetzt, wo wir unseren Käse haben, können
wir ihn einfach in unsere Szene ziehen und jetzt haben wir hier einen Käse. Suchen wir das irgendwo wie 00, negativ 0,5. Sagen Sie, dass das ein guter Ort dafür ist. Und wir werden den Käse in den Käseklicker umbenennen , weil das im Grunde die Bäume sind, auf die wir klicken werden. Und wir werden auch zwei Skripte erstellen. Aber bevor wir dies tun, gehen
wir zu unserem Projekt-Einstellungs-Editor und dann zu unserem Root-Namespace und dem Root-Namespace. In diesem Fall wird es Käseklicker sein, richtig? Wenn Sie dies als Root-Space haben, wird
Namespace dann den Namespace erzeugen, wie Sie wahrscheinlich innerhalb von gesehen haben. Innerhalb der Namespace-Vorlesung innerhalb der C-scharfen Einführung, richtig? Also lassen Sie uns unsere C, C Skripte erstellen. Das erste Drehbuch, das wir erstellen werden, ist der Käse Flickr. Dies ist also das eigentliche Klicken des Käses. Und dann werden wir sofort ein anderes Skript erstellen. Und das wäre die, wir können das nennen Sie sie Lager. Ich denke, das ist eine gute Idee. Und wir wissen, dass
wir in einer Art Käselagerung unseren Käse sozusagen aufbewahren. Und lasst uns das aufmachen. Und sobald es geöffnet ist, können
wir sofort wieder hier zum Käseklicker wechseln. Und jetzt haben wir beide Dateien geöffnet. Lassen Sie uns also darüber nachdenken, was wir für den Käseclicker selbst brauchen. Also lasst uns zunächst in der Lage sein, im Grunde auf den Käse zu klicken. Nun, es gibt eigentlich eine sehr schöne Sache, die wir tun können. Und das wird sein, wir sind zuallererst, wir brauchen hier weder den Start noch die Update-Methode. Und was wir verwenden werden, sind zwei Methoden, die verfügbar
sind, weil dies ein Mono-Verhalten ist. Und das wird auf der Maus nach unten sein, wie Sie sehen können. Also auf der Maus nach unten und dann mit der Registerkarte können wir dies grundsätzlich automatisch vervollständigen und auf der Maus nach unten, was dies tut, wie Sie sehen können, wird aufgerufen, wenn der Benutzer die Maustaste gedrückt hat während über dem GUI-Element oder Collider. Dies ist also ein GUI-Element, dies wird ein Collider sein. Also, was wir gerade jetzt tun werden, ist nur zu erhöhen. Grundsätzlich, nur damit wir wissen, dass das funktioniert. Und eine Sache, die wir auch tun werden, ist, dass wir hier eine neue Methode haben werden, die die Größe des Käses ändern wird. Denn jetzt, eigentlich, schauen wir uns das zuerst an und dann werden wir das nachher herausfinden. So erhöhter Käse. Also, wenn wir diesen Käse Clicker klicken, dann wollen wir den Käse erhöhen. Nun ist dies natürlich noch nicht implementiert, aber die, zumindest sollte die Ausgabe funktionieren. Also dieser Käse-Clicker, lassen Sie uns die, nicht die Lagerung, sondern der Käse flackern auf dort und sehen, ob, wenn wir darauf klicken, ob wir eine Konsolenausgabe bekommen oder nicht. Also passiert ich und nichts. Also das ist, das ist irgendwie seltsam. Warum ist das der Fall? Nun, es hat gesagt, dass es einen Collider braucht. Es gibt also zwei Möglichkeiten, das zu tun. Wir können hier entweder einen Collider hinzufügen, oder? Gehen Sie zum Beispiel zum Physics 2D-Box-Collider oder zu einem Polygon-Collider. Oder wir können etwas anderes tun. Also werde ich das Skript für eine Sekunde hier entfernen. Und was ich tun kann, ist, dass ich hier rauf gehen kann, in die Klammern
setzen und sagen, dass Komponente erforderlich ist. Das sagt also im Grunde, Hey, diese Klasse, wo immer dieses moralische Verhalten an das Spielobjekt angehängt ist, erfordert auch diese Komponente. Und dann kann ich sagen, Art von Collider, der leichter zu tief. Und das wird dann einen Collider hinzufügen, sobald ich dieses moralische Verhalten dem tatsächlichen,
dem eigentlichen Spielobjekt hinzugefügt habe . Was wir sehen werden, ist, wenn ich das jetzt hinzufüge, wie Sie sehen können, das Hinzufügen einer Komponente fehlgeschlagen ist, weil wir entweder ein Box-Unordnung oder einige dieser Dinge brauchen, und wir müssen das zuerst hinzufügen. Also, wenn wir jetzt hier reingehen und wir werden den Polygon-Collider nehmen und es wird im Grunde die Umrisse perfekt hier
machen, so dass wir nicht wirklich außerhalb davon klicken können. Wir werden es einfach so behalten, wie es ist und es gut geht. Und sobald wir den Polygon-Collider hinzugefügt
haben, fügen wir nun den Käseklicker hinzu, kennen Era
und wissen, dass alles völlig gut funktioniert. Dies ist also im Grunde sicherzustellen, dass ein bestimmtes Skript tatsächlich funktioniert, indem diese Required-Komponente verwendet wird. Okay, lassen Sie uns das ausprobieren und sehen, ob, wenn ich darauf klicke, es funktioniert und es tut. Also, wenn ich darauf klicke, wie Sie sehen können, wird
ein Anstieg Käse ausgedruckt, was wirklich gut ist. Also wissen wir, dass die Maus nach unten funktioniert. Nun, wie Sie gesehen haben, gibt es dort keinen visuellen Hinweis. Und was wir tun werden ist, dass wir den Käse im Grunde neu dimensionieren werden. Und dafür werden wir hier eine neue private Methode machen, private Leere skalieren Käse. Und das wird einen Vektor 3 nehmen, der
die neue Größe sein wird. Die Idee hier ist also, dass wir im Grunde nur einen Vektor in
dieser Methode einfügen und dann diese lokale Skala ändern wird, entspricht neuer Größe, neuer Größe. Und wir werden das hier einmal am Anfang tun, sobald ich mit der Maus angefangen habe. Also werden wir die Größe des Käses auf im Grunde ändern, na ja, Größe
ist gerade jetzt eins, also wäre dies seine ursprüngliche Größe. Und dann sagen wir zum Beispiel etwa 0,9. Das wäre praktikabel. Und dann brauchen wir das natürlich wieder zu wachsen. Sonst wird es nicht funktionieren. So können wir jetzt dann die andere Maus-Methode verwenden. Das wird also auf der Maus nach oben sein. Und noch einmal, dies ist eine Methode mit freundlicher Genehmigung des Modellverhaltens hier, wir werden die Größe des Käses mit Vektor drei Punkt eins ändern. Dies wird es im Grunde auf seine ursprüngliche Größe 10, 11. Und das sollte eigentlich schon funktionieren. Mal sehen, ob das funktioniert und wir bekommen hier einen coolen visuellen Effekt. Also, was wir tun werden, ist, dass sich die Skala jetzt ändern wird. Mal sehen, ob das tatsächlich der Fall ist. Und es ist der Fall. Wenn ich es gedrückt halte, dann funktioniert es. Und sobald ich den Knopf loslasse
, funktioniert es auch. Was passiert jetzt? Zum Beispiel, wenn ich mich aus den Augen des Bildschirms bewegen würde, wie Sie sehen können, funktioniert es immer noch ziemlich gut. Ich glaube, dass es Möglichkeiten gibt, wie man das System wahrscheinlich betrügen kann. Ich denke, wenn ich jetzt drücke, nein, wenn ich die Windows-Taste drücke, funktioniert
es immer noch sehr gut. Also, das ist wirklich schön. Und dann bekommen wir jetzt sogar visuelle Hinweise dafür. Natürlich können Sie das immer aufrecht ändern. Vielleicht willst du, dass das etwas subtiler ist. Dann möchten Sie es vielleicht so ändern, dass es 95 Prozent
seiner ursprünglichen Größe oder etwas anderes aussieht . Insgesamt denke ich, dass das gut wird. Richtig? Dann machen wir folgendes. Lasst uns darüber nachdenken. Nun, wir wollen irgendwie, dass die Käselagerung Käse lagern kann, oder? Es gibt also ein paar Dinge, die wir jetzt im Software-Speicher tun müssen. Und doch
ist das erste, was natürlich ein privater Int namens Käse sein wird, richtig? Also dieser Käse, da gehst du. Und das wird speichern, wie viel Käse wir haben. Lassen Sie uns dies zu einem serialisierten Feld machen, so dass wir es
tatsächlich innerhalb des Konstruktors sehen können . Und dann werden wir etwas machen, das gut ist, vielleicht nicht viele von Ihnen wissen, aber das wäre ein, das ist im Grunde ein C-scharfes Designmuster, und das wird das Singleton-Muster genannt. Die Idee ist, dass wir hier eine statische Käsespeichervariable haben. Wir nennen das die Mets, nennen das Käselager. Und das wird immer,
na ja, derjenige sein, der in unserem Spiel ist. Wie können wir das sicherstellen? Nun, wenn die Käselagerung, so dass diese statische Variable gleich null ist. Also, wenn nichts darin geschrieben ist, dann werden wir einfach sagen, dass sie Lager ist. Also, so die statische Variable dazu. Und das wird dann sicherstellen, dass Nummer 1, es gibt o immer nur einen bestimmten Speicher, den sie zur Verfügung hat. Und dann auch, dass wir von überall darauf zugreifen können, im Grunde durch die Verwendung der Klasse. Also, so dass sie Lagerung, Lagerung, vielleicht könnte der Name insgesamt geändert werden, ich denke, dass das in Ordnung ist. Ihr Lagerraum wird wahrscheinlich gut werden. Lassen Sie uns dies tatsächlich umbenennen, damit wir Control R drücken können, um dies umzubenennen. Lassen Sie uns diese Käsespeicherinstanz nennen, weil das tatsächlich ein besserer Name dafür ist. Und dann, was ich auch hinzufügen werde, wird auch drei Ereignisse hier hinzufügen. So haben wir das sehr kurz am Ende der C-scharfen Einführung gesehen. Also werden wir zuerst einen Delegierten machen, und das wird bei der Änderung der Käsemenge genannt werden. Das ist also im Grunde ein Delegierter. Das heißt, sie sind, wenn sich eine Käsemenge ändert und dann werden wir drei statische Ereignisse machen. Also öffentliches statisches, statisches Ereignis. Einer von ihnen cool. Also alle von ihnen auf Käse Menge ändern. Einer von ihnen rief Käse hinzu. Das wäre also derjenige, der angerufen wird, wenn sie noch mehr hinzugefügt hat. Dann werden wir das nur zwei Mal kopieren. Einer von ihnen auf Sie ist entfernt, lassen Sie uns sagen, könnte auch auf Käse sein, subtrahiert, so etwas. Und dann werden wir auch eins drauf haben. Sie hat sich verändert, sie gehen. Also Idee, dass wir das nennen wollen, wenn wir einen Käse hinzufügen, wenn wir einen Käse entfernen, und dies wird auf einer der beiden genannt werden. Ich würde sagen, dass dies noch einmal einige ist, wie ich in der C-scharfen Einführung zu Ereignissen gesagt habe, Sie wirklich kein Negativ haben, um mehr Ereignisse hinzuzufügen. Ich denke, dass das gut wird, und wer weiß, was wir später
hinzufügen möchten , wo wir all diese Ereignisse brauchen könnten. Deshalb habe ich sie hinzugefügt. Und ja, lasst uns jetzt darüber nachdenken, was wir sonst noch brauchen? Uh, also wollen wir, im Grunde, wenn wir dieses Mal über die öffentlichen Methoden nachdenken, richtig, die aufgerufen werden können, und das wäre und sie ist Rate. Also gingen wir von irgendwo hin, um einen Käse mit einer bestimmten Menge hinzuzufügen, natürlich, richtig? Also, denke ich, würde Sinn ergeben. Aber es ist wie ein, Ich möchte eine bestimmte Menge an Käse und das wird dann in dieser Menge Umfang gespeichert. Und was passieren würde, ist dieser dot-dot-dot Käse wäre dann nur plus gleich der Menge. Aber das ist, sollte ziemlich leicht zu verstehen sein. Und dann wollen wir natürlich auch die Events hier anrufen. Und wir können diese Ereignisse mit
einer bestimmten Sache nennen , und das wird auf Käse hinzugefügt werden, zum Beispiel, weil ihre Realitäten, und wenn wir in einem Fragezeichen Punkt setzen rufen und sagen Käse, dann diese Frage Marke stellt im Grunde sicher, dass es mindestens einen Teilnehmer gibt, sonst wird es nicht ausgelöst. Das ist also im Grunde das gleiche, als ob ich sagen würde, wenn sie hinzugefügt wird, ist ungleich null, und dann sagen, dass sie Käse hinzugefügt hat. Und ich glaube, wenn ich das mache, dann wird es tatsächlich sagen, hey, wir können das genau zu diesem vereinfachen. Und wie Sie sehen können, ist das genau das Gleiche. Nun, wir müssen das gleiche hier tun, weil sie sich auch verändert hat. Und dann sind wir wirklich glücklich damit. Wir werden das einfach kopieren und dann
sagen wir, dass das Bäume entfernt werden würden. Das ist dann das, was sie negativ ist. Und dann statt hinzugefügt, haben wir entfernt. Jetzt können wir natürlich in diesem Szenario Bäume entfernen, die wir nicht haben. Damit wir negativ werden können. Aber wir werden uns im Moment keine Sorgen darüber machen. Im Moment werden wir einfach Käse hinzufügen, mit dem Klick. Das wird also gut. Und jetzt müssen wir das letzte, was wir tun müssen, ist, dass wir irgendwie, na ja, die Methode „Käse hinzufügen“ in Betrieb genommen Käse,
Littler und Clicker genannt werden , und dann geht es uns gut. Und wir können das tun, indem wir einfach hier reingehen und dann sagen:
Nun, ich weiß, dass ich meinen Käse holen kann. Machen wir das hier unten rechts. Ich kann zum Beispiel Käse sagen. Dot-Speicherinstanz. Das ist also die Instanz. Das ist also im Grunde das gleiche, was ich
bekommen würde , wenn ich Spiel dot billigen Speicher finden würde. Aber jetzt, da die statische Instanz innerhalb der Klasse selbst gespeichert wird, können
wir es einfach so bei Käse machen und dann eins sagen. Und in der Hoffnung, dass das funktioniert, dass das ziemlich cool wäre. Also mal sehen, wir brauchen den Debug nicht mehr. Und mal sehen, ob das tatsächlich wie beabsichtigt funktioniert. Okay, fangen wir an und sehen jetzt zuerst, natürlich, wir müssen hier eine Käseaufbewahrung hinzufügen. Das wäre ziemlich schlau. Also ist sie Lager. Und lassen Sie uns diesen Speicher hinzufügen. Hier gehen sie. Wie Sie sehen können, ist
0 Baum derzeit dort. Und hoffen wir, dass dies zunimmt, wenn ich darauf klicke. Und das tut es, ist das nicht großartig? Es steigt also jedes Mal, wenn ich darauf klicke und wir bekommen, sie ist wie, niemand hat jemals zuvor Käse bekommen, indem man einfach auf diesen Käse auf einer Skala klickt? Seitdem nicht gesehen. Ich weiß es nicht. Ich weiß nicht, wann sie angefangen haben, Käse zu machen, aber ja. Das wäre es also eigentlich für das Klicken des Käses. So haben wir jede Saison, die wir jetzt klicken können. Wir haben auch eine Käselagerung, wo wir Käse hinzufügen und Käse entfernen können. Und jetzt kommt es wirklich darauf
an, ein paar Extras hinzuzufügen. Eine der Extras, die wir sofort hinzufügen werden, ist nur so, dass wir das im Grunde testen
können, ist Art von Cheats. Statt der Update-Methode unserer Käselagerung werden
wir es eintragen, den Schlüssel runter bekommen. Und dann hat er Code Dot Tastatur. Ich werde das Tastenfeld plus verwenden. Also das Plus auf der Tastatur, sie in der Regel ganz rechts von Ihrer Tastatur. Was wir tun werden, ist, dass wir sagen, dass der Instanzpunkt Käse hinzufügt. Sagen wir etwa 10. Wir werden nur 10 Käse hinzufügen. Und dann werden wir das kopieren. Und was ich sagen werde, Schlüssel, Tastatur, halten Sie bei Minus. Und dann werden wir einfach Dot entfernen Käse. Und das wäre 10. Jetzt ist es wichtig, dass wir nicht wirklich eine negative Zahl hier übergeben müssen. Wir wollen diese eine positive Zahl übergeben, die Sie natürlich auch tun können, ist übergeben, fügen Sie Käse, eine negative Zahl. Und das würde auch funktionieren. Obwohl natürlich dann der Käse hinzugefügt würde eine Art von Problem hier haben. Das wäre also etwas, das Sie auch hinzufügen könnten. Das wird also nicht absolut solide sein, aber ich wollte das erwähnen. Es ist also sehr einfach mit einem wenn Check in diesem Fall gemacht. Aber ja. Ja. Also, das wäre es eigentlich. Lassen Sie uns das in Aktion sehen, das Plus und das Minus, damit wir hier im Grunde Bäume hinzufügen und entfernen
können, ohne auf den eigentlichen Käse zu klicken. Also lasst uns ein paar Mal darauf klicken. Und dann sagen wir zuerst das Plus, und dann bekomme ich 10 Käse sofort ohne Problem. Und ich kann auch Käse entfernen. Und wenn Sie das sehen, dann können wir in die Negative gehen, ohne ein Problem hier. Dann kann ich mit dem Plus zurückgehen, im Grunde nur hinzufügen und entfernen Käse. Dies ist gut, um diese nur silberne Art für
Debugging-Zwecke hinzuzufügen , damit Sie es ausprobieren können. Ok. Ich brauche, wenn Sie vielleicht, wenn wir etwas hinzufügen wollen, das Sheets zu tun kostet, dann was wir tun können, ist im Grunde einfach ein paar Käse hinzuzufügen. Wir sind Lagerraum. Und dann wird es uns gut gehen und wir müssen nicht warten und
wie 1000 mal klicken , bis wir 1000 Käse haben, um etwas zu tun. Und dann kann sich die Anzahl natürlich auch ändern. Aber ja, das wäre es für diesen Vortrag. einen Käse hinzu, um zu klicken und dann den Käse zu bekommen, speichern Sie ihn in unserem Lager hier. Ich hoffe, Sie fanden diese Vorlesung nützlich wie immer, wenn es irgendwelche Fragen, zögern Sie nicht zu fragen. Ich werde sicher antworten. Und ja.
68. (Cheese Erstellen von Gebäuden: In Ordnung, lassen Sie uns weiter mit unserem Käseklicker hier für den Einheitskurs. Und in diesem Vortrag werden wir die Fähigkeit hinzufügen, die Gebäude zu bauen ,
die uns Käse erzeugen, ohne dass wir etwas tun müssen. Also passiver Käse, was könnte besser sein? Ich weiß es nicht. Also lasst uns darüber nachdenken. Wir werden zunächst einen neuen Ordner innerhalb unserer Skripte hier erstellen, der Gebäude genannt wird. Das wird also genau wie sind alle Skripte, in denen unsere Gebäude sein werden. Und wir werden zunächst eine neue Klasse namens Building erstellen. Also, dort zu bauen, ist es, ja. Und das wird eine abstrakte Klasse sein. Also lasst uns das aufmachen und uns einen Moment darüber nachdenken. Zunächst einmal wird dies nicht von einem Monoverhalten erbt. Diese Klasse wird also eine Art, gut nur die Datenklasse sein. Du könntest so darüber nachdenken. Und wir werden auch die Gebäude hier zu unserem Namensraum hinzufügen. Dies wird also alles innerhalb des Gebäude-Namespace sein. Und das Gebäude wird
eine abstrakte Klasse sein , weil wir nie ein bestimmtes Gebäude wollen. Wir wollen nur die geerbten Klassen. Jedes Mal, wenn wir ein neues Gebäude schaffen, werden
wir es von dieser Bauklasse erben lassen. Und so lasst uns darüber nachdenken. Was brauchen wir wirklich für ein Gebäude? Welche Art von Bauteilen eines Gebäudes? Das erste, was wir brauchen, ist ein Kostensatz. Also werden wir machen, dass dies Eigenschaften im Grunde haben. Also werden wir eine Kostenbasis im Grunde für diese bürgerlichen Gebäude haben. So viel Käse wird es kosten. Wir werden auch, wenn ich diese Eigenschaft nur kopieren werde, werden
wir auch jeden Gewinn von ihm haben. Das ist einfach, was wir in Bezug auf Bäume gewinnen werden. Und dann haben wir hier eine Float-Eigenschaft, die wir das Zeitintervall nennen werden. Und die Idee hier ist, dass die Zeit hier ist, die Idee hier ist, dass wir einfach diese Zeit haben, wie Sie diesen Käse Gewinn jedes Zeitintervall im Grunde haben. Das sind also die drei Grundlagen, die wir für ein Gebäude brauchen. Vielleicht können Sie sich noch ein paar mehr einfallen lassen. Aber im Moment werden wir es so machen. Und es gibt auch einige Ereignisse, an die ich gedacht habe. Eines der Ereignisse wäre, vor allem, ein Delegierter, öffentlicher Delegierter, nichtig. Dies ist einfach der Gebäudehandler mit einem bestimmten Gebäude. So bauen, bauen. Und dann müssen wir vielleicht zu Ereignissen, die beide von Building Handler sind. Einer von ihnen ist auf dem Bau, so auf Gebäude gebaut. Das ist also im Grunde, wenn wir etwas bauen und dann haben wir auch auf den Aufbau von Cashflow, den wir uns ansehen werden. Der Cashflow ist also im Grunde, wenn wir den Käsegewinn hinzufügen. Das wären also die beiden Ereignisse, die ich ausgedacht habe. Natürlich gibt es wahrscheinlich noch etwas mehr, das man sich vorstellen kann, aber im Moment denke ich, dass diese ausreichen würden. Und, und lasst uns einfach ein bisschen mehr von dieser Bauklasse nachdenken. Also werden wir einen geschützten Konstruktor haben. Bauen mit genau diesen drei Eigenschaften hier. Also die Kosten, wir werden
den Käsegewinn haben und wir werden das Float-Zeitintervall haben. Und diese werden einfach auf genau diese Eigenschaften eingestellt. Diese Punktkosten entsprechen also Kosten. Dieser Punktkäsegewinn ist gleich Käsegewinn. Und dann ist dieses Zeitintervall gleich Zeitintervall, Zeitintervall. Das hier, sie gehen, richtig. Und nun, das ist alles in Ordnung. Und nun, es gibt noch eine Sache, die wir brauchen, natürlich, den öffentlichen abstrakten Lücke Cashflow. Dies ist also im Grunde die abstrakte Methode,
die jede der geerbten Klassen implementieren muss, damit sie wie richtige Gebäude sind. Weil wir im Grunde diesen Cashflow jedes Mal aufgerufen werden müssen. Nun, genau das passiert. Also, wenn das Zeitintervall fertig ist, dann werden wir diese Methode aufrufen. Und jedes der Gebäude wird eine andere Art von Cashflow-Methode haben. Ob das vielleicht zurückkehren oder nicht, einfach zehn Käse zurückgeben, oder vielleicht gibt es einige verschiedene Teile. Vielleicht haben Sie verschiedene Gebäude. Und wenn Sie eines davon haben,
eines davon, ein und eines von Gebäude B zu bauen, die Art von Einfluss gegenseitig oder später nach unten, wenn wir Upgrades
für bestimmte Gebäude erstellen , als sich diese Cashflow-Methoden für bestimmte Gebäude. Deshalb ist dies in diesem Fall eine abstrakte Methode. Also denke ich insgesamt, das ist irgendwie endgültig bereit. Lassen Sie uns jetzt über zwei weitere Dinge nachdenken. Vielleicht, wenn wir mehrere Gebäude bauen, dann wollen wir eine Art Modifikator, um den die Kosten steigen. Und weil wir gespeichert haben oder Käse in einer Art CI, Speicher als Ganzzahl, werden
wir wahrscheinlich haben, dass dies ein Modifikator ist, der auch eine ganze Zahl ist. Und das wird der Kostenmodifikator von zwei sein. Also werden wir den Preis nur zweimal erhöhen, sobald das eigentliche Gebäude gebaut ist. Vielleicht wollen wir auch eine Liste aller Gebäude. Dies wird also eine statische Liste vom Typ eines Gebäudes sein, das als Gebäude bezeichnet wird. Und das wird über zwei spezifische Dinge zugänglich sein. Einer von ihnen wird ein Eigentum sein. Also werden wir tatsächlich eine statische Eigenschaft namens list haben. Das wird also eine Liste von Gebäuden sein, die ein Gebäude genannt wird, Gebäudehinweis. Nun, das wird in Gebäudeinstanzen bauen. Und das wird ein get oder eine Möglichkeit haben, die Gebäude zu bekommen. Und es wird nur zurückkehren, wie Gebäude. Aber das hat natürlich ein Problem, weil das vielleicht null ist, weil er hier oben, wir haben nichts damit gemacht. Also brauchen wir eine Möglichkeit, es auch zu initialisieren. Und dafür werden wir eine private statische Listenbaumethode erstellen. Das wird also Gebäude sein, Gebäude, das heißt, wir werden alle Gebäudeinstanzen konstruieren nennen. Die Idee ist also, dass wir immer nur eine Instanz eines
Gebäudes haben und diese dann zu einer Liste innerhalb unseres Käselagers hinzufügen, zum Beispiel. Später, wenn wir dorthin gehen, werden
wir hier eine Liste von Gebäuden haben, die gebaut werden. Und im Inneren von hier haben wir im Grunde nur eine Liste. Das wäre also das Listengebäude. Ergebnis entspricht Ergebnis. Diese korrekt neue Liste des Gebäudes und dann Ergebnis zurückgeben. Und dazwischen werden wir ein Gebäude hinzufügen. Jedes Mal, wenn wir ein neues Gebäude hinzufügen, würden
wir dieses besondere Gebäude hier hinzufügen. Und lassen Sie uns dann zum Beispiel, und machen es auch so, dass, wenn Gebäude gleich null ist Wenn
also Rechnungen noch nicht gesetzt wurden, dann werden wir es durch den Aufruf von construct alle Gebäude-Instanzen festlegen. Richtig? Für jetzt ist dies wahrscheinlich ein Schritt nach oben der Komplexität in diesem Moment. Jetzt gibt es ein paar Dinge hier, und das war nicht nur, sagen
wir, aus einer Laune gewählt. Es gibt natürlich eine Menge Gedanken in das, sagen wir mal. Und im Moment könnten wir darüber nachdenken, so darüber nachdenken. Wir haben das abstrakte Klassengebäude und wir können dann eine Liste von Gebäuden haben. Also lasst uns, wenn wir dann zum Beispiel
einen Clicker haben , werden wir ein Clickergebäude erstellen, das automatisch klickt. Sagen wir mal. Die meisten von euch haben wahrscheinlich schon Cookie Clicker gespielt. Dies ist im Grunde das erste, aber das erste, was Sie dort tun können. Und dieses Cookie Clicker Gebäude, im Grunde, werden wir über eine neue hinzufügen. Also werden wir eine neue Klasse machen, diese vom Bauen erben lassen. Und dann werden wir das hier zu dieser Liste hinzufügen. Und dann haben wir eine Instanz davon und wir werden nie neuen Klick verwenden, den ich bekomme. Das ist im Grunde, wir haben eine Instanz hier und dann werden diese Instanzen immer an
eine Liste übergeben , die wir später innerhalb unseres CI-Speichers erstellen werden. Und als Käselagerung wird dann im Grunde muss dann den Cashflow von jedem der Gebäude nennen, die wir dem Käselager gegeben haben. Und dann werden wir unsere Käsegewinne bekommen, sagen wir. So. Lasst uns, also lasst uns hier einfach ein neues Gebäude bauen. Lassen Sie uns also eine neue Klasse namens Clicker erstellen. Und lass uns das aufmachen. Stellen Sie sicher, dass dies auch unter Gebäuden ist. Und dann wird das tatsächlich vom Bauen hier erben. Und das erste, was wir sehen können, natürlich mögliche Korrekturen. Implementieren Sie also abstrakte Klasse. Also müssen wir diese Cashflow-Methode
natürlich implementieren , sonst wird es nicht funktionieren. Richtig? Und was wir tun werden, ist, dass wir einfach folgendes tun werden. Also jedes Mal, wenn dieser Cashflow ist. Kalt. Was wir tun werden, ist, dass wir nur Käselagerung sagen, Dot Ci Lagerinstanz, fügen Sie jetzt einen Käse hinzu. Also werden wir das sehr, sagen
wir, einfach so machen . Und dann werden wir auch tun, ist auf den Aufbau von Cashflow. Fragezeichen aufrufen. Und dann das, denn dies ist das Gebäude, das im Grunde diesen Cashflow bekommt. Und wir brauchen auch eine, wir brauchen ein Lesen genau den No-Parameter innerhalb des Konstruktors. Also brauchen wir hier einen neuen Konstruktor. Also öffentlicher Klicker mit Kosten, die, sorry, die ganze Zahl Käsegewinn, sie ist Gewinn und das Float-Zeitintervall. Und das Tolle ist, dass wir jetzt tun können, ist, dass wir hier einfach einen Doppelpunkt setzen können, der Basis genannt wird. Dies wird also das Basiszeitintervall aufrufen. Zeitintervall gehen sie, Dies wird den Basiskonstruktor für das eigentliche Gebäude aufrufen. Also im Inneren von hier brauchen wir eigentlich nichts anderes zu tun. Und das wäre das Gebäude, wie ich es bauen würde. Natürlich gibt es zahlreiche Möglichkeiten, wie wir das anders machen können. Anstatt die CI-Speicherinstanz hier aufzurufen, könnten wir beispielsweise sofort eine ganze Zahl mit dem Cashflow zurückgeben, der dieses Gebäude generiert. Dies ist also nicht der einzige Weg, wie Sie dies mit irgendwelchen Mitteln tun können. Wie es wahrscheinlich gibt, ich meine, ungefähr 1000 Wege nach Rom im Grunde. Also alle, alle Straßen führen nach Rom. Es ist unglaublich, wie viele Möglichkeiten Sie dies tun können, ist nur ein Beispiel dafür. Und mal sehen. Wenn wir zurück zum CI-Speicher gehen. Grundsätzlich wollen wir hier jetzt eine Liste der Gebäude, die gebaut wurden. Lassen Sie uns hier eine neue Liste erstellen. Also lassen Sie uns dies zu einer privaten Liste des Typgebäudes machen. Also müssen wir jetzt ein Gebäude benutzen. Wir können auch einfach mit She Clicker Datengebäude tun. Das ist wahrscheinlich jetzt ein bisschen einfacher. Und wir können alle Klassen dort verwenden. Und das sollte auch gut sein. Richtig? Lasst uns alle Gebäude machen. Lasst uns also alle gebauten Gebäude machen. Ja, machen wir das. Und wir werden dies anstelle der Startmethode initialisieren. Alle gebauten Gebäude entsprechen also einer neuen Liste von Gebäuden, so dass dies initialisiert wird. Und dann können wir im Grunde zu dieser speziellen Liste hinzufügen. Sobald wir ein, nun, wenn wir ein Gebäude bauen, jetzt brauchen wir natürlich eine neue Methode. Ich nenne das nur eine öffentliche Leere. Bauen, Bauen, Bauen. Da gehst du. Mit einer Instanz eines bestimmten Gebäudes. So bauen Sie ein neues Gebäude. Bauen an dieser Stelle scheint bereits ein ziemlich interessantes Wort. Aber ich denke, dass das in Ordnung ist. Und jetzt gibt es ein paar Dinge, die wir tun müssen, oder? Denk darüber nach, okay, was müssen wir tun, um ein Gebäude zu bauen? Nun, wir müssen
sehen, ob es möglich ist, oder? Also das ist das erste, was wir tun müssen und das sollte sein, nun, das, wir müssen nur sehen, okay, die Kosten für das eigentliche Gebäude sollten kleiner
sein als die Menge an Käse, die wir haben. Also, was wir tun können, ist, wenn neue Gebäude Punkt Kosten im Grunde kleiner oder gleich dem Käse, den wir haben. Dann können wir bauen. Also, das ist im Grunde so aussehen. Da gehst du, baue. Und wenn das nicht der Fall ist, dann können wir so etwas nicht bauen, oder? Und so, ja, ich hoffe, dass das Sinn ergibt. Die Idee ist also, dass, wenn das Gebäude mehr kostet, oder in diesem Fall weniger
kostet als der Käse, den wir haben oder genau dem Käse entspricht, den wir haben, dann können wir es bauen. Sonst können wir das nicht. Natürlich müssen wir das auch subtrahieren. Es gibt also einige, die wir vielleicht festhalten könnten. Ich meine, im Grunde, das einzige, was wir tun müssen, ist, dass wir sagen müssen, okay, Käse entfernen. Also entfernen Sie Käse in der Höhe der Neubaukosten, richtig? So entfernen wir einfach den Käse mit genau wie viel das Gebäude kostet. Dann wollen wir natürlich dieses Gebäude hinzufügen. Also fügen alle Gebäude oder Gebäude Gebäude jetzt ein neues Gebäude hinzu. Das sollte also tatsächlich das Ego bauen. Also werden wir dieses Gebäude hinzufügen, das
mit dieser Methode übergeben und in unsere Listen hier hinzugefügt wird. Und dann werden wir folgendes tun. Wir werden im Grunde etwas verwenden, das wir noch nicht gesehen haben, was eine Co-Routine ist. Und das wird eigentlich ziemlich unkompliziert sein. Also werden wir die Bäume entfernen. Wir haben das neue Gebäude hinzugefügt, und jetzt müssen wir das irgendwie haben können. Haben Sie das Zeitintervall, überprüfen Sie und fügen Sie unseren Käse ausgewogen, sozusagen schreiben. Und die Art und Weise, wie wir das tun können, ist, dass wir einen A, einen Augenaufzähler definieren. Ich werde es Ihnen schnell erklären, nachdem wir das getan haben. Das ist also eine I enumerate Tour. Also dieser hier, wir werden das den Gebäude-Cash-Flow mit
einem bestimmten Gebäude innerhalb Ihres Gebäudes als Parameter nennen . Und das Tolle an diesem Ionenzähler ist, dass wir etwas tun können, das als Ertragsrendite bezeichnet wird. Zurück. Und dann können wir vier Sekunden ein neues Gewicht machen. Und das ist das wirklich coole Ding. So können wir auf eine bestimmte Anzahl von Sekunden warten. Also nimmt diese Methode einen Float für Sekunden. Und was wir jetzt tun können, ist, weil wir ihm ein Gebäude geben. Wir können sagen, Gebäude Punkt Zeitintervall. Es wird also genau auf das Zeitintervall des hier angegebenen Gebäudes warten. Und dann,
nachdem dies erledigt ist, es mit dieser Methode fortfahren. Also wird es hier warten. Bei dieser speziellen Methode wird
alles andere noch funktionieren, also ist es irgendwie parallel. Dies wird warten, bis die Sekunden oder über. Und sobald die vorbei sind, wird das weitergehen. Also werden wir sagen, das ist eigentlich Building Dot Cashflow. Cashflow gehen sie. Und weil dies den Käse hinzufügt, wie ich bereits sagte, könnten wir
in diesem Fall auch einfach eine ganze Zahl zurückgeben und den Käse hier hinzufügen. Beide würden funktionieren. Wir werden es vorerst so machen. Und das ist völlig in Ordnung. Und dann am Ende,
denn was wir tun werden, ist, dass wir das nur in sich selbst nennen werden. Wir rufen das ein anderes Mal an. Das wäre also, dies ist die Start-Co-Routine-Methode. Und im Inneren nennen wir einfach Gebäude Cashflow-Gebäude. Und genau diese Sache, die wir auch hier reinlegen wollen. Das ist also ein Mono-Verhalten. Das ist natürlich ein Neubau. Jetzt das Ego. Was ist eine Co-Routine Art in dem, was wir sagen? Also die Idee einer Koroutine ist, dass wir dies gesehen haben, die Aufrufmethode zu vorher. Das war Teil des Modellverhaltens. Und die Invoke-Methode erlaubte es uns,
eine bestimmte Methode sozusagen alle x Sekunden eine bestimmte Anzahl von Malenaufzurufen ,
eine bestimmte Methode sozusagen alle x Sekunden eine bestimmte Anzahl von Malen . Und die Koroutine ist etwas sehr Ähnliches. Anstelle einer Co-Routine, wenn es eine Art ist, können
Sie denken, dass dies eine Art asynchrone Methode , die für eine bestimmte Sekunde warten kann. Und dann können wir auch, wenn wir nur einen Blick auf diese Ausbeute wieder neues Gewicht für Ende des Rahmens fixiert Update. Wir können warten, bis wir eine Weile warten und dann auch mit Sekunden in Echtzeit. Es gibt also ein paar Dinge, die wir damit machen können. Sofort. Wir werden es nur im Grunde verwenden, zwei werden unseren Cashflow generieren. Dies ist auch etwas, das innerhalb des Gebäudes selbst getan werden könnte. So können wir diesen verschütteten Cashflow innerhalb des Gebäudes selbst hinzufügen und dort begonnen haben. Im Moment haben wir hier hinzugefügt, und ich denke, das wird auch in Ordnung sein. Wir werden auch eine Debug-Punkt-Protokollwarnung machen. Kann nicht bauen, weil kein Käse. Das ist also nur eine kleine Nachricht hier. Wir wissen, dass wir dieses Gebäude nicht wirklich bauen können. Insgesamt glaube ich, dass dies im Grunde alles
sein sollte , was wir tun müssen, um dieses Gebäude zu bauen. Nun, es gibt noch ein paar Dinge, die wir hinzufügen müssen. Also Nummer eins, natürlich müssen wir das die Instanz hier hinzufügen. Sie in unserem Ergebnis einen neuen Clicker hinzu. Also, genau hier, werden wir einen neuen Clicker hinzufügen. Dies ist das einzige Mal, dass wir diesen neuen Clicker tatsächlich hier nennen werden. Und dann wollen wir dies mit bestimmten Kosten,
Käsegewinn und einem Zeitintervall hinzufügen . Also lassen Sie uns einfach sagen, dass dies 10 kostet und es wird einen neuen Käse pro Sekunde gewinnen. Das bedeutet also in diesem Fall. Die Kosten sind also 10. 10, wir haben die Verstärkung wäre eine pro Sekunde pro 1 Sekunde. Lass es uns einfach so machen. Ja, sie gehen. Und natürlich ist dies anpassbar. Sie können darüber nachdenken, weil
dies natürlich für das Gleichgewicht angepasst werden muss, zum Beispiel, richtig? Wenn Sie mehrere Gebäude haben, dann wollen sie vielleicht anders gegossen und ihr Gewinn könnte auch anders sein. Und das ist im Grunde, wo Sie, in unserem Fall hier, die Art, wie ich es gebaut habe und wie Sie es wahrscheinlich bauen werden. So machen wir es hier. Natürlich gibt es noch einmal eine Million Möglichkeiten, dies zu tun. Und es gibt noch eine letzte Sache, die wir tun müssen, denn Moment bekommen wir nur die Kosten und wir ändern sie nicht. Es gibt also mehrere Möglichkeiten, das zu tun. Wir können entweder sagen, nun, wir können es hier ändern, oder wir könnten eine andere Methode haben. Machen wir eigentlich folgendes. Lassen Sie uns tatsächlich einen privaten int hinzufügen, sondern auf diese Weise, da gehen Sie. Private Kosten. Ja, genau. Und dann werden wir, anstatt dass ein Gebäude die Kosten hier ändert,
tatsächlich können wir die Konstante ändern, das ist in Ordnung. Wir werden diese Eigenschaft ein bisschen ändern. Das wird also eine Rückgabe von Kosten sein, richtig? Also werden wir hier nur einen Preis zurückgeben. Und nur die Einstellung, was wir tun werden, ist, dass wir sagen, Kosten gleich Wert. Das ist also nur so, dass wir hier eine zusätzliche private Variable haben. Und dann können wir das im Grunde ändern. Was wir also tun können, ist jetzt hier eine neue Methode hinzuzufügen, die öffentlich sein wird, öffentliche Ganzzahl, Kosten bekommt und Kosten erhöht. Nennen wir es einfach so. Das ist in Ordnung. Also, was wir tun werden, ist, dass wir die Kosten gleich den tatsächlichen Kosten hier haben und das nachher zurückgeben. Und genau, also speichern wir das im Grunde, bevor wir es erhöhen. Dann werden wir sagen, wir können sagen, dass Kosten gleich sind, wir können einfach sagen, mal gleich dem tatsächlichen Modifikator, Modifikator. Sie gehen, richtig. Und wenn wir das nennen, bekommen
wir beide die Kosten und es steigt auch. Also lassen Sie uns dies innerhalb der Lagerung in einer Art Käselagerung statt hier tun, sagen Sie
einfach, entfernen Sie Käse durch die Zeiten der Kosten. Wir werden eigentlich Zeit sagen, Kosten
bekommen und Kosten erhöhen. Richtig? Wie Sie sehen können, geht hier eine Menge Dinge vor sich. Es ist ziemlich viel,
aber einen Schritt nach dem anderen, und ich denke, das wird gut. Also für jetzt, was wir tun werden, ist, dass wir einfach eine,
eine Eingabe hinzufügen , wo wir im Grunde dieses Gebäude bauen können. Und dann werden wir ein neues Spielobjekt machen, das wir können, können wir klicken. Aber jetzt lassen Sie uns einfach einen grundlegenden Schlüsselcode hinzufügen. Das wäre also Keycode. Sehen wir, sagen wir für Clicker natürlich. Und wenn wir das drücken, wollen wir dann passieren? Nun, wir wollen, dass das gebaut wird, ein Gebäude im Grunde genannt wird, und dann brauchen wir ein Gebäude dort. Okay, lass mich darüber nachdenken. Woher kriegen wir dieses Gebäude? Nun, wir haben hier eine Liste von Gebäuden, oder? Und dann fügen wir hinzu, und das ist öffentlich statisch. Also theoretisch, wenn wir darüber nachdenken, sollten
wir in der Lage sein, auf diese Liste aller Instanzen zuzugreifen. Und wir wissen, dass der Clicker jetzt die erste Instanz ist. Dies wäre also einfach oder das erste Gebäude in dieser Liste. Dies sollte also machbar sein, indem man ein Gebäude macht. Das ist also der Klassenpunkt. Und dann haben wir Bauinstanzen. Das ist die Liste. Und dann nur das bei Index 0 bekommen. Dies wird also genau diese Klasse hier zurückgeben, die wir erstellt haben. Und wenn alles funktioniert, dann ist das der Klicker und die Kosten werden, na ja, zehn sein. Wenn wir diese zehn Käse haben, bauen wir ihn. Und dann wird es das entfernen, die Kosten für dieses Gebäude
erhöhen. Wir werden das in unsere Liste der Gebäude aufnehmen. Und dann werden wir auch die Cashflow-Co-Routine starten, die jede Sekunde in unserem Fall laufen wird. Hoffen wir, dass das tatsächlich funktioniert und das tut, was wir tun wollten. Es gibt viele Dinge wie viele ineinandergreifende Teile in diesem Fall. Und ja, ich schätze, wir können es einfach anfangen und das ausprobieren. Das erste, was wir tun, ist natürlich, dass wir jetzt einen 0 Käse haben. Und wenn ich die C-Taste drücke, würden wir erwarten, zu sagen, Hey, ich kann kein Gebäude bauen, weil ich nicht genug Käse habe. Also lassen Sie uns sehen und können nicht bauen, weil Knoten Käse. Das ist also ziemlich gut und sie ist auch nicht von alleine zu erhöhen. Also kann ich jetzt die Plus-Taste drücken und mir zehn Käse hier besorgen. Und jetzt ist das große Ding, funktioniert es oder funktioniert es nicht? Also drücke ich C und gut, es verringerte die Anzahl der Käse, die wir haben. Und wie Sie jetzt sehen können, wächst
unser Käse jede Sekunde um eins. Nun, das Tolle ist, dass verdienen vor diesem. Nun, das ist eigentlich einfach, unseren zehn Jesus wieder mit dem Minusschlüssel zu entfernen. Und wenn ich jetzt wieder sehe, wie Sie zwei sehen können, also habe ich jetzt noch nicht genug Geld oder genug Käse jetzt mit zehn, sollte ich genug haben. Aber wie Sie sehen können, funktioniert es nicht, weil ich unser erhöhtes Recht modifiziere, also kostet es jetzt 20 Käse und wenn ich es jetzt drücke, wie Sie sehen können, hat es es gebaut und jetzt kommen wir tatsächlich zu Käse pro Sekunde, denn jetzt haben wir zwei von diese Klicker, klicken Sie jede Sekunde. Jeder von uns bekommt uns im Grunde einen Käse pro Sekunde, oder? Das ist großartig. Das hat tatsächlich funktioniert. Ich meine, völlig in Ordnung. Wie Sie sehr deutlich sehen können, können
wir mehrere Gebäude desselben Typs haben. Und jetzt fügen Sie ein Gebäude hinzu, und das ist im Grunde eines
der wichtigsten Dinge, wenn Sie so etwas tun, müssen
Sie immer über Ihre Fähigkeit nachdenken mehr von den Dingen
hinzuzufügen, die Sie hinzufügen möchten , richtig? Das übliche Problem könnte also sein, nun, wir könnten das verrückt kompliziert machen. Und für einige von ihnen, für einige der Ideen. Wenn du das beim ersten Mal siehst, bist du vielleicht so, Wow, das ist wirklich viel auf einmal und ich bin nicht einverstanden. Es kann viel am Anfang sein. Aber Schritt für Schritt, wenn Sie an jeden der einzelnen Teile denken ,
die nicht so kompliziert sind, nur um zusammenzufassen, können
sie etwas schaffen, das eigentlich ziemlich komplex ist. Und ja. Nun, wie würden Sie ein neues Gebäude hinzufügen, wenn Sie zu diesem Zeitpunkt
wären, wie würden Sie ein Gebäude hinzufügen? Nun, du brauchst hier nur eine neue Klasse, oder? Also können wir das eigentlich nur um des Arguments willen tun, nur damit, wenn man diesen Boden mit grundlegenden Dingen eingerichtet hat, wie einfach es sein könnte, ein Gebäude hinzuzufügen. Also lasst uns ein neues Gebäude bauen und wir nennen das die Melkstation. Weil ich das meine, das ist es, was ich mir ausgedacht habe. Ich schätze, das ist die beste Erklärung, die ich habe. Dies ist natürlich wieder einmal innerhalb der Gebäude Namensraum und dies wird ein Gebäude sein. Und das Tolle ist jetzt, dass wir irgendwie nur den Klicker hier, nur für einen Moment. Das wird natürlich die Baustation hier sein. Und der Cashflow, im Grunde genau das gleiche, aber vielleicht wollen wir eine andere Anzahl von Käse oder das ist auch eine interessante Sache. Ich habe hier einen hinzugefügt. Das sollte eigentlich dieser Punkt sein. Sie hat gewonnen. Es ist nicht so, als ob das kein Problem ist, auf das man stoßen kann, aber das ist in Ordnung. Und dann im Inneren von hier, werden
wir das gleiche tun, diese.tab Käse Gewinn. Und das war's schon. Also das ist Nummer eins, Schritt 1, Schritt 2,
fügen Sie dies hier hinzu, damit wir dies kopieren und sagen können Melkstation. Und dann müssen wir nur wissen, okay, wie viel es kosten wird, wie viel werden wir pro Sekunde bekommen? Nehmen wir an, das kostet 25. Und in diesem Fall, was wir bekommen, ist, sagen wir, wir werden fünf Käse bekommen, aber nur alle zwei Sekunden. Dann können wir sagen, die Kosten sind 25 bis 50, fünf Käse alle zwei Sekunden. Das ist natürlich im ersten Fall ein besserer Wert im Vergleich zum Clicker. Aber ja, das ist ziemlich gut. Aber natürlich müssen Sie bis zu 25 Käse, um es zu bauen. Theoretisch. Wenn wir jetzt eine neue Art von Schlüssel hinzufügen, dass, so dass wir es bauen können. Also lasst uns einfach mal hier machen. Jetzt wissen wir, dass die Instanz gibt es eine. Dies könnte natürlich auch ein sein, das könnte auch ein Wörterbuch sein, oder? Wo Sie, anstatt es mit dem Inneren,
mit den Indizes zu tun , können Sie dies mit einer Enumeration tun. Sie hätten also die Enumeration eines Gebäudes und haben jedes der Gebäude darin und könnten auf sie zugreifen, so dass dies alles funktionieren würde. Im Grunde dieselbe Idee. Wenn ich also auf M klicke, würde
ich mir vorstellen, dass es jetzt
eine Melkstation baut . Richtig. Mal sehen, ob wir das tatsächlich erledigen können. Und ja, das war es, um das eigentliche neue Gebäude hinzuzufügen. Wenn Sie möchten,
dass besondere Dinge mit diesem speziellen Gebäude passieren , dann ist es ein bisschen komplizierter. Aber im Moment sollte das funktionieren. Mal sehen, ob das tatsächlich funktioniert. Also zuerst, wenn
ich die M-Taste drücke , habe ich nicht genug Käse dafür. Also lassen Sie uns 30 Käse und dann werde
ich drücken, die leere Menge hat 25 subtrahiert. Sie ist, und wie Sie sehen können, kriegen wir jetzt
alle zwei Sekunden fünf Käse. Das funktioniert also auch perfekt. Und das ist wirklich nett. Jetzt haben wir natürlich noch keine visuellen Indikatoren. Wir haben nicht wirklich eine Benutzeroberfläche, weil wir es nicht wirklich sind, wir haben nicht wirklich über die Benutzeroberfläche gesprochen. Wir können darüber nachdenken, nur eine Art einfachen Text hinzuzufügen, weil wir das Hinzufügen der einfachen Texte gesehen haben, das würde funktionieren. Aber insgesamt funktioniert das schon. Also, wenn ich jetzt ein paar Male wahrnehme,
jetzt funktioniert es nicht mehr, denn jetzt kostet es mich eigentlich wie 80 Ich denke schon, weil ich zu viele gebaut habe. Und jetzt, wie Sie sehen können, kommt der Käse
einfach so rein , ohne überhaupt etwas anderes zu tun. Das ist also ziemlich nett, das ist ziemlich gut. Und ja, das wäre es für den Vortrag, wie man Gebäude hinzufügt. Wieder einmal ist dies eine Art der Art, wie Sie es tun können. Ich meine, es gibt wahrscheinlich 1000 andere Möglichkeiten, wie du es tun kannst. Aber ich bin eigentlich ziemlich glücklich, weil das sehr erweiterbar ist. Und Sie können das erweitern. Natürlich gibt es wenige Dinge, die Sie hinzufügen können, vor allem ein mehr oder ein paar mehr Gebäude auf eigene Faust. Aber ja, das war es für diesen Vortrag. nächste Mal werden wir ein GameObject hinzufügen das wir klicken können, um im Grunde unsere Gebäude zu bauen. Und das ist etwas, was wir später auf der Strecke sind. Ich werde mich dann in eine Benutzeroberfläche verwandeln. Also werden wir hier ein paar Dinge hinzufügen. Nächste Vorlesung. Und ja, aber das war es für diesen Vortrag. Ich hoffe, Sie fanden es nützlich, wenn es einige Punkte gibt, an denen dies ein
wenig verwirrend war , weil wir von Klasse zu Klasse ein wenig herumgesprungen sind und so weiter. Dann fühlen Sie sich frei, Nummer eins, ich würde zuerst sagen, wissen
Sie, was sollte noch einmal, vielleicht ein wenig darüber nachdenken. Sieh dir die Klasse an. Wenn Sie es herunterladen oder gleichzeitig programmiert haben,
dann schauen Sie sich vielleicht ein wenig an,
versuchen Sie, jeden dieser Schritte und jede der Methoden, die
wir implementiert haben, zu verstehen und darüber nachzudenken. Und wenn Fragen bleiben, natürlich, fühlen Sie sich frei, zu fragen, und ich werde sicher sein, zu antworten. Und ja.
69. (Cheese Erstellung einer Grundlegende UI: In Ordnung, lassen Sie uns mit dem Käseklicker hier für den Einheitskurs fortfahren. In dieser Vorlesung werden wir eine sehr einfache Benutzeroberfläche hinzufügen, sowie die Möglichkeit, die Gebäude über einen Klick auf ein Spielobjekt hinzuzufügen. Und diese Spielobjekte werden UI-Elemente sein, hauptsächlich Schaltflächen. Und sie werden gut dann nur so funktionieren , wo wir jedes von ihnen für jedes der Gebäude, die wir haben, klicken können. Und sie werden dann im Grunde in einem Gebäude laichen. Und sie werden sich auch ändern. So wird, sie werden im Grunde die Kosten anzeigen und auch, wie viele Gebäude es gibt, jeder bestimmte Typ. Und wir werden auch einen Text haben, der anzeigt, wie viel Käse wir im aktuellen Moment haben. Also im Grunde h, er ist Zähler, man könnte sagen, zuerst, wir wollen den Käse, Käse Lagerung UI. Also persönlich beende ich meine UI-Skripte immer mit UI. Und dann am Anfang, was immer sie sind. Und das wird Käse Decker Sie sein, ich natürlich, wie in Bezug auf den Namespace, werden
wir auch Unity Engine dot IM dafür verwenden. Das erste, was wir brauchen, ist ein privater Text. Halten Sie Käse. Sagen wir einfach, sehen Sie, ich kann Speichertexte erreichen. Da gehst du. Das ist ein, das ist ein Bissen, ein Sprung. Und das wird einfach sein, während sie hier reingekommen sind. Dies wird also sein, wenn Käsespeichertext null ist, dann werden wir einfach den Speicher setzen, der mit diesem Punkt verknüpft ist, um Komponententext zu erhalten. Also werden wir die Get Komponente für dieses Skript selbst verwenden. Und dann erhält es einfach die Komponente
des Spielobjekts vom Typ Text, an das dieses bestimmte Skript angehängt ist. Und dann werden wir auf Käselagerung Punkt auf Käsemenge gehen. Also hat sie sich verändert. Das ist also die Idee. Wenn sich der Käse
ändert, werden wir eine bestimmte Methode nennen. Dies wird nur die Zahlenmethode ändern. Das wird es nennen. Wir brauchen nicht die Update-Methode hier auf diesem Förderband private void. Ändern Sie eine Zahl mit einem neuen Betrag, weil dies genau das ist die Methode Signatur, die wir für die Käsemenge der Änderung Delegierten hier
benötigen. Und was dies einfach tun wird, ist, dass es die Käsespeicher-Texte erhalten wird, Texte gleich einem neuen Betrag, der toString ist. Also werden wir einfach den Text hier jedes Mal ändern, wenn sich der Käse ändert. Deshalb habe ich gesagt, dass dies eine gute Idee ist,
jene Ereignisse hinzuzufügen , die man nie kennt, wann man sie braucht. Natürlich können Sie sie auch später in der Zeile hinzufügen. In diesem Fall wird
das jedoch in Ordnung sein. Lassen Sie uns darüber nachdenken, indem Sie hier ein UI-Element hinzufügen. also mit der rechten Maustaste in unsere Hierarchie-UI und dann auf einen Text. Dann müssen wir natürlich die Leinwand noch einmal ändern, um den Bildschirm Raum Kamera und ziehen Sie die Hauptkamera hier rüber. Und dann ist unser Text unten. Sie sind sehr klein und wir werden es etwas größer machen. Und dann machen Sie es auch den eigentlichen Text ein bisschen größer, so etwas wie vielleicht 50. Ah, das ist viel zu klein. A 120, ich liebe es. Und wir werden eigentlich zwei Texte haben, also werden wir diese Kontrolle D duplizieren. Dies wird das Käseetikett sein, sagen wir. Und das wird nur Käse sein. Und dann der andere ist der Käsevorratungstext. Ja, das ist in Ordnung. Es wird vorerst eine 0 sein. Und dann werden wir das auch ein bisschen schöner aussehend machen. Also werden wir so etwas tun. Dies ist der Käsetext. Da gehst du. Und dann kann dieser auch etwas kleiner sein. Sie gehen, richtig? Also, jetzt haben wir das. Wir werden beide auch weiß machen, nur damit wir das ein bisschen besser sehen können. Ja, ich denke, das ist in Ordnung. Und dann, wenn das ja wäre, so funktioniert das ziemlich gut. Und für diese C-Käsespeichertexte werden
wir einfach das UI-Skript hinzufügen, das wir hier erstellt haben. Da gehst du. Ist das nicht Befürworter? Nun, sehen Sie das Ego. Es öffnet immer das Material. Sie sind irgendwie irgendwie Lärm. Okay. Sie ist Speicher für mich jetzt da drauf. Und das sollte eigentlich schon gut funktionieren, weil wir dieses Ereignis hinzugefügt haben. Und da dies über die Veranstaltung funktioniert, sollte
alles sofort funktionieren. Dies ist, wie ich sagte, die Delegierten auf den Ereignissen wirklich nützlich für die Erweiterbarkeit Ihres Projekts. Das Hinzufügen war also ziemlich einfach. Mal sehen, ob das tatsächlich funktioniert. Also, wenn ich darauf klicke, wie Sie sehen können, erhöht
es sich auf zwei. Ich kann auch betrügen. Wenn ich also das Plus und das Negative drücke, funktioniert das auch. Und wenn ich jetzt zum Beispiel einen Clicker
hinzufügen würde, indem ich C drücke, wird dies subtrahieren. Und jetzt jede Sekunde wird es auch Ihre aktualisieren. Und das ist viel besser, als dies in einer
Art Update-Methode zu haben , bei der es jeden Frame überprüft. Weil wir die Benutzeroberfläche nicht jedes Frame ändern müssen, da es nicht jeden Frame ändert. Und das ist eine Art Idee, warum diese Ereignisse, das Ereignis, ein heikles System in diesem Fall, alles andere als unglaublich überlegen sind, was wir in diesem Fall umsetzen könnten. Richtig? Und jetzt wollen wir im Grunde Objekte spielen, auf die wir klicken können,
anstatt C zu drücken und M zu drücken, um neue Gebäude zu erstellen, die Sie schreiben, wir werden tatsächlich eine echte Benutzeroberfläche dafür in diesem Fall erstellen. Also werde ich etwas in
die Zukunft von dem nehmen , was wir ein wenig später sehen werden. Einige dieser Dinge sind vielleicht nicht zu 100 Prozent verständlich,
aber ich versuche, sie so am besten zu erklären, wie ich mitmache. Das erste, was wir wollen, ist, dass wir etwas wollen, das eine Building UI genannt wird. Also wird dieses Gebäude UI im Grunde die Klasse sein, die irgendwie wird, dies wird sicherstellen, dass wir wissen, okay, Welche Art von Gebäuden haben wir und können bauen? Und es wird auch aktivieren und deaktivieren bestimmte Dinge basierend auf den Kosten gebaut werden. Dafür haben wir Knöpfe. Es gibt also einen sehr einfachen Weg, das zu tun. Wir werden etwas zu unserer Leinwand hinzufügen. Also klicken Sie mit der rechten Maustaste auf UI und dann werden wir ein Panel hier unten hinzufügen. Das Panel ist nur eine Art Hintergrund und wir werden das hier zur Seite hinzufügen. Ich mag das. Und dann müssen wir zu diesem Panel. Wir werden verrückt genug
ein weiteres Panel hinzufügen und das hier ein bisschen kleiner machen. Also denke ich, dass das gut ist. Das wäre die Gebäudeplatte. Und das ist dann eine Bauplatte. Dies ist also die Platte eines bestimmten Gebäudes in diesem Fall. Und wir werden hier auch ein paar Vermögenswerte hinzufügen. Also habe ich einen Klicker, ich habe eine Kuh für die Melkstation, und ich habe auch ein Fass für etwas anderes, das wir vielleicht hinzufügen möchten. Das sind also die Fässer, mal sehen wir hier. Also haben wir die Fässer, die wir eigentlich etwa 500 Pixel hier wollen, so dass sie auch ein bisschen kleiner sind, natürlich nicht bi-linear elektronisch,
fein, ich denke, das sind groß genug. Die Kuh und der Klicker. Das Clicker-Konto sollte also 150 sein. Und lassen Sie uns es auch linear halten, denn es ist ziemlich groß und der Klicker, der 250 ist und das ist definitiv Punkt. Keine Kompression. Ja. So können wir jetzt irgendwie darüber nachdenken. Okay, das ist ein Panel für ein bestimmtes Gebäude. Und wir können uns das auch als einen Knopf vorstellen. Also wollen wir im Grunde eine Schaltfläche machen, auf die wir klicken können und dann diese gut gebaut oder bauen lassen, wenn dies möglich ist. Im Moment ist dies nur ein Panel, aber wir können einfach zu Komponente hinzufügen gehen, zu Ihrem Auge
gehen und eine Schaltfläche hinzufügen. Und jetzt wäre das ein Knopf. Und das kann aufheben, etwas Bestimmtes tun. Und das wird alles tun, was wir eigentlich sagen. Aber wir wollen das nicht manuell hinzufügen. Wir möchten dies mit 0 hinzufügen. Wir können nicht manuell, aber wir würden
wahrscheinlich wollen, um dies mit dem eigentlichen Skript hinzufügen. In diesem Fall werden wir das manuell addieren, also werden wir dieses ein anderes Skript nennen. Also nennen wir dies die Build-UI. Es sind also viele verschiedene Skripte, wieder
einmal, die wir brauchen, Let uns tatsächlich schließen aus ein paar hier
jetzt , weil wir diese im Moment nicht wirklich brauchen. Und diese Build-Benutzeroberfläche wird im Grunde diejenige sein, die bestimmt, okay, was, was hier passiert, welches Gebäude gebaut wird. Und wir können im Grunde so etwas machen. Wir können das im Grunde ausprobieren. Machen wir eigentlich folgendes. Also lasst uns das machen. Wir können einfach sagen, öffentlich, leere Build. Und das wird hier einen,
einen bestimmten Index bekommen . Und das wird einfach folgendes tun. Also werden wir hinzufügen, einfach gehen, Käse Lagerung Punkt Instanz sagen. Also werden wir die Instanz der Käselagerung bekommen und dann haben wir das Gebäude hier. Und dann müssen wir ihm natürlich ein neues Gebäude geben. Aber wir können das tun, indem wir zuerst hierher
gehen und She Clickerpunkt-Gebäude benutzen. Auch. nur sicher, dass dies unter UI ist, so dass wir alles ordentlich und ordentlich haben. Und dann drinnen können wir einfach ein Gebäude sagen. Punkt-Gebäudeinstanzen. Index, sie gehen. So können wir einen bestimmten Index eines Gebäudes angeben, das innerhalb der Schlüsselspeicherinstanz erstellt werden
soll. Das ist also genau das Gleiche. Wenn wir uns unsere Käselagerung ansehen, sobald diese neu geladen wurde, können
wir sehen, dass genau das ist, was wir hier getan haben. Also haben wir das gerade in einem anderen Skript aufgerufen. Das ist alles, was wir getan haben. Und dann auch die Bauinstanzen, die, das ist eigentlich alles, was wir hier wirklich tun. Und wir machen das mit diesem speziellen Panel. Also und dann, was wir tun, ist, dass wir diese Build-UI zu diesem Panel hier hinzugefügt. Sobald dies tatsächlich hinzugefügt wird, Mal sehen. Da gehst du. Jetzt ist es hier. Und dann können wir tun, ist diese onclick Art von Feld hier. Wenn wir dieses Plus drücken, dann können wir sagen, dann können wir uns diesen ansehen und dort auf diesen Punkt klicken und sagen:
Nun, ich möchte, dass dies die Gebäude-UI ist. Und jetzt onclick, und dann wird
die Building UI ausgeführt werden oder etwas dann dort. Und wie Sie sehen können, und wir haben das eigentlich nicht, weil ich natürlich, weil wir die Building UI nicht wirklich machen können, wir tatsächlich, was irgendwie seltsam ist, müssen wir uns tatsächlich hinzufügen. Also müssen wir eigentlich diese Bauplatte nehmen und sie
hierher ziehen , so dass jetzt die Bauplatten da drin sind. Und dann, wenn wir hier schauen, die Build-UI, und dann mit einer bestimmten Ganzzahl gebaut, in diesem Fall ist 0 genau richtig, weil der erste der Clicker sein wird. Und jetzt werden wir das ein bisschen optisch ansprechender machen. Also werden wir hier ein paar Dinge hinzufügen. Zunächst einmal klicken Sie mit der rechten Maustaste auf den Text der Gebäudepanel-Benutzeroberfläche, wodurch dieser hier etwas größer wird. Und dann sagen wir Schriftgröße 50. Ja, das klingt ziemlich richtig. Lass es uns ein bisschen größer machen. 70, das ist in Ordnung. Das wird der Klicker sein. Und lassen Sie uns auch diese Art von hier zentrieren. Wir könnten zum Beispiel auch die Höhe der Kosten hinzufügen, sozusagen. Aber jetzt, lassen Sie uns eigentlich einfach
den Clicker für jetzt hinzufügen , so dass wir etwas haben, das wir klicken können. Und lassen Sie uns auch ein schönes kleines Bild hinzufügen. Das ist also hier Bild. Und wir können das etwas größer machen. Wir können es irgendwie skalieren. alt drücken, können wir es von der Mitte aus skalieren. Und dann drücke ich die Schicht. Wir können machen, dass die spezifische Was würden Sie sagen Auflösung Sticks und fügen Sie das Bild hier. Wir können eigentlich Sprite sagen. Also können wir einfach den Klicker nehmen, ihn dort
reinlegen, und sie gehen. Jetzt haben wir das als netten kleinen MANN, den wir anklicken können. Und sobald wir darauf klicken, sollten
wir einen neuen Clicker erstellen. Mal sehen, ob das eigentlich alles ist, was wir tun müssen. Aber ich bin eigentlich ziemlich sicher, dass wir, dass dies jetzt bauen UI. Und ja, also lasst uns das ausprobieren. Das sollte also schon funktionieren. Also, wenn ich hier anklicke, sollten
wir uns holen, ich habe nicht genug Käse. Wie Sie sehen können, gepaart mit keinem Käse. Lasst uns eigentlich zehn Käse betrügen. Und wenn ich noch einmal darauf klicke, sollten wir sehen, dass der Käse abgezogen wird. Und dann hat der Klicker das Ziel gebaut und es funktioniert. Nun, das ist ziemlich cool. Das funktioniert eigentlich schon. Nun, der Weg und das ist, das ist ziemlich cool. Wie ich schon sagte, wir können jetzt noch ein paar Dinge hinzufügen. Also lasst uns eigentlich, lassen Sie uns das ein bisschen nach oben bewegen und dann ein paar weitere Text hier hinzufügen. Also der erste Text, den wir tatsächlich gehen, lassen Sie uns einfach den Clicker kopieren. Also noch einmal, wenn Sie dies auswählen und eine D2 steuern, kopieren Sie dies einfach. Machen wir hier eine wie eine große Zahl. Dies wird die Anzahl der Klicker sein, die wir haben. Das wäre also das, sagen
wir Nummern, Nummern,
Gebäude, Hemdnummerngebäude. Warum nicht? Dann wäre das das Namensschild „Ich baue“. Stellen Sie also immer sicher, dass Sie hier einen richtigen Namen haben. Denn wenn man sich das vielleicht ein wenig später anschaut, dann wirst du sagen, was war das? Dies ist das Gebäudebild. Das ist die Zahl, die diese 0 baut. Und lasst uns das ein bisschen größer machen. Also lasst uns das wie eine 100 machen. Ja, das ist großartig. Wie 100 000, um sicherzustellen, dass das nicht verschwindet. Und dann können wir auch Kosten hinzufügen. Das wäre also noch einmal, dieses Jahr
kopieren, wir duplizieren ein nach D. Das wäre dann die Kosten. Und lassen Sie uns einfach auch 0 hinzufügen. Lasst uns eigentlich zehn. Das sind die Kosten, die wir kennen. Noch. Lasst es uns vorerst so behalten. Das, wie ich schon sagte,
es sieht nicht wie verrückt cool aus, oder, weißt
du, wir haben noch keine Etiketten drauf. Aber das wird gut. Lassen Sie uns dann in den Augen unseres Assets-Ordners, fügen Sie einen neuen Ordner namens prefabs. Jetzt haben wir das schon gesehen, denn was wir jetzt tun werden ist, dass wir hier ein Prefab dieser Bauplatte machen werden. Also werden wir einfach schnell dort drüben die Ego-Bauplatte gefahren. Und das Tolle daran ist, dass wir das jetzt einfach wieder hier hinzufügen können. Also und wir haben das zweimal. Dies wäre übrigens der Clicker Gebäudepanel. Und das ist jetzt die Melkbauplatte. Lassen Sie uns das Melkfeld ein
wenig nach unten bewegen und die Dinge ändern, die wir hier ändern müssen. Also das erste, was wir ändern wollen, ist, dass das Bild, natürlich. Das wird also die Kuh sein. Jetzt, seit dem Klicker hier, werden wir die Kuh haben. Ich meine, das ist nicht so erstaunlich. Und statt des Namens hier, werden
wir die Melkstation haben. Das ist also ein bisschen groß, also erhöhen wir die Größe hier ein wenig. Und das Ziel, die Kosten werden auch bei 25 beginnen. Und jetzt sind wir irgendwie, irgendwie ist das das, das ist der wahre Punkt hier. Wir müssen die einzelnen Dinge da drinnen ändern. Und wie machen wir das? Nun, wir werden dies mit dieser Building UI tun, die wir bereits erstellt, aber noch nicht verwendet haben. Und das noch einmal, wie gesagt, ist vielleicht etwas komplizierter. Lassen Sie uns zuerst UI hier tun, so dass wir dies innerhalb des richtigen Namespace haben. Und ja, lasst uns einfach anfangen und ich werde es erklären, wie wir weitergehen. Also zuerst haben wir ein Wörterbuch des Bauens. müssen wir eigentlich. Verwenden Sie diesen Namespace auch. Das wird also so sein, dass sie aus Gebäuden flackert hat. Und das wird ein Wörterbuch vom Aufbau zu GameObject sein. Und das wird Bill Sache im Grunde bauen , während der Bau zu Bauplatte. Nennen wir es so. Ja, das ist in Ordnung. Wir werden dies innerhalb der Startmethode mit einem neuen Wörterbuch initialisieren. Das ist also sehr gut leicht gemacht. Und dann lasst uns darüber nachdenken. Also haben wir jetzt ein Wörterbuch. Wir können im Grunde eine Veränderung. Ein paar Dinge hier. Warum brauchen wir Wörterbuch? Nun, die Idee ist, dass wir ein bestimmtes Gebäude haben werden, dasein bestimmtes Panelist ein bestimmtes Panel auf
das geklickt wird und das mit dem Gebäude verbunden ist. Wir können den Verein im Grunde auch umgekehrt haben. In unserem Fall bin ich eigentlich nicht hundertprozentig sicher, dass wir das noch brauchen, aber es ist gut, das hier schon zu haben. Und mal sehen, int I ist gleich 0. Ich ist gleich transform.py Kinderzahl. Also werden wir tatsächlich die Kinder zählen. Und dann, was wir tun werden, ist, dass wir Gebäude Panel sehen, ein Panel hinzufügen. Und wir werden sehen, wie Gebäude Punkt-Instanzen bauen. Ich ist gleich dem Kind transform.py von I dot GameObject. Jetzt mag das absolut verrückt erscheinen, was wir hier tun. Aber die eigentliche Idee dessen, was wir tun, ist, dass
wir die Anzahl der Kinder durchlaufen, die dieses bestimmte Spielobjekt hat, und dann fügen wir die Instanzen hinzu. Dies ist also einfach ein Gebäude aus unseren Gebäude-Instanzen mit dem gleichen, sagen
wir hier Index, dann der untergeordnete Index. Also Idee, dass, wenn wir diese Gebäude-UI zu den tatsächlichen Gebäuden hinzufügen, sie gehen zu diesem tatsächlichen Gebäude Panel. Und wir können denken, nun, es sind Kinder wieder, die Clickerbauplatte und die Melkbauplatte. Das sind also die Kinder, das Kind 0. Das ist Kind eins. Okay. Dass ich hoffentlich irgendwie verstehe. Und diese werden dann einfach
mit dem Gebäude innerhalb unserer Gebäudeinstanzliste verknüpft . Also ja, und jetzt, wenn wir hierher zurückgehen, ist das einfach in diesem Wörterbuch gespeichert. Und das ist wirklich alles, was es gibt. Und was wir hier anfangs tun werden, ist dass
wir das noch ein Mal durchmachen werden. Also werden wir 0 sagen, ich ist kleiner als. Und jetzt gehen wir durch die Gebäudeinstanzen zählen hier. Was sein sollte, so in der Theorie, sollte
diese Zählung und diese Zählung immer
gleich sein , weil wir für jedes Gebäude immer eine andere Platte haben. Und für jedes Panel haben
wir natürlich ein Gebäude, das damit verbunden ist. Und wir können dann im Grunde tatsächlich dann könnten wir das genauso gut durch die Verschüttung gehen, oder? So. Wir können das kriegen. Und dann mit den Klammern kann sagen, okay, lassen Sie mich die Instanzen ich bekommen. Also warum ist das so ein verrücktes Konstrukt? Nun, wir müssen dem das eigentliche Gebäude geben, das damit verbunden ist. Es gibt ein Wörterbuch. Wir müssen ihm ein Gebäude geben. Und dann erhalten wir ein bestimmtes Zielobjekt zurück. Also werden wir tatsächlich das Spielobjekt zurückbekommen, das Panel selbst, und dieses Panel, wir müssen die Komponente eines Knopfes bekommen, richtig? Und dann werden wir tun, ist, dass wir sagen, die Schaltfläche natürlich,
erfordert Unity-Engine, mit Unity-Engine, die UI es. Und diese Schaltfläche, werden wir einfach sagen, interactable ist gleich falsch. Warum machen wir das jetzt? Ich meine, vor allem auch, wir können es einfach auch in diesem tun. Es ist also nicht so, dass wir es hier tun müssen. Dies ist nur ein Beispiel dafür, wie Sie dann im Grunde auf das Wörterbuch zugreifen würden. Aber ja, warum setzen wir die interaktablen gleich falsch? Nun, damit wir mit dem tatsächlichen Knopf interagieren können. Denn wir sollten nur in der Lage sein, mit diesem Button zu interagieren. Und wenn wir tatsächlich genug Käse auf der Bank haben, richtig? Weil das klug wäre. Die wir haben die Warnung und das ist auch in Ordnung. Aber wäre es nicht toll, wenn wir nur mit dem Knopf interagieren und nur das eigentliche Gebäude
bauen könnten , wenn wir genug Käse in der Bank haben würden. Und das ist im Grunde, was wir hier umsetzen wollen. Also werden wir ein paar Dinge haben, die wir wirklich wollen werden. Also das erste, was ist, dass wir im Grunde das Gebäude Gebäude gebaut haben, so dass auf Gebäude gebaut eher wird
vier zu einem oder eine bestimmte Methode hinzugefügt werden , um dieses Ereignis hinzugefügt werden. Und das wird die aktualisierte Anzahl der Gebäude sein. Das ist also, wir werden diese Methode in Kürze implementieren. Und dann eine andere Methode, die wir wollen, die bis zum Update-Host ist. Diese beiden Dinge werden es im Inneren des Auges aktualisieren. Diese sind bereits innerhalb der Update-Kosten aktualisiert,
vor allem im Inneren der Gebäude selbst bereits aktualisiert. Aber jetzt wollen wir es visuell sehen. Und dann haben wir auch den Käsevorrat drauf, an dem sie sich gewechselt hat. Wenn sich also die Käsemenge ändert, möchten wir vielleicht die Klickfähigkeit aktualisieren. Ich denke, das ist richtig geschrieben. Ich hoffe es. Richtig? sind also drei der Methoden, die wir hier hinzufügen wollten. Also die erste, die Anzahl der Gebäude, können
wir einfach mit der rechten Maustaste auf schnelle Aktionen und dann einfach sagen Generate Methode hier. Da gehen wir. Lassen Sie uns auch diese Methode generieren, und lassen Sie uns diese Methode generieren. Zu guter Letzt. Da gehst du. Und wir haben dies immer mit der richtigen Methodensignatur als auch. Lassen Sie mich das ein wenig umdrehen, denn ich, in meiner Referenz, in meinen Referenzen, habe ich das ein bisschen anders. Also lasst uns eigentlich ganz oben anfangen. Aktualisieren Sie die Anzahl der Gebäude. Nun, wie in der Welt können wir die Anzahl der Gebäude aktualisieren? Das ist genau das, was wir hier haben, oder? Also haben wir dieses Zahlenbau-Textfeld, das wir je nach hinzufügen oder ändern möchten. Viele Gebäude, die von einem bestimmten Typ sind. Wie soll das funktionieren? Lass uns einfach echt sein. Das ist verrückt. Nun, es ist eigentlich nicht so schlimm. Was wir tun werden, ist, dass wir eine foreach-Schleife machen. Und dies für jede Schleife wird durch das Schlüsselwert-Paar gehen. Dies ist genau das, was in einem Wörterbuch hier von Building und GameObject gespeichert ist. Also wollen wir durch die Schlüsselwertpaare gehen. Also Schlüssel-Wert-Paar, wir werden es einfach so
in unseren Gebäuden zu Gebäudeplatten nennen . Also gehen wir durch das Wörterbuch mit einer foreach-Schleife. Und dann werden wir sagen, ob das tatsächliche Schlüsselwertpaar, das wir hier haben, rechts und links Schlüssel dem Gebäude entspricht, in dem wir übergeben. Dann können wir Sachen machen. Nun, wann ist das wahr? Das ist wahr. Also werden wir im Grunde jedes Gebäude durchlaufen. Wir werden alle Panels durchgehen, die wir gerade haben. Wir haben nur zwei Platten, oder? Wir haben also nicht so viele Panels, aber wir haben zwei Panels. Und wir werden sagen, okay, wenn das neue Gebäude, das gebaut wurde, gleich einigen Platten ist. Nehmen wir also an, wir bauen eine neue Melkstation, dann wird es gleich diesem Panel und diesem Panel sein, das
dann sein wird , werden wir Zugang zu diesem Panel haben, genau das. Also haben wir Zugriff auf dieses Panel, indem wir Schlüssel-Wert-Paarwert tun. Weil wir jetzt wissen, okay, das Gebäude, das gebaut wurde, war die Melkstation. Dies ist gleich dem Schlüssel. Deshalb, bam, gehen wir. Und was wir sagen werden, ist transform.py Kind 0. Das ist also eine Menge tatsächlich Komponentententyp Text Punkttext. Und dann werden wir sagen, müssen wir diese Zahl
natürlich bewerten? Also, was wir sagen werden, ist, dass wir hier eine neue Zahl haben, Integer-Zahl. Das ist im Grunde genau das, oder? Was auch immer schon darin geschrieben ist, dass wir es nirgendwo sonst speichern müssen. So, nehmen Sie natürlich Texte an. Ich werde das auch erklären. Also nimmt im Parse einfach eine, eine Zeichenfolge und wandelt sie in eine ganze Zahl um, wenn das eine tatsächliche Ganzzahl ist, richtig? Also statt dieses Textes hier, was wir wollen, ist, dass wir das sein wollen, wir haben eine 0 gespeichert und wir müssen auch vorsichtig mit der tatsächlichen Aya sein. Natürlich. Wir müssen auch vorsichtig mit der tatsächlichen Position dieser Situation sein. Also werden wir das wieder anstelle eines Prefab ändern. Und sagen Sie, okay, die Nummer des Gebäudes ist tatsächlich an der Spitze. Das wäre also ein Kind 0. Dann wird der Labelname Kind 1 sein. Also mit Index eins, dann werden wir die Kosten haben. Und dann wird das Bild am Ende sein. Jetzt ändert sich das Bild nicht. Vielleicht möchten wir, dass sich das Bild irgendwann ändert, aber im Moment ändert sich das Bild nicht. Die einzigen Dinge, die irgendwie veränderbar sind die Kosten für das Gebäude und die Anzahl des Gebäudes. Also werden wir das ändern. Und dann, wie Sie sehen können, hat es tatsächlich auch hier geändert, weil diese beiden GameObjects mit diesem Prefab verknüpft sind. Und sobald wir das Prefab geändert
haben, ändern wir diese auch in Spielobjekte. Okay, lasst uns darüber nachdenken. Also jetzt bekommen wir im Grunde genau das. Das erste Spielobjekt dort. Und die Texte gibt es die Anzahl der ist die Anzahl der Objekte. Von ist gleich der Anzahl der Gebäude, die Art der Unexistenz sind. Und dann werden wir einfach sagen, nun, diese Zahl sollte nur plus gleich eins sein. Also wollen wir sparen, also wollen wir nur diese Zahl um eins erhöhen und dann genau das speichern. Wieder einmal gibt es eine andere Möglichkeit, dies zu tun. Zum Beispiel könnten wir einfach innerhalb eines Gebäudes
eine Variable speichern , wie viele Gebäude eines bestimmten Typs es gibt. Aber das müssen wir nicht wirklich. Das funktioniert auch. Berechnung dieses on the fly funktioniert ebenfalls. Jetzt ist das schon es, das sollte schon funktionieren. Und ich glaube, dass wir das tatsächlich schon sehen sollten. Wenn ich mich nicht irre. Nun, die Sache ist, wir werden immer noch eine tatsächlich nicht implementierte Ausnahme bekommen. Also lasst uns das eigentlich nicht tun. Lassen Sie uns zunächst die Update-Kostenmethode auch hier einholen. Das wird also sehr ähnlich sein. Also lassen Sie uns das eigentlich nur um des Arguments willen kopieren. Dies wird immer noch gleich bleiben. Also ist die if, die if-Anweisung hier die gleiche. Und dann das einzige, was wir hier tun werden, ist der Schlüsselwert Paar Punktwert, transformieren, dot get child. Das
ist natürlich im Grunde die Position bestimmter Dinge hart zu codieren. Denn jetzt haben wir, wenn wir uns das nochmal ansehen, das haben
wir um 012 Uhr. Die Kosten, die wir kennen, liegen bei Position 2. Deshalb müssen wir das Kind dazu bringen. Dies, wie ich sagte, ist in diesem Fall hart codiert, es würde wahrscheinlich ein wenig geben, Sie könnten es ein wenig besser machen. Aber im Moment ist die Erweiterbarkeit hier wirklich, es ist nicht so groß. Ich würde Komponente bekommen. So wollen wir noch einmal an der Text-Komponente des Kostentextes. Und wir werden dies auf building.com dot toString setzen. Also bauen wir nur das Gebäude, das gebaut wurde. Denken Sie daran, dass die Update-Kostenmethode jedes Mal aufgerufen wird, wenn ein Gebäude über das
gebaut wurde , ein Building Building Building Build-Event erstellt wurde. Und diese Update-Kosten haben dann das Gebäude als Parameter. Und wir werden den Text einfach
auf die tatsächlichen Kosten des Gebäudes einstellen , nachdem es gebaut wurde. Nun, was interessant ist, ist, dass wir das tatsächlich nicht auf dem Bau gebaut Ereignis noch
genannt haben . Wir müssen das eigentlich noch tun. Und das geschieht im Inneren des Käselagers genau hier. Also haben wir das Gebäude hier hinzugefügt, aber wir haben das eigentlich noch nicht halten. Und das ist eigentlich so einfach, wie einfach zu sagen, Building dot on building built. Fragezeichen, mit Neubau anrufen. Da gehst du. Das ist alles, was wir tun müssen. Und jetzt ist das auch kalt. Also, das ist eigentlich sehr, sehr nett. Also ja, das war die eingebaute Benutzeroberfläche, die auch perfekt funktioniert hat. Es gibt noch eine Dinge für die Build-Benutzeroberfläche, die wir tatsächlich
ändern müssen , und das ist innerhalb unseres Melkens ein Gebäude Panel. Oh, nein, nein, nein, nein, nein, nicht bewegen, dass du verrückt bist. Sie gehen, wir müssen diese 0 in eine Eins ändern. Natürlich befindet sich die Melkstation bei Index 1 und Knoten bei Index 0. Das ist also irgendwie wichtig. Aber nachdem wir dies getan haben, lassen Sie uns über den Rest der Gebäudebenutzeroberfläche nachdenken. Wir haben folgendes getan. Wenn wir ein Gebäude gebaut haben, rufen
wir die aktualisierte Anzahl der Gebäude an. Das hat gut geklappt. Wir werden auch die Kosten aktualisieren. Und jetzt, last but not least, wollen
wir die Klickbarkeit hier grundsätzlich aktualisieren. Und das wird auch ziemlich einfach sein. Wieder einmal werden wir hier mit einer ForEach-Methode durchgehen. Und in diesem Fall wollen wir eigentlich nicht die if-Anweisung. Das brauchen wir nicht. Wir wollen nur zwei, im Grunde den Wert bekommen und dann im Grunde genau das gleiche tun, was wir hier getan haben, richtig? Das ist also im Grunde das, was wir wollen. Wir wollen die Komponente von GameObject erhalten. Wir können dies tun, indem wir einfach sagen, Nun, Wert Punkt get Component Taste weil wir die Schaltfläche wollen und wir wollen die Untrennbarkeit gut auf wahr ändern, aber nur unter bestimmten Bedingungen. Jetzt können wir denken, was ist die Bedingung? Nun, im Grunde wollen wir das Gebäude selbst sehen. Das wäre also Schlüssel-Wert-Paar Punkt, Ky, Punktkosten. Kleiner oder gleich Käse. Käseaufbewahrung dot instanz dot käse Das ist, ich eigentlich, können wir nicht darauf zugreifen, wie viel Käse wir haben? Ist dies ein, das ist in der Tat ein Leid, Lassen Sie uns hier für einen Moment zur Käselagerung gehen. Lasst uns eigentlich, nur um des Streits willen, das jetzt öffentlich
machen. Es gibt einen einfacheren Weg, dies zu tun. Eigentlich, nein, lass uns das nicht machen. Lass uns das machen. Und lassen Sie uns einfach einen öffentlichen ganzzahligen Käse machen. Dies wird Rückkehr bekommen, Käse zurückgeben. Und das hat in
diesem Moment kein Set , weil wir das eigentlich nicht als Set brauchen. Wir wollen nur dort auf den Käse zugreifen. Also lasst uns das machen. Sie ist, da gehst du. Und jetzt ist das alles großartig und gut, aber wie Sie deutlich sehen können, lassen Sie uns zuerst das testen und dann werden wir ein wenig vom
Code umgestalten , weil wahrscheinlich viele von Ihnen sagen werden, ich meine, ich Schlüssel-
-Wert-Paar, ich weiß nicht, was hier vor sich geht. Ich bin sehr verwirrt. Ich kann das verstehen. Probieren wir das zuerst aus. Wir werden das umgestalten und dann garantiere ich Ihnen, dass es viel mehr bekommen wird. Was wirst du sagen? Klar? Es wird klarer. Da gehst du. Okay. Ich glaube, dass alles hätte erledigt werden sollen. Jetzt ist das immer, weißt
du, mal sehen, ob alles funktioniert. Wenn das tatsächlich machbar ist und mal sehen. Also vor allem, sieht gut aus. Wir können diese nicht anklicken, also ist das wirklich gut, das ist ein gutes Zeichen. Wenn wir nun einen 10 Käse hinzufügen, indem Sie auf das Plus klicken, lassen Sie uns sehen, ob dies anklickbar wird. Nun, wie Sie sehen können, hat es tatsächlich getan. Also hat die Update-Klickbarkeit definitiv funktioniert. Wir hatten das Glühen und wenn ich darüber schwebe, wird
es etwas dunkler. Ich kann das eigentlich einfach schnell maximieren. Es ist kaum spürbar. Aber jetzt sollte ich in der Lage sein, dies zu klicken und es wird eine 1 hier hinzufügen. Entfernen Sie die 10 Käse, wir werden dies machen, wird zu 20 und wir werden Käse kontinuierlich hinzufügen. Mal sehen, ob das funktioniert. Und alles hat funktioniert. Ist das nicht toll? Das ist also ziemlich cool. Wir haben nun ein neues Clicker-Gebäude hinzugefügt. Grundsätzlich haben wir auch den Preis angepasst. Und wenn wir hier 20 getroffen haben, wird
das wieder aufleuchten und wir sollten in der Lage sein, den nächsten Clicker zu kaufen. Mal sehen, ob das der Fall ist. Und da ist es. Wir können beim nächsten Klicker aufkaufen. Und das gleiche sollte für die Melkstation gehen. Also, wenn wir 25 hatten, gehen Sie. Und wenn ich darauf klicke, dann ändert sich dies auch den Preis. Wir fügen auch eins hinzu, und jetzt werden wir die fünf Käse alle zwei Sekunden auch dafür bekommen. Ja. Und nur um sicherzustellen, dass das funktioniert, gehen
sie zu und dann 40 funktioniert wirklich gut und überprüfen. Das ist also ziemlich cool in Bezug auf eine Benutzeroberfläche. Das funktioniert also schon. Lassen Sie uns auch die Maximierung auf dem Spiel deaktiviert, weil ich das nicht unbedingt jedes Mal will. Und ja, also funktioniert es. Aber wie ich schon gesagt habe, könnten einige von Ihnen sagen:
Nun, ich meine, das ist alles gut und gut, aber ich weiß nicht, was hier los ist. Okay. Und jetzt ist dies eine Art, würde
ich sagen, nur verschönern das. Um dies ein wenig lesbarer zu machen, werden
wir hier tatsächlich ein paar lokale Variablen hinzufügen. Die Idee ist, dass, na ja, okay, also haben wir diesen Schlüsselwertpaarschlüssel und was bedeutet das überhaupt? Ich weiß es nicht. Okay, lasst uns darüber nachdenken. Das ist ein Gebäude. Also können wir tatsächlich, wenn Sie all dies haben, können
wir sehen, dass dies ein Gebäude ist, denn natürlich ist dies der Schlüssel aus dem, aus unserem Wörterbuch. Und wir können dann einfach sagen, okay, machen wir das zu einem Gebäude. Das ist das Gebäude, das wir hier gerettet haben. Also das Gebäude innerhalb des als Parameter, das ist das Gebäude, das gebaut wird. Oder weil dies aufgerufen wird, wird
die Methode auf einem Gebäude aufgerufen gebaut. Das ist also das Gebäude. Wir können diesen Namen ändern. Also lassen Sie uns dieses erste Steuerelement umbenennen, RR. Dies ist ein Gebäude, das gebaut werden soll, sagen wir. Dann wissen wir, okay, das ist das Gebäude, das gebaut werden soll. Und das ist wie ein sicheres Gebäude. Oder wie können wir das hier den Schlüssel nennen? Nun, das ist im Grunde nur die Art des Gebäudes, das wir für die Suche benutzt haben, oder? Also rufen wir dieses Gebäude gerade jetzt zur Suche an. Es ist nicht der klarste Name, aber ich denke, es wird gut. Und das ist gleich Schlüsselwertpaar Schottky, richtig? Und dann, anstatt dies zu verwenden, können
wir diese Variable hier tatsächlich verwenden. Und dann für die Suche zu bauen, ist es wie Okay, okay, also der Schlüssel ist das Gebäude für die Suche. Ich verstehe das, das macht Sinn. Nun, was ist dieser Wert? Ich verstehe nicht, was dieser Wert ist, oder? Also kein Problem. Dies ist ein Spielobjekt. Und wir erinnern uns daran, dass das Wörterbuch das Gebäude der Bauplatte ist. Das ist also einfach ein Gilbane Building Panels. So können wir sagen, GameObject Building Rechnung tut Panel ist gleich Schlüsselwert, Schlüssel-Wert-Paar, Punkt-Wert. Und jetzt können wir noch weiter gehen, weil wir sehen können, dass wir immer nur den Transformator benutzen. Wir können auch die Transformation davon bekommen. So können wir sagen Transform und sagen im Grunde die Gebäudeplatte, Gebäudepaneel-Transformation ist dann gleich der Gebäudeplatte Punkt Transformation. Und dann, anstatt dies nur zu ersetzen, können
wir hier auch die ganze Sache durch diese Transformation ersetzen. Und jetzt werden wir sehen, dass wir beide das 0te Kind hier bekommen, also können wir das auch ersetzen und dann sogar noch weiter gehen. Wir bekommen eigentlich immer die gleiche Textkomponente. Also in der Theorie können wir das auch bekommen. Und ich sage ja, warum nicht? Also können wir eigentlich Text sagen und sagen, Dies ist die Gebäudeplatte. Dies wäre die Bauteilnummer des Gebäudetextes. Das ist also ein sehr langer Variablenname, aber werde nicht zu verrückt danach. Warum haben Sie das nicht? Und das wäre dieser hier. So können wir das tatsächlich dort speichern und dann dies durch dieses ersetzen und dies durch dieses ersetzen. Richtig? Und jetzt, während wir sagen können, nun, ich meine, du kannst das auch einfach zusammenfassen. Ja, aber wenn wir uns das jetzt ansehen, können wir sehen, okay, Schlüssel-Wert-Paar von Punkt-Wert ist die Abrechnung Panel, okay, natürlich ist das die Bauplatte, die wir getan haben. Und dann bekommen wir die Transformation davon. Okay? Ja. Okay, die Transformation, das kannst du im Grunde sagen. Nun, okay, vielleicht kann das gelöscht werden und wir können sagen, nun, eigentlich Bauplatte. Ich meine, ich weiß, was die Gebäudeplatte ist. Also lasst uns das hier holen. Dies, weil die Transformation und das GameObject einander sehr ähnlich sind. Also können Sie sagen, Okay, die Gebäudestrafe Transformation, ich werde das verstehen, das ist völlig in Ordnung. Und dann ist die Sache, dann werde ich den Text damit in Verbindung bringen. Welche Art von Text ist das? Die Gebäudepanel-Anzahl der Gebäude Texte? Ja, natürlich, das sagt mir wie viele Gebäude eines bestimmten Gebäudes gebaut wurden. Und dann analysieren wir einfach den Text davon, und dann lesen wir eine Re-speichern die Zahl, die dort war plus eins in sie. Und das ist im Grunde ein sehr einfacher Weg, sagen
wir, das zu ändern und L2 zu sein, lesen Sie das ein wenig besser. Also lasst uns dies tun und lasst uns dies auch in Gebäude ändern, um gebaut zu werden. Richtig? Und dann Low-Key, aber nur in Gleichen. Wir haben das Gebäude auch hier transformiert, aber wir brauchen es nur einmal. Also brauchen wir in diesem Fall nicht wirklich den Text zu bekommen. Ich denke, das wäre völlig in Ordnung. Und das macht viel sinnvoller. Sie können natürlich auch übrigens dasselbe
tun, zum Beispiel mit diesen Kosten hier, richtig? Also können Sie sagen, nun, ich meine, eigentlich, wenn wir darüber nachdenken, was kostet das Gebäude, das gebaut werden soll? Was ist das? Das sind eigentlich die neuen Kosten, die wir haben wollen. So können wir einfach neue Kosten sagen und wir können dies tatsächlich sofort in eine Zeichenfolge setzen. Das ist noch besser, neue Kosten No.2 String. Und dann können wir darüber nachdenken und es hier reinlegen. So wird es dann noch einfacher zu lesen. Und wir sagen, neue Kosten sind gleich dem tatsächlichen Gebäude, das gebaut wird Kosten, weil das bereits für uns aktualisiert wurde. Und dann kennen wir unseren Fall. Wir nehmen nur die eigentlichen Texte, sie sind mit den neuen Kosten aktualisiert. Daher sind Update-Kosten sinnvoll. Aktualisieren Sie Klickbarkeit, sehr ähnlich. In diesem Fall können wir das Gebäude hier bekommen. Eigentlich müssen wir nur das Gebäude, das wir brauchen. Ein GameObject in diesem Fall. Also wollen wir das tatsächlich ein bisschen ändern. Das ist also das Spielobjekt,
das ist die Gebäudeplatte. Und dann können
wir am Ende, anstatt GameObject zu schreiben, auch einfach GO und dann Punktwert sagen. Und dann wird dieser hier setzen. Also die Gebäudeplatte GameObject Punkt erhalten Komponente Schaltfläche Intractability. Wir können den Button auch sofort erhalten. Ich denke, das ist vorerst in Ordnung. Und dann diese ganze Tortur hier, wir sollten definitiv einen Boolean daraus machen. Das ist also der Bool in Schwierigkeiten im Terrorakt. Können sie gehen. Und dann können wir das hier reinbringen.
70. (Cheese Clicker) (Cheese: In Ordnung, lassen Sie uns mit dem Käseklicker hier für den Einheitskurs fortfahren. Und in dieser Vorlesung werden wir ein sehr, sagen
wir, einfaches Upgrade-System erstellen , das Sie implementieren können. Wieder einmal Inspiration von Cookie Clicker, wo Sie auch bestimmte Upgrades erhalten können, die auf bestimmte Gebäude angewendet werden. Und wir werden sehen, ob wir dort etwas schaffen können. Lassen Sie uns zunächst einen neuen Ordner innerhalb unseres Skript-Ordners erstellen, der Upgrades genannt wird. Und da drin werden wir das wunderschön benannte Upgrade-Skript haben. Der Ordner ist also Plural und die eigentliche Klasse ist nur singular. Jetzt wird dies nicht
von moralischem Verhalten erben und es wird innerhalb von Upgrades sein. Nun, ohne das Semikolon Diego. Und es gibt eine Reihe von Dingen, die wir hier hinzufügen müssen. Also lasst uns gehen. Also zuerst habe ich bereits einige Ideen von
Upgrade-Typen vorbereitet , die wir haben werden, und diese werden in Sichtweite eines Enum-Upgrade-Typs
gespeichert werden . Und das wird der Bronze-Klicker sein. Wird den silbernen Klicker haben. Wir haben den Goldclicker, den Platin, Platin Flickr, sowie die Bronzemilch. Natürlich hättest du die Silbermilch erraten können. Und wenn Sie die anderen kennen, erhalten
Sie einen Keks oder ein anderes Stück Käse, Platinmilch. Da gehst du. Dies sind alle Upgrades-Typen. Wir werden eine sehr ähnliche Konstruktion machen, die wir mit den Gebäuden gemacht haben. Also, wo wir eine private statische Liste von Typ Upgrade in hier haben, die alle Upgrades sein wird. Und dann werden wir dies innerhalb einer statischen Eigenschaft haben, die auch eine Liste von Upgrades genannt ist, alle Upgrades, Upgrades. Und wir werden hier einen Getter haben, der alle Upgrades zurückgeben wird. Und wenn das nicht der Fall ist, dann wollen wir diese generieren. Also werden wir eine weitere öffentliche statische Liste von Upgrades haben. Generieren Sie alle Upgrades, Upgrades sie vor. Und das ist dann genau die Öffentlichkeit nicht richtig geschrieben. Sie werden öffentlich statisch, generieren alle Updates. Und das ist im Grunde genau das Gleiche, was wir mit
der Liste der Gebäude innerhalb der Gebäudeklasse gemacht haben . Das ist also das Ergebnis entspricht einer neuen Liste von Gebäuden. Lassen Sie uns dieses Ergebnis zurückgeben. Geh. Und dann füllen wir das bald genug. Lassen Sie uns zuerst den Scheck hier machen. Also, wenn die tatsächliche statische Variable gleich null ist, dann müssen wir sie zuerst mit genau der Methode aller Upgrades setzen. Richtig? Das ist, wie ich schon sagte, einige von ihnen haben wir es schon für die Gebäude selbst gemacht. Das sollte also nicht zu verrückt nach einer Überraschung kommen. Jetzt kommt die große Frage, nun, welche Art von Dingen befinden sich in einer Laborklasse? Was sind die Eigenschaften eines Upgrades? Nun, zunächst einmal, offensichtlich werden wir einen Upgrade-Typ haben, oder? Und das wird eine Art Upgrade mit einem Getter und einem privaten Set sein. Warum nicht? Dann werden wir auch einen öffentlichen Modifikator haben. Dies ist der Modifikator, der Modifikator, der 0. Dies ist der Modifikator, den wir gehen, um Zeiten waren mit dem tatsächlichen Käsegewinn
zu multiplizieren, die wir haben werden. Dies ist also der Modifikator von B, wird ein dass haben. Dann haben wir natürlich auch Kosten damit verbunden. Private Set hier. Und dann eine andere Sache, und das wäre ein öffentlicher Bool und das heißt ein Bot. So überprüft dies einfach, ob dieses
besondere es gekauft wurde oder nicht , da die Upgrades, die wir hier erstellen werden, nur gekauft werden können und dann sind sie weg. Und dann brauchen
wir für diese Dinge natürlich auch einen, wir müssen einen sehr netten Konstruktor generieren. Wir können dies natürlich tun, Kontrollpunktkontrollpunkt
drücken. Es sind Kontrollpunkte natürlich Generieren, Konstruktor und Typ von. Das sind genau die Dinge, die ich hier drinnen will. Und es gibt noch eine Sache, die wir wollen. Eigentlich habe ich das völlig vergessen. Wow, das ist peinlich. Wir müssen wissen, wofür ein Gebäude das ist. Also wollten wir eigentlich anfangen, den Käse-Clicker Punkt-Gebäude Namespace zu verwenden. Und dann wollen wir einen Gebäudehalt zum Bauen. Und das hat ein get und ein privates Set wieder. Und das ist dann auch hier drin. So bauend. Und dann zum Bauen, richtig? Und wir wollen nicht, wird übrigens gekauft, denn das ist etwas, das am Anfang immer falsch ist. Und dann zum Bauen, wird
es zum Bauen, Bauen, Bauen sein. Ok. Was ist das? Was ist der Gedankenprozess dahinter? Nun, natürlich ist ein Upgrade immer spezifisch für eine bestimmte Art von Gebäude. Deshalb hat dies hier eine Gebäudereferenz. Und das gekaufte sagt einfach, okay, es ist falsch am Anfang. Und dann, wenn wir es kaufen, so, sobald die öffentliche Leere durch Methode abgekühlt ist, und wir werden sagen, gekauft ist gleich falsch. Eher wahr. Tut mir leid, da gehst du. Natürlich, da gehst du. Sobald wir das kaufen, wird das gekauft. Und mit diesem Board überprüfen wir im Grunde, okay, können wir irgendwie gekauft haben, was wir wollten nur diesen sowjetischen haben, den wir kennen ,
okay, dieses Upgrade wurde gekauft und das nach oben wurde nicht gekauft. Und in der Zukunft, zum Beispiel, könnten wir sagen, Hey, alle gekauften Upgrades und dann leicht filtern für ist in,
dass gekauft, das wäre eines
der Dinge, die wir tun können. Aber jetzt können wir tatsächlich diese Upgrades innerhalb dieser Liste hier erstellen. Nun, was ich tun werde, ist, dass ich tatsächlich überschreiben werde. Ich werde hier tatsächlich ein neues Upgrade erstellen, und dann werde ich über den Rest von ihnen kopieren, weil sie ein wenig komplizierter sind als die Gebäude. Also haben wir Ergebnisse Punkt hinzufügen, und dann ein neues Upgrade. Und jetzt anstelle dieses Upgrades benötigen
wir zunächst einen Upgrade-Typ Bronze Clicker. Dann wollen wir den Modifikator, in diesem Fall den Motor Feuer zum Beispiel. Eigentlich lassen Sie uns das umdrehen. Lassen Sie uns zuerst die Kosten und dann den Modifikator erhalten, sonst funktioniert das Kopieren nicht. Die Kosten, sagen wir, die Bronze kostet 25 und es wird tatsächlich
die Dinge verdoppeln , die wir vom tatsächlichen Klick bekommen werden. Und dann für welches Gebäude? Nun, wir können die Gebäude noch einmal bekommen, indem wir Gebäude machen, ein Gebäude Instanzen. Und dann eine 0 hier. Denn das funktioniert natürlich weil dies wieder der Clicker ist und dies speziell für den Clicker ist. Und jetzt können wir tatsächlich einfach kopieren. Das ist eigentlich auch ziemlich einfach. Und sagen Silberklicker. Dieser kostet dann, sagen wir 500. Das ist also ein viel teurer Preis. Und dann verdoppelt es auch die, es verdoppelt den Käsegewinn. Und dann haben wir den Goldclicker. Das kostet 1000, 500. Das sind natürlich willkürliche Zahlen, oder? Sie können Ihre eigenen auswählen und sie auch ändern. Und das wird der Platin Clicker mit 5000 sein und das wird mal dafür. Nun, das sind natürlich multiplikativ. Also, wenn ich die Bronze und den Silberklicker habe, kriegen
wir viermal so viele, so viel Käse raus. Und wenn ich das habe, dann schauen wir uns acht Mal an und dann
bekommen wir 32 Mal, wenn ich alle Upgrades habe. Also diese Skalierung sehr schnell tatsächlich. Nun, die anderen, die ich tatsächlich bekommen werde, und wir werden das auf eine andere Weise tun. Also, und wir tatsächlich, wie Sie sehen können, ist Collection Initialisierung. Da gehst du, kann vereinfacht werden. Und wir werden nur darauf klicken und wir werden sehen, dass dies ein bisschen anders aussieht als wir es vorher gesehen haben, aber insgesamt sollte es nicht zu verrückt sein. Also haben wir im Grunde nur die inline-Initialisierung hier. Anstatt diese mit der Add-Methode hinzuzufügen, können
wir dies einfach hier haben. Und dann macht es meinen Job ein bisschen einfacher, indem ich das hier drüben kopiert. Dies ist das Erstellen von Instanzen. Die Kopie hat nicht ganz funktioniert. Da gehst du. Das ist es, was es ist, oder? So können Sie natürlich auch hier Ihr eigenes Upgrade auf Kosten und Modifikatoren
auswählen. In unserem Fall wäre auch der Modifikator eine ganze Zahl. Weil wir mit einem Interview angefangen haben. Natürlich können beide es zu einem Float machen und dann im Grunde nur das Ergebnis später haben. Versiegeln Sie es oder machen Sie es oder blumig, richtig? Damit Sie es auf- oder abrunden können. Aber im Moment denke ich, dass dies als Beispiel in Ordnung ist, sagen wir. Und das Letzte, es gibt zwei letzte Dinge, die wir wollen. Nun, eines der Dinge, die wir wollen, ist. Und im Grunde wollen wir eine statische Methode, die es uns ermöglicht, im Grunde die relevanten Modifikatoren zu erhalten. Dies ist also der relevante Modifikator. Und das ist in diesem Fall für ein bestimmtes Gebäude. Also, was haben wir, was wollten wir hier? Nun, im Grunde,
lassen Sie uns zuerst Modifikator gleich 1 machen und dann Modifikator zurückgeben. Die Idee ist also, dass
wir bei einem bestimmten Gebäude den Modifikator wollten, der ihm zugeordnet ist. Wenn wir also den Bronze-Klick auf den silbernen Clicker haben,
dann, wenn wir diese Methode im Clickergebäude geben, dann ist das, was wir zurückbekommen wollen, im Grunde der Modifikator, den wir in diesem Fall
anwenden müssen , dann für, also dafür werden wir eine neue for-Schleife machen, die alle Upgrades durchläuft, Punktanzahl. Und wenn es alle Optik-Upgrades durchlaufen hat, werden wir fragen,
ob das eigentliche Upgrade, das wir gerade suchen, ich eigentlich nicht sein sollte. Ja, lass uns eine foreach-Schleife machen, die ein bisschen besser ist. Das wäre also ein Upgrade. Gekühlt, ungleich Null, tut mir leid. Nein, immer noch nicht richtig. Upgrade. Ok. Lass uns das so machen. Upgrade, Upgrade in allen Upgrades Will betreibt das Ego. Ich, was wir sagen werden, ist, wenn das Upgrade für den Bau ist, also wenn wir das Gebäude bekommen und dann gehen wir, was wir tun werden, ist, dass wir die get-Typ-Methode verwenden. Dies einfach, Sie können im Grunde erhalten, nehmen Sie die get-Typ-Methode namens equals auf diesem und dann sagen, dass Building dot auch Typ bekommt. Und das vergleicht dann den Typ des Typs, die Klasse tatsächlich so mit diesem Holz, also gibt es einen Systempunkttyp, wie Sie sehen können, der der Rückgabetyp ist. Und das einfach ein Vergleich der Klasse oder des Datentyps, sozusagen. Es vergleicht also, ob dieses Gebäude, das gegeben wurde,
zum Beispiel der Clicker ist . Und wenn diese übereinstimmen, Ende, wird
das Upgrade gekauft. Das ist also auch irgendwie wichtig. Das ist, wo wir gefragt, ob oder nicht. Dann, was wir tun werden, ist unsere Zeit zu ändern gleich Upgrade-Punkt-Modifikator. Da gehst du. Also dann werden wir tatsächlich in der Lage sein, den Modifikator zu ihm zu multiplizieren. Ja, insgesamt, ich meine, das sollte nicht zu verrückt sein. Wir suchen nur nach dem bestimmten Gebäude. Wenn die Upgrades dort gekauft wurden und sie für dieses Gebäude gekauft wurden, werden wir
dies einfach dem Modifikator hinzufügen oder nicht, sondern multiplizieren es mit dem Modifikator, richtig? Und um dies auch hinzuzufügen, damit dies tatsächlich etwas funktioniert. Wir müssen hier den Klicker und die Melkstation wechseln. Und das wird eigentlich nicht zu verrückt sein. Wir machen einfach nur eine Summe, die sie hier gewonnen hat, und das wird der Käsegewinn sein, den wir haben. Also das Schaffell der Melkstation, dieser Fall mal. Und dann lassen Sie uns mit tun. Flickr Dot Upgrades, wir müssen diesen Namespace verwenden. Dann im Inneren von hier können wir sehen, aktualisiert gelehrt, erhalten relevanten Modifikator dafür. Und deshalb mag ich kreativ diese Methode, denn das macht es sehr einfach, dies zu tun. Und dann können wir einfach sagen, Gesamtgewinn Käse. Und wir können das kopieren, das hier
reinlegen und dann auch den Gesamtgewinn für Käse sagen. Sie gehen. Und auch sicherstellen, dass wir den richtigen Namespace verwenden erschien. Sie ist Clicker Dot Upgrades. Im Moment sollte der Cashflow selbst bereits funktionieren. Das Ändern des Cash-Flow durch die Upgrades sollte also völlig gut funktionieren. Das einzige Problem ist, dass wir die Upgrades
noch nicht kaufen können und wir sind dafür, dass wir ein neues Upgrade machen werden. Sie ich eigentlich jetzt Lasst uns das tun. Nur zum Teufel. Also höre ich dich. Ich so ist dies die Upgrade-UI. Ich werde das ein bisschen anders machen. Ich weiß, das war ein bisschen zu schnell. Jetzt wird er eine weitere visuelle Studio-Instanz öffnen. Nur eine Sekunde. Ein Sprung. Lass uns das noch mal schließen. Danke. Dann öffnen Sie das bitte in der richtigen. Da gehst du. Dies ist natürlich unter Ihrem Auge und wir werden definitiv
den Käse Clicker Punkt Upgrades Namespace verwenden . Lassen Sie mich schnell einen Blick hier werfen. Das erste, was wir brauchen, ist eine öffentliche Liste von Sprite. Also, jetzt werden wir tatsächlich ein Sprites damit assoziiert haben. Diese sind natürlich als Ressource verfügbar und wir werden diese in Kürze sehen. Dann haben wir ein Wörterbuch, das den Gebäuden ähnlich ist. Wir werden hier ein Upgrade auf Spielobjekt-Wörterbuch haben. Und wir werden es auch so nennen, Upgrade auf ein Zwei-Spiel-Objekt. Objekt. Sie gehen mit einem Getter und einem privaten Sektor. Und dann zu guter Letzt werden
wir ein öffentliches Objekt haben, das das Upgrade-UI-Prefab sein wird. Aber wir werden das nicht mit einem Unterstrichjahr haben, genau so. Okay, Zunächst einmal wird
das Wörterbuch der Upgrade-Spielobjekte hier in der Startmethode initialisiert. Und dann haben wir einen. Also, was wir tun werden, ist, bevor
wir innerhalb der Gebäudeplatte die besondere Strafe selbst hinzugefügt haben, also manuell. Und wir werden jetzt im Grunde die besonderen dieses Mal erzeugen lassen. Also sagen wir Panel, und wir fügen hier unten ein kleines Panel hinzu. Und wir werden diese im Grunde nur generieren. Also lasst uns dies das Upgrade-Panel sein. Bedienfeld „Upgrade“. Da gehst du. Lassen Sie uns die Upgrade-Benutzeroberfläche hinzufügen. Und dann lassen Sie uns auch die Sprites hinzufügen. Also lasst uns anstelle unserer Sprites einen neuen Ordner machen. Dies werden die Upgrades sein. Lassen Sie uns auch einen neuen Ordner erstellen, der Gebäude genannt wird, und fügen Sie einfach alle unsere Sprites zu ihnen hinzu. Und innerhalb der Upgrades werden
wir alle goldenen Dinge hinzufügen. Wie ich schon sagte, alle sind als Ressource verfügbar. Wir kopieren die und lassen mich schnell nachsehen, oder? Du brauchst eigentlich nichts für sie zu ändern. Wie Sie sehen können, Bronx rutscht oder falsche Schmelzmaschine, Flickr, diese Maschine. Platin und das Silber als auch. Ja. Also wieder einmal, diese sind natürlich, als Ressource
verfügbar. Und dann mal sehen, Upgrade-Panel. Also im Grunde wollen wir nicht wirklich etwas verrücktes Jahr erschaffen. Und mit dem Erstellen bin ich wirklich gemein, als würden wir das schaffen. Die Update-Benutzeroberfläche selbst sollte also nicht zu verrückt sein. müssten wir erschaffen. Also haben wir das Prefab und dann können wir im Grunde das Prefab dort reinlegen. Das wird also einfach ein Bild von diesem sein. Das ist also ein Bild. Lass uns das etwas kleiner machen. Das wird wahrscheinlich in Ordnung sein. Und dann wird dieses Bild die Upgrade-Benutzeroberfläche sein. Und das wird auch eine Schaltfläche damit verbunden sein. Das wird also hier ein Knopf sein. Und ich glaube, dass das schon im Grunde ist. Und dann müssen wir einfach etwas ändern. Also, das Upgrade Ihrer Inselchen, setzen Sie dies in das Prefab hier. Also als Prefab, jetzt ist es hier. Und wir können dann grundsätzlich gelöscht und stellen Sie sicher , dass die Upgrade-UI Prefab hier innerhalb des Skripts gesetzt ist. Und dann glaube ich, dass das alles sein sollte. Dann müssen wir es einfach erstellen, indem wir eine neue Methode erstellen, private void erstellen, UIs mit einem bestimmten Index hier aktualisieren. Mal sehen. Da gehst du. Weil wir diese Methode innerhalb einer for-Schleife aufrufen möchten. Also im Grunde gehen durch alle besonderen Upgrades, die wir haben. Eigentlich tun alle Upgrades in der Art des Wochenendes tatsächlich schon das. Also für Schleife mit i und dann ist das Upgrade, Upgrades, Punktanzahl. Also werden wir alle Updates,
Upgrades durchlaufen oder die Diagonale erreichen. Und wir werden sagen, Create up, Grade deine Augen. Ich gehe. Und im Inneren von hier werden wir das erschaffen. Also Spielobjekt 30, oder sagen wir, Upgradebegriff ist gleich, um diese UI-Prefab mit Hilfe dieser Transformation hier zu
instanziieren. Ich werde sagen, das Upgrade wird sein. Also zuerst, erhalten Sie Komponentenbild. Wir brauchen hier natürlich das UI-Paket. Also mit Unity Engine wi, das wäre sehr gut. Und dann das Bild, wir haben das nicht wirklich gesehen, wie ich schon sagte, aber das wird gut. So kann das Sprite hier genau wie mit dem,
im Grunde dem Sprite-Sprite-Renderer eingerichtet werden. Und dann wäre das der Index. Also werden wir nur das Sprite bei einem bestimmten Index hier bekommen. Und dann werden wir etwas tun, das wir noch nicht gesehen haben. Und wir werden im Grunde ändern, was passiert, wenn wir den Knopf drücken. Also, bevor wir gesehen haben, haben wir gerade die hinzugefügt. Eine Schaltfläche Funktionalität durch, wenn wir uns dies ansehen, wenn wir uns dies ansehen, Es gibt auch einen Knopf. Wir haben den onclick hinzugefügt und wir hatten die besondere Sache hier und kalt eine bestimmte Methode oder Funktion dort. Aber was wir jetzt tun werden, ist, dass wir das tatsächlich über Code machen werden. Und um dies zu tun, werden wir die Tastenkomponente hier bekommen. Also Knopf onclick. Also das ist genau das, was wir dort hatten und Bewegung von Kohle hinzufügen Zuhörer. Und so dieser Anzeigen-Listener, müssen
wir einen neuen Lambda-Ausdruck hinzufügen. Dies ist also einfach, wenn ich darüber schwebe, wie Sie sehen können, ein Einheitsaktions-Aufruf. Und wir können das als Lambda-Ausdruck tun. Alles, was ich danach setze, ist im Grunde das, was dann bekommt. So aktualisieren Sie alle Upgrades Index Punkt durch. Also möchte ich die Methode hier für dieses spezielle Update aufrufen,
eine, wenn dies angeklickt wird. Und was ich auch tun möchte, ist, dass ich das eigentliche Spielobjekt selbst setzen möchte. Das Upgrade ist also das Spielobjekt, das auf false gesetzt ist, so dass es im Grunde verschwindet. Und dann zu guter Letzt möchte
ich das Wörterbuch auf GameObject aktualisieren. Ich möchte die tatsächlichen Upgrades hinzufügen. Also zuerst,
ich meine, ja, das ist in Ordnung. Ich meine, das ist nicht so schlimm. Alle Upgrades. Index hier. Index. Oh, nein, das ist nicht ganz richtig. Indexieren Sie ein Go. Und dann auch das Spielobjekt, das Upgrade genannt wird. Da gehst du. Richtig? Das wäre die Erstellung der Benutzeroberfläche. Jetzt gibt es eine Sache, die ein wenig ist, naja, ich würde kein Problem sagen, aber es wird alle Ys übereinander schaffen, was natürlich nicht ganz ist, was wir wollen. Was wir wollen, ist natürlich e, haben sie irgendwie ein wenig getrennt. Also lasst uns das einfach ausprobieren. Lassen Sie mich sehen, dass dies tatsächlich schon funktionieren sollte und zumindest diese generieren sollte. Natürlich müssen wir die Sprites hier einstellen, und wir müssen sie in die richtige Reihenfolge setzen. Das ist also der Bronze-Klicker. Lass uns das machen. Klicker. Und dann der silberne Klicker. Ich glaube, dass das jetzt sicherlich nicht sehr gut funktioniert. Also lassen Sie uns es wie sagen, Sie gehen Silber Clicker, und dann haben wir den Gold-Clicker und dann haben wir den Platin Clicker. Ja, da gehst du. Und dann natürlich die Bronzemedaille Maschine, Silbermaschine. Wir haben die goldene Milchmaschine und dann nicht zuletzt Platin. Da gehst du. Also müssen diese natürlich auch eingestellt werden. Und dann glaube ich, dass zumindest die tatsächlichen Spielobjekte generieren sollte. Mal sehen, ob das schon funktioniert. Es schafft die Spielobjekte. Jetzt, wie Sie sehen können, sind sie alle an der gleichen Position. Wenn wir in Szene gehen, wie Sie sehen können, sind
wir auf der gleichen Position. Sie müssten sie so trennen. Das klappt natürlich nicht ganz. Das ist nicht ganz das, was wir wollen. Aber ja, wie funktioniert das? Also, wie können wir das tun? Nun, wir können zum Beispiel sagen, nun, lassen Sie uns aktualisieren Punkt, transformieren Punktposition. Und dann im Grunde gleich. Nun, wir können auch einfach sagen plus gleich neuen Vektor drei. Sagen wir mal jemand wie Arnold, 15 F 0. Nun, das funktioniert auch. Da gehst du. So etwas. Mal sehen, wie das aussieht, ob dies das ändern würde oder nicht. Aber es ist besser, die lokale Position einzunehmen. Denn natürlich sind wir derzeit unter Neue Transformation. Mal sehen, ob das wirklich funktioniert. Das wird natürlich alles in diesem Fall bewegen, weil wir das mal nach dem Index brauchen. Indexieren Sie das mal. Und das muss definitiv ein bisschen mehr sein. Sagen wir mal so etwas wie 25. Warum, Was ist das? Was machen wir denn? Nun, im Grunde abhängig vom Index. Also natürlich für das erste Upgrade werden wir einen Index 0 haben. Das wird also geschehen, die Position selbst wird bei 000 000 000 sein. Und dann wird der nächste Begriff Upgrade, die Position wird auf 25 000 und dann Index zwei wird 50 000,
000 und so weiter und so weiter. Nun, das wird definitiv aus dem, aus diesem oberen rechten Panel. Wir werden im Grunde in Ordnung, Es ist eigentlich braucht sogar ein bisschen mehr, aber das ist in Ordnung. Wir können das im Grunde ein wenig ausprobieren und eine Nummer finden, die hier funktioniert. Wir müssen dies tun, Nehmen wir an, so ein wenig komplizierte Art und Weise, weil wir noch
nicht gesehen haben, wie wir das Layout einer Benutzeroberfläche selbst generieren können. Das ist etwas, das wir sehen werden, wenn wir einen Blick auf das eigentliche werfen, was wir Ihnen ein wenig tiefer sagen. Sofort. Ich denke, das wird gut. Es sieht nicht am besten aus, aber es ist in diesem Moment funktional. Eine weitere Sache, die wir in der Upgrade-Benutzeroberfläche hier tun müssen, wir wollen tatsächlich, dass diese hervorgehobene Farbe ein wenig auffälliger wird. Also lasst uns das hier hinzufügen. Beachten Sie, dass wir den Server nicht hinzufügen müssen, das ist in Ordnung. Lass uns einfach normale Farben machen, komplett weiß. Und dann diese hervorgehobene Farbe ein wenig dunkler. Und der Rest der Sache wird gut. Mal sehen, ob das ein wenig mehr Effekt hinzufügt. Ja, jetzt können wir sehen, ob wir über die schweben, was funktioniert. Und dann, wenn ich auf sie klicke, sollten
sie tatsächlich schon funktionieren. Jetzt. Wir können sie jederzeit anklicken, aber es sollte funktionieren. Also lasst uns das wirklich versuchen. Also lasst uns einfach zehn Käse am Clicker besorgen. Und jetzt wird das natürlich jede Sekunde um eins zunehmen. Und wenn ich den Bronze-Clicker bekomme, dann sollte das jetzt um zwei steigen. Und wie Sie sehen können, funktioniert es perfekt. Wenn ich jetzt darauf klicke, sollte es um vier zunehmen und es tut. Keine Sorge. Und jetzt kann ich natürlich auch die anderen Clicker bekommen. Und ich wollte um 32 erhöhen, ich glaube, es war jede Sekunde. Das ist also ziemlich verrückt. Wie Sie sehen können, funktioniert wirklich, wirklich gut. Nun natürlich, was wir noch brauchen, ist im Grunde die Prüfung, ob diese tatsächlich gekauft werden kann oder nicht. So kann das Upgrade noch gekauft werden. Dafür. Natürlich ist das einzige, was wir wirklich tun müssen, dass wir zuerst waren, wir wollen alle dieser intakten Fähigkeiten auf gut setzen, nicht hartnäckig. So können wir einfach Get Component Taste. Zum dritten Mal hier könnten
wir fast darüber nachdenken, dies zu nehmen und eine Variable daraus zu machen. In diesem Moment werde ich es nicht tun, weil es nicht ist. Notwendig, aber das wäre etwas, das wahrscheinlich Sinn ergeben würde. Also werden wir nur den Knopf so einstellen, dass er nicht hartnäckig ist. Und dann im Inneren von hier, wir werden noch einmal sagen, wenn der Käse auf Cheats geändert geändert wird aktualisiert werden, aktualisieren, klicken Sie auf Mobilität. Und das wird genau das gleiche tun, was wir in der getan haben, lassen Sie uns diese generierte Methode implementieren. Legen Sie das hier unten. Das gleiche, was wir mit der Building UI auf der Update-Klickbarkeit gemacht haben. Also werden wir sie einfach schnell
durchgehen, um das zu kopieren, weil wir das im Grunde schon gesehen haben. Wir gehen nur durch die Schlüsselwertpaare in den Spielobjekten hier. Und wenn das interaktierbar ist, dann werden wir damit interagieren. Wenn, wenn die interactable, wenn die Kosten kleiner oder gleich der neuen Menge an Käse, die verfügbar ist. Und jetzt sollte das auch funktionieren. Lass uns die Buchla machen. Wir sollten in der Lage sein, das sofort zu sehen. Ja, jetzt ist die Farbe deaktiviert, wie Sie sehen können. Und wenn ich meine zehn Käse habe, brauche ich
eigentlich 25, glaube ich, für das erste Upgrade, dann wird es rot oder es, wissen
Sie, es wird normal, so dass wir tatsächlich klicken können. Und sobald wir darauf klicken, ist es weg und jetzt ist der Clicker hier. Aber wie Sie sehen können, hat es tatsächlich nicht entfernt oder Käse. Nun, das ist natürlich nicht das, was wir wollten. Wir wollten unseren Käse entfernen. Was wir also tun können, ist, dass wir es entweder
hier hinzufügen oder wir können es innerhalb der Upgrade-Schaltfläche hinzufügen. Das wird wahrscheinlich am sinnvollsten sein. Also können wir sagen, Käselagerung, Punktinstanz, Punkt, Bäume entfernen. Und das wäre dieser Punktpreis. Und das ist es schon, dass wir,
alles, was wir wirklich tun müssen, weil die Bind-Methode sowieso aufgerufen wird, wenn wir
das Upgrade kaufen und dann Käse davon subtrahiert wird. Vielmehr entfernt, ja. Also lassen Sie uns, wissen Sie, oder Sie können auch einfach das Plus hier tun, rufen Sie das an, und dann werden die 25 Bäume entfernt. Das Upgrade, wie Sie sehen können, wurde
die Benutzeroberfläche hier so eingestellt,
dass sie im Grunde aktiviert wurde , weil die Aufwärtsbewegung gekauft wurde, es ist erledigt. Und ja, das ist im Grunde, wie man die Upgrades hinzufügt. Insgesamt sieht das Spiel selbst nicht zu groß aus, und es gibt ein paar weitere Dinge, natürlich, die ausgebügelt werden könnten. Aber ich glaube, das ist eine Art, was ich Ihnen an dieser Stelle hinterlassen würde. Es gibt noch eine Sache. Da sind natürlich die Fässer, die du hinzufügen könntest. Dies ist eine Art von einer vorgeschlagenen Übung, die ich auch habe, wo Sie ein
paar weitere Ihrer eigenen Gebäude hinzufügen und wenn Sie mehr von Ihren eigenen Upgrades im Grunde. Aber das ist irgendwie der Zustand, den ich dir mit diesem speziellen Spiel überlassen würde. Es kann in seiner Gesamtheit gespielt werden. Und vielleicht wollen wir, wenn wir uns die Benutzeroberfläche ansehen, vielleicht ein paar Dinge hier ändern. Also werden wir wahrscheinlich einen weiteren Blick auf das Upgrade
und die Gebäudeplatte werfen, nur so dass diese korrekt bestellt werden. Also am Ende des UI-Abschnitts dieses Kurses, aber im Moment würde ich sagen, dass dies eine Art davon für den Xi-Clicker ist. Ich hoffe, der gesamte Bauprozess war für Sie nützlich. Ich weiß, dass es an einigen Punkten war, war es eine Menge. Es ist also nicht so, dass es etwas ist, das Sie
vielleicht sofort in seiner Gesamtheit verdauen können. Vor allem, wenn Sie völlig neu in der Unity-Programmierung sind, dann ist das wahrscheinlich, wissen
Sie, es war ziemlich viel. Aber seien Sie versichert, was ich sagen würde, dass das Beste ist, um mit dem zu spielen, was
Sie hier haben. Ich würde sagen, dass dies eine großartige Gelegenheit für Sie ist, nur ein paar Gebäude hinzuzufügen. Tu ein paar Sachen, die du tun willst. Denken Sie an, vielleicht einige, einige Ideen, die Sie, was Sie hinzufügen möchten. Vielleicht möchten Sie, dass Sie ein paar weitere visuelle Elemente hinzufügen. Wenn Sie also hinzufügen, erhalten
Sie Klicker, dann erscheinen vielleicht tatsächlich wie Maus. Und wenn Sie auf die Melkstation klicken, möchten Sie
vielleicht, dass der Sound abgespielt wird oder so etwas. Es gibt also so viele Dinge, die Sie hier hinzufügen können. Und ich möchte, dass Sie dieses Projekt im Grunde als eine sehr gute Einführung als eine Art, es ist die Art von Spiel, richtig? Sie haben also ein großartiges Fundament. Ich denke, dass Sie sich ausdehnen können. Und so ist die Idee des Käseklickers wirklich. Also das ganze Projekt im Grunde. Aber ja, das war es für diesen Vortrag und den Käseclicker selbst, wie ich schon sagte, wir werden definitiv noch einmal darauf zurückkehren, nachdem wir es über die Benutzeroberfläche geschafft haben und dann machen wir das ein bisschen. Ich würde nicht hübscher sagen, aber machen es ein wenig einfacher, die Benutzeroberfläche selbst im Grunde zu sortieren. Aber das wäre es dafür. Und wie immer, hoffe ich, Sie fanden es nützlich. Und wenn es irgendwelche Fragen gibt, dann zögern Sie nicht zu fragen und ich werde sicher sein, zu antworten. Und ja.
71. (Unity UI) Eine Ufe hinzufügen: Alles klar, Willkommen in der Einheit Sie, ich stelle hier für den Einheitskurs vor. Und in diesem Vortrag werden wir einen Blick auf Leinwände oder das Canvas-Spielobjekt werfen, sagen wir. Und vor allem, natürlich, in einem neuen Projekt, werden
wir wie immer, unseren guten alten Skript-Ordner erstellen. Und dann lassen Sie uns sofort einen neuen Ordner, L1, einfügen. Kann das, nennen wir es einfach Canvas. Das ist in Ordnung. Und da, Lassen Sie uns sofort das Skript als auch. Nun wird das Skript in diesem Fall eigentlich nicht so interessant sein, denn normalerweise ist dies nur etwas, das ich persönlich gesehen habe. Du wechselst nicht so sehr Leinwände. Zumindest ändere ich nicht wirklich viele Dinge auf Canvas über Skripte. Aber ich habe hier etwas vorbereitet, wo wir später
ein paar Kommentare haben , nachdem wir damit fertig sind. Daher wird die Update-Methode nicht benötigt. Und wir werden uns das bald genug ansehen. Aber im Moment, was wir tun werden, ist, dass wir tatsächlich eine Leinwand zur Szene hinzufügen. Also lasst uns zunächst einmal, lasst uns diese Szene in L1 Canvas umbenennen kann dies, und dann neu laden. Also jetzt sind wir bei L1 Canvas und klicken mit der rechten Maustaste auf UI und fügen dann eine Leinwand hier unten. Jetzt haben wir ein wenig davon
gesehen, als wir den Text in der sehr einfachen Benutzeroberfläche hinzugefügt haben, sagen
wir, sie sind es. Wir haben den Text hinzugefügt und der Canvas wurde automatisch generiert. Das war also etwas Interessantes. Aber jetzt schauen wir uns die Canvas-Komponenten hier an. Was haben wir? Also zuerst haben
wir den Zufallsmodus. Und es stehen drei zufällige Modi zur Verfügung. Jetzt. Zuvor haben wir es tatsächlich auf Bildschirm Raum Kamera. Aber was ist Bildschirmspeicher-Overlay? Nun, natürlich der Standard, mit dem es anfängt. Und die Idee ist, dass man hier wie Head-up-Displays platzieren könnte. Und das ist im Grunde ein Overlay-Modus. So können wir ein wenig hinauszoomen. Wie Sie sehen können, ist das riesig, oder? Dies ist also eine riesige Leinwand in diesem Moment, weil es genau die Größe hier ist. Und nur damit wir etwas zu sehen haben, können
wir hier einfach einen Text hinzufügen, sonst sehen wir gar nichts. Lasst uns wie einen riesigen Text hier in der Mitte machen, so dass wir
zumindest etwas auf der Leinwand haben, das wir sehen könnten. Nun, wie Sie hier sehen können, zeigt
die Texte tatsächlich rechte Ebene in der Mitte der Kamera. In diesem Fall, weil das Overlay genau das ist. Es ist eine Überlagerung auf dem Bildschirm im Grunde. Das ist der Grund, warum, weißt du, so schwingt wie die Köpfe nach oben. Vielleicht, wenn Sie Minecraft gespielt haben, kennen Sie das Tao, die kleine Bar unten, so etwas, richtig? Also Head-up-Anzeigen, die Sie verwenden könnten, um einige Dinge anzuzeigen, Das ist, wo die Bildschirm-basierte Overlay funktionieren könnte. Die Bildschirm-Weltraumkamera, sobald wir das in und zeigt die Auswahl der Hauptkamera hier. Wie ich sehe, wird es sehr, sehr klein. Was sehr wichtig ist, wenn Sie sich im Bildschirmbereich-Overlay befinden, können Sie nicht. Ändern Sie die direkte Transformation hier, damit Sie die Größe der Leinwand selbst nicht ändern können. Hier. Hier können Sie jedoch auch schreiben, so dass einige Dinge von der Leinwand gemacht werden. Dies liegt an dem Skalierungsfaktor
, den wir in einer kleinen Weile betrachten werden. Und so hat sich im Moment nichts wirklich geändert. Wie Sie sehen können, die Idee der Overlays, dass dies für jede Kamera funktionieren würde. Und dieser würde nur für eine bestimmte Kamera funktionieren, die Sie sind. Grundsätzlich hier rein. Auch das Overlay, Overlays über alles und die Bildschirm-Raum-Kamera. Du kannst das hier nachschlagen. Da gehst du. Sie können tatsächlich den Ebenenabstand dort einlegen und dort auch
eine Bestellschicht haben . So richtig. Diese werden also alle grundsätzlich in einer bestimmten Entfernung zur Kamera gerendert. Das persönlich ist eine Präferenz von mir. Normalerweise benutze ich fast immer die Bildschirm-Raumkamera. Es gibt auch einen Weltraum und es wird Raum, wie Sie sehen können, können wir jetzt tatsächlich die direkte hier ändern. Und wenn wir in die Leinwand gehen und sie bewegen, und du wirst sehen, dass die Leinwand da ist. Aber wenn ich jetzt tatsächlich die Kamera nach rechts bewegen, wie Sie sehen können, dass Texas jetzt irgendwie im Weltraum. Also jetzt, wenn wir diesen Weltraum haben, dann ist die eigentliche Leinwand ein GameObject, das Teil einer Welt ist. Sie können sich zum Beispiel
vorstellen, wenn Sie Feinde herumlaufen und wie Gesundheitsbalken oder eine Namensleiste über dem Kopf
haben. Das würde zum Beispiel mit diesem Weltraum-Zufallsknoten
funktionieren. Richtig? Gehen wir zurück zum Bildschirmbereich hier, nur um des Arguments willen. Und ja, der Rest sollte fast selbsterklärend sein. Der Ebenenabstand ist also nur der Abstand der, im Grunde die y-Position. Dies würde also noch einmal
die Schnittebene der Hauptkamera berücksichtigen , die wir bereits gesehen haben. Aber wenn jemand näher als 0,03.3 ist, wird es nicht gerendert. Das ist also genau das hier. Und die Flugzeugentfernung hier, ein 100 wäre in Ordnung. In Reihenfolge in Layer funktioniert auch mit dem Sprite-Renderer. Wenn dies also unter einem bestimmten Sprite-Renderer als einer Komponente eines anderen Spielobjekts liegt, dann wäre es darüber. Wenn es darunter ist, dann nein, es wäre darunter. Das funktioniert also auch genau so. Sie können hier auch zusätzliche Händlerkanäle einfügen. Ich habe nicht wirklich mit so viel herumgespielt. Und jetzt würde ich mir keine Sorgen darüber machen. Die Skalierung, aber das ist eigentlich, es gibt noch eine Sache, dieses Pixel perfekt. Ich hätte es fast vergessen. Das ist eigentlich irgendwie wichtig. Das Pixel-perfekt ist, wie Sie sehen können, es ist sowohl in den Bildschirmräumen verfügbar, aber nicht im Weltraum, Zufallsmodus. Und das Pixel-perfekt ist im Grunde hatte die Idee, dass die Leinwand mit den Pixeln perfekt ausrichten wird. Deshalb ist es pixelgenau. Und wenn Sie dies aktivieren, können
im Grunde bestimmte Elemente schärfer machen und Unschärfe in den Elementen verhindern. Was jedoch wirklich wichtig ist, ist, wenn Sie eine Art Animation in Ihrer Leinwand haben. Und Ihre Elemente, im Grunde die UI-Elemente, dann könnte es besser sein, wenn Sie es deaktivieren, weil es glatt oder ohne es sein kann. Denn wenn es perfekt mit dem Pixel ausrichten muss, dann kann die Bewegung manchmal etwas wackelig sein. Aber normalerweise ist das in Ordnung. Ja, das wäre es für die Leinwand selbst. Dann kommt der Canvas-Scaler
, der wirklich das Brot und Butter hier ist. Also der UI-Skalierungsmodus, gibt es drei von ihnen als auch, konstante Pixelgröße, wir haben Skalierung mit Bildschirmgröße und konstanter physischer Größe. Warum müssen wir uns also um die Skalierung von irgendetwas kümmern? Nun, lassen Sie uns das sehen. Also haben wir jetzt das Spielfenster hier, richtig? Wenn wir das zum Beispiel herausnehmen
würden und wenn ich es wirklich schaffen kann,
ja, jetzt habe ich das unabhängig, damit ich das richtig skalieren kann? Und wie Sie sehen können, nun, das ist alles in Ordnung und gut, der eigentliche Text bleibt dort, egal was ich tue. Also ist das eigentlich nicht so schlimm. Aber was das hat, ist das hat eine konstante Pixelgröße, also wird das so bleiben. Und weil die Auflösung hier so hoch ist, ist das kein Problem. Aber wenn wir sagen, gehen wir zu drei Aspekten. Nun, das ist unsere eigentliche Lassen Sie mich sehen. Lass uns gehen. Ja, niedrige Auflösung. Wie Sie jetzt sehen können, ist es die gleiche Pixelgröße, was auch immer der Aspekt ist. Also, wenn wir bei sind, Lasst uns nicht tun, nicht mehr niedrig. Also 1609 und 1610, naja, es funktioniert ein bisschen besser, aber nicht wirklich. So wie Sie sehen können, je nach Größe jetzt, denn jetzt muss der Aspekt gleich sein. Die tatsächlichen Texte, es ist nicht wirklich sehr gut skaliert, was wir haben. Also, wenn wir eine Telefonanzeige haben, dann funktioniert alles einfach nicht. So kann eine konstante Pixelgröße verwendet werden, oder? Wie ich bereits sagte, die UI-Elemente, die unten auf
dieser Leinwand sind behalten
die UI-Elemente, die unten auf
dieser Leinwand sind, grundsätzlich ihre Pixelgröße bei, unabhängig davon, was der Bildschirm tut. Es ist so, dass sie nicht im Grunde, dass sie nicht skalieren. Die Skala mit Bildschirmgröße ist sehr interessant. Und sie sind, sie skalieren im Grunde mit einer bestimmten Referenzauflösung. Also in der Regel, wenn Sie eine haben, 1920 mal 1080 zum Beispiel. Und dann plötzlich ist dieser hier sehr
interessant, weil der Aspekt immer 16 bis neun ist. Aber wie Sie können, natürlich sehen, da gehen Sie. Jetzt skaliert es tatsächlich damit. Jetzt erst, nachdem es das tatsächlich genommen hat. So können Sie sehen, dass dies bereits ziemlich gut funktioniert. Sie können auch sehen, was es passen soll. Also entweder die Breite oder die Höhe. Sie können es auch bei 0,5 setzen und dann wird es im Grunde so machen, dass beide die Breite und die Höhe gleich übereinstimmen. Da. Sie können auch eine Erweiterung setzen und auch in Schrumpfung setzen, wenn Sie wollen. Normalerweise behalte ich es bei, wenn ich das zum Laufen bringen kann, dann gehst du. Ich halte es normalerweise bei 0,5 Übereinstimmung mit dem Bildschirm Match-Modus der Breite oder Höhe. Referenzpixel ist. Mal sehen, ob wir tatsächlich entweder Ego ist ein Sprite, hat die Pixel pro Einheit Einstellung als ein Pixel im Sprite, wir werden eine Einheit in der Benutzeroberfläche abdecken. Das sollte also sehr selbsterklärend sein. Wenn Sie sich erinnern, haben wir uns die Sprites angesehen und dort konnten wir grundsätzlich die
Unsere Pixel pro Einheit für einige unserer Sprites einstellen . Und der letzte ist konstante physische Größe. Das bedeutet also, dass es tatsächlich auf Zentimeter,
Millimeter, Zollpunkte schauen oder uns vor Ort auf dem Bildschirm abholen wird. Dies bedeutet, dass es die ursprüngliche physikalische Größe annehmen wird. So können Sie buchstäblich ein Lineal herausnehmen, es auf Ihren Bildschirm
legen, und das wird immer die gleiche Größe nehmen. Jetzt in ihren Gegenständen wird nicht wirklich skaliert als gut. Aber wenn Sie zum Beispiel
etwas genau wie ein Zoll von einem Zoll sein wollen , irgendwie auf einem mobilen Bildschirm oder sogar
auf einem PC-Bildschirm, dann wäre dies der Modus, den Sie wählen müssen. Ich persönlich denke, Skala mit Bildschirmgröße ist diejenige, die am sinnvollsten ist. Es tut immer noch etwas Funkiness,
vor allem, wenn wir in verschiedene Aspekte zu bekommen, oder? Weil wir jetzt einen Aspekt 1920 um 1080 genommen haben, der 16 bis neun sein würde. Und wenn wir zu 16 bis 10 gehen würden, dann würde das immer noch funktionieren. Aber wenn es wie verrückt ist oder Aspekte wie wenn wir hier einen freien Aspekt haben, dann wird
das irgendwann definitiv scheitern, wie Sie sehen können. Also, wenn wir ein mehr oder weniger ein Smartphone haben, dann, wissen Sie, es funktioniert nicht ganz, wenn, wissen
Sie, je nachdem, welche Art von Smartphone es sein könnte. Aber ja, insgesamt ist es immer noch im Grunde der Canvas-Scaler dort. Und lassen Sie mich das Spielfenster zurück und setzen Sie es zurück auf, sagen
wir, 16 mal 9 Aspekt. Das ist in Ordnung, oder? sind also einige der Dinge, die wir hier tun können. Das Beste, weißt du, normalerweise bekommst du auch hier gute Tooltips. Das ist also eigentlich auch sehr schön. Und ich habe das auch noch einmal, wenn ich nur das eigentliche Skript öffne, würde
ich Ihnen definitiv raten, sich das Skript anzusehen, das bereits gemacht wurde. Das ist also imexportierten Paketvorgesehen, exportierten Paket da dies im Grunde alles darin enthalten ist. Und dann brauchten wir natürlich auch die Leinwand hier oben, unterwegs. Also nur ein paar kleine Tricks und Tipps und Tricks im Grunde. Es gibt also ein paar Dinge hier drin, nur damit du jedes dieser Dinge verstehst. Wir müssen natürlich auch noch die Unity Engine Dot UI verwenden. Da gehst du. Und dann kann auch der Canvas-Scaler zugänglich sein. Letzte Sache, oder mehrere Leinwände. Es gibt also eine kleine Debatte, die im Grunde läuft. Ok. Ist es besser, wenn Sie mehrere Leinwände haben oder ist es besser, wenn Sie viele haben? Eine Leinwand und alles ist da drauf? Nun, es kommt darauf an, und das ist die Sache. So kannst du darüber nachdenken. Wenn sich ein Element ändert, muss die gesamte Leinwand neu gezeichnet werden. Wenn ich also 1000 Texte auf dieser Leinwand habe und sie sich wie jede Sekunde ändern, ist es egal, selbst wenn ich 1000 Bilder im Wechsel habe, ändern sie sich nicht. Sie müssen noch neu gezeichnet werden. Daher macht es Sinn. Sie haben mehrere Leinwände. Ich habe es hier mitgenommen. Daher ist es sinnvoll, dynamische und statische Elemente auf verschiedene Leinwände aufzuteilen. Wenn Sie also eine Benutzeroberfläche haben, die sich grundsätzlich nie ändert, können
Sie diese auf einen Canvas setzen. Und dann die Benutzeroberfläche, wo Sie vielleicht Ihre Gesundheit oder irgendeine Art von Systemen anzeigen möchten, dann wäre das etwas, das Sie auf eine Leinwand setzen würden, die sich nicht ändert. Also die dynamischen und statischen UI-Elemente aufteilen, richtig? Aber das wäre es schon für diesen Vortrag. Es gibt nichts wirklich zu sehen, sonst zu sehen. Wir können dieses Skript auch einfach auf die Leinwand hier hinzufügen. Aber es gibt keinen wirklichen Sinn, das auszuprobieren. Einfach setzt hier im Grunde alles auf jeden der möglichen Modi, nur damit Sie sehen können, dass Sie dies zum Beispiel setzen oder dies per Skript ändern können. Ich persönlich habe das noch nie wirklich getan. Es ist immer eine Sache, dass Sie die Leinwand grundsätzlich
in eine beliebige Konfiguration einfügen und dann lassen Sie sie in Ruhe. Aber ja, vielleicht kann Ihre Laufleistung variieren. Also, wer weiß es? Aber das wäre es schon für die Canvas-Vorlesung. Ich hoffe, Sie haben das nützlich gefunden und Sie lernen etwas Neues. Wie immer. Wenn es irgendwelche Fragen gibt, zögern Sie nicht zu fragen. Ich werde sicher antworten. Und ja.
72. (Unity UI) Bedienfeldern und Text: In Ordnung, lassen Sie uns mit der Einführung der Unity UI hier für den Einheitskurs fortfahren. Und in diesem Vortrag werden wir einen Blick auf Panels und Text werfen. Was wir also bereits in Bezug auf Texte gesehen haben, war ein, wissen
Sie, den Text hinzufügen und ihn dann per Skript ändern. Und die Panels haben wir hinzugefügt, was wir nicht wirklich über diese gesprochen haben. Sehen wir uns das an. Zunächst einmal werden wir keine neue Szene erstellen, aber wir werden dieses Steuerelement D duplizieren, während wir es auswählen. Und dann können wir L2 Panels Text machen. Sicher, warum nicht. Und dann doppelklicken Sie auch, um es im Grunde zu öffnen. Und anstelle des Skript-Ordners, werden
wir einen neuen Ordner machen, L2 Panels Text darin auch. Natürlich, ein neues Drehbuch. Wir werden auch den Text dieses Panels nennen, richtig? Und dann lasst uns das auch öffnen. Und lassen Sie uns das Canvas-Beispielskript schließen. Das brauchen wir nicht mehr. Wir brauchen die Update-Methode nicht noch einmal. Und im Inneren von hier können wir tatsächlich bereits mit der Verwendung der Unity-Engine wi-Namespace beginnen, denn das ist der Namespace, den wir definitiv brauchen werden, weil wir das Textbeispiel verwenden werden. Lassen Sie uns Beispieltext machen. Das ist in Ordnung. Und dann werden wir sehen, wie das in einer Weile funktioniert. Aber zuerst gehen wir zurück auf unsere Leinwand. Lassen Sie uns einfach diesen Text löschen. Warum nicht? Und dann fügen wir ein neues UI-Element hinzu. Und das wird hier unten ein Panel sein. So ist ein Panel im Grunde nur ein Hintergrund mit einem bestimmten Hintergrundbild hier. Und einige bestimmte, einige spezifische bereits, wissen Sie, füllten hier Werte für bestimmte Variablen aus, dass also die Farbe bereits bei nur einem 100 in Bezug auf die Deckkraft gesetzt
wird. Es gibt also ein paar Dinge, die hier reingesteckt werden. Und es sollte im Grunde als eine Art Kulisse fungieren, oder? Also, wenn ich sagen möchte, dass ich hier unten wie eine Benutzeroberfläche haben möchte, dann könnte ich es hier setzen. Und dann, wie Sie jetzt sehen können, habe ich hier eine Art visuelle Markierung, einen Hintergrund. Und das ist im Grunde, wofür die Panels verwendet werden, denn jetzt, wenn ich ein neues Element hinzufüge, das neue UI-Element zum Panel selbst arbeitet, wird es als Kind zum Panel hinzugefügt. Und wie Sie jetzt sehen können, würde ich im Grunde nicht sagen, dass es vom Panel abhängig ist. Ich kann es auch dort draußen stellen, aber das ist eine Art guter Weg, wie Sie Ihre allgemeine Benutzeroberfläche strukturieren sollten. Sie sollten ein paar Panels haben und dann im Grunde haben ihre Kinder immer auf ihnen. Richtig? Was wir tun können, ist, dass wir ein paar coole Dinge niedrig machen können. Und das wäre folgendes. Was ich Ihnen zeigen möchte, ist, dass wir es jetzt hier runterlegen haben. Und mit all der vorherigen Skalierung und all dem. Nun, was passieren könnte, ist, dass das damit skaliert wird. Das ist also ziemlich cool. Wenn wir diesen freien Aspekt haben. Jetzt ist es weg, schätze ich. Nun, das ist nicht das Beste. Wenn ich das Spielfenster hier draußen kriege, dann werden wir sehen, dass
es irgendwie funktioniert, aber es funktioniert auch irgendwie nicht wie immer. Das ist also etwas seltsam, oder? Also mit den Texten, die ziemlich gut funktionierten, aber jetzt, wenn wir einen freien Aspekt haben, wird
das ein wenig Bier sein, und da kommt die Rect Transform ins Spiel. Ich möchte das nur schnell zeigen. Es gibt eine Menge Dinge, die wir hier im Grunde reinbringen können. Aber wie Sie sehen können, ist
das absolut wahnsinnig. Lesen Sie das sieht verrückt aus. Und ich stimme Ihnen zu, weil wir auch
Shift halten und Alt halten können , um im Grunde zwei verschiedene Dinge zu haben. So können wir verschieben auch setzt den Drehpunkt und sollte auch die Positionierung. So können wir es im Grunde so machen, dass es an einem bestimmten Punkt verankert ist. Nun, in unserem Fall, was wir wollen, ist, dass wir
wollen , dass das unten rechts verankert wird? Denn zum unteren Punkt wird die Art der sein, was würdest du sagen? Es wird der,
der Anker und auch der Bezugspunkt sein, richtig? Also, so wird dies zu einem Bezugspunkt. Also, wenn ich zum Beispiel
diesen sowie den Drehpunkt nach unten setzen würde, rechts. Also hat sich im Moment nichts geändert. Du wirst wie sie sein, okay, dass sich nichts geändert hat. Aber wenn ich jetzt dieses Spielfenster wieder nach draußen nehmen würde,
jetzt, wie Sie sehen können, auch wenn ich dies neu skaliere, wird
es am unteren Rand des Bildschirms bleiben. Und das ist auch eine der Dinge. Und es wird mit dem tatsächlichen Bildschirm skalieren. Dies ist eine der Möglichkeiten, wie Sie auch die korrekte Platzierung Ihrer UI-Elemente
erleichtern können. Dabei müssen keine Panels sein, können auch Texte und all die anderen Dinge sein. Und natürlich, wenn ich jetzt zum Beispiel, wenn ich Alt halte, dann wird die Position auch gesetzt. Und wenn ich die Position zum Beispiel oben links setze, wie Sie jetzt sehen können, wird sie oben links von seinem ersten Elternteil gesetzt. Also kommt es nicht, der Text selbst wird nicht oben links in der Leinwand, sondern oben links im Panel platziert. Das ist also auch sehr wichtig, über diese Anker zu beachten. Ich würde nicht sagen, dass wir uns das noch lange ansehen werden. Insgesamt. Sie können ein wenig entmutigend sein, weil das so sein könnte, Oh mein Gott, ich weiß nicht mal, was hier los ist. Völlig verständlich. Aber ich würde mir keine Sorgen darüber machen. Und im Moment wollte ich nur erwähnen, dass Sie
das Spielobjekt grundsätzlich an einem bestimmten Teil des Bildschirms verankern können. Nun, lassen Sie uns mit dem Rest des Panels fortfahren, dies ist im Grunde ein Bild, wie Sie sehen können. Das hat also einfach eine Bildkomponente. Besondere Hintergründe. Dies ist also der Hintergrund, der Panel-Hintergrund, und es hat eine vordefinierte Farbe. Und dann all die anderen Dinge, die ein Bild auch hat. Das ist also im Grunde, was das Panel ist und der Text, den wir bereits gesehen haben. Es gibt eine Menge Dinge, die Ihnen vertraut sein sollten, wenn Sie ein Textverarbeitungsprogramm wie Word zum Beispiel
verwendet haben , oder ich weiß nicht, wie Google Docs. Sie können eine Schriftart festlegen. Sie können den Schriftstil ändern, die Größe, sogar der Zeilenabstand kann geändert werden. Lasst uns das ein bisschen größer machen. Zum Beispiel kann der Zeilenabstand geändert werden, was natürlich nichts bewirkt, weil wir an dieser Stelle nur eine Zeile haben. Wir haben eine Ausrichtung für den Text selbst. Wir können auch sagen, best-fit. Dann wird es im Grunde die Größe der Schriftgröße auf das ändern, was wir wollen. Wir können eine minimale und eine maximale Größe angeben. Wir können auch die Farbe des tatsächlichen Textes ändern. Nun, das kann natürlich auch alles über ein Skript geändert werden. Also lasst uns einfach den Panels Text auf das eigentliche Spielobjekt selbst setzen. Und lasst es uns öffnen. Und nur um des Arguments willen, lassen Sie uns sagen, Beispieltext ist gleich diesem Punkt erhalten Komponentententext. So gibt es die Komponentenmethode wieder den Beispieltext dot txt. Das ist also 1 Sekunde ich nur die Änderung des Textes über ein Skript, das wir bereits gesehen haben, wo wir den Text von 100 auf 300 ändern. Und natürlich, was wir auch die Farbe ändern können. Und dann könnten wir hier zum Beispielzufällige Punktfarbe HSV
sagen, zufällige Punktfarbe HSV
sagen, und dann haben dies tatsächlich, lassen Sie uns einfach die Update-Methode hier auch einfügen. Wenn Eingabe schottky nach unten Keycode Punkt c. Und dann können wir im Grunde einfach die Farbe wieder ändern. In diesem Moment werde ich das nicht wirklich auf eine andere Methode extrahieren. Ich wollte nur zeigen, dass das zum Beispiel
etwas ist, was wir auch tun können. Jetzt geänderter Scheitelpunkt. Wir sind Bildschirm. Wenn ich die C-Taste drücke, dann ändert sich auch die Farbe des Textes. Also, das ist ziemlich cool, eigentlich. Irgendwie witzig. Ja, aber das ist der normale Weg, dass wir grundsätzlich auf
die Elemente oder die Eigenschaften dieser bestimmten Komponente zugreifen können . Und ja, das wäre es eigentlich schon für den normalen Text und die Panels. Und in der nächsten Vorlesung werden wir tatsächlich einen Blick auf einen besseren Text werfen. Und das wird Text Mesh Pro sein
, den ich Ihnen empfehlen würde, anstelle
der normalen Texte zu verwenden , weil manchmal die normalen Texte ein wenig sein können. Nun, ich meine, ich würde nur sagen, dass es nicht so viele Möglichkeiten hat. Das werden wir in der nächsten Vorlesung sehen. Für jetzt, Das war es für Text und Panels. Wie ich schon sagte, Panels sind dort eigentlich nichts zu kompliziert. Nur ein Bild, das als Hintergrund und Text verwendet werden sollte. Nun, wir haben schon einiges davon gesehen. Und der Rest ist im Grunde nur normalerweise über ein Skript zugänglich. Und einige der Dinge. Zum Beispiel kann die beste Passform wirklich nützlich sein um den Text noch zu ändern, während Sie entlang gehen, oder? Das war es also für diesen Vortrag. Ich hoffe, wie immer hast du es nützlich gefunden. Und wenn es irgendwelche Fragen gibt, zögern Sie nicht zu fragen und ich werde sicher sein, zu antworten. Und ja.
73. (Unity UI) TextMashPro für ein besseres Text: In Ordnung, lassen Sie uns die Einführung der Unity UI hier für den Einheitskurs fortsetzen. Und in diesem Vortrag werden wir einen Blick auf den Text Mesh Pro werfen. Dies ist im Grunde ein Paket, das mit Unity selbst kommt, wo Sie Amine nicht viel bessere Kontrolle über Ihren Text haben konnten. Also lassen Sie uns einfach die Textszene dieses Bedienfelds noch einmal duplizieren, steuern Sie D, während Sie es ausgewählt haben. Und L3 wird sein, lasst uns Text Mesh pro machen. Ja, TMP, TXT Mesh Sonde. Und lassen Sie uns es auch öffnen und sicherstellen, dass dies
tatsächlich die Szene ist , an der wir arbeiten. Und lassen Sie uns einfach einen neuen Text Mesh pro zu den Kandidaten hinzufügen. Klicken Sie mit der rechten Maustaste auf die Canvas-Benutzeroberfläche Und anstatt Text zu wählen, werden
wir Text wählen, Text Mesh Probe. Und was passieren sollte, ist, dass ein bestimmtes Fensterjahr
diesen TMP-Importer öffnen sollte , den wir importieren werden, sind das Wesentliche. Also klicken Sie einfach auf diese Schaltfläche und dann wird es etwas tun, vielleicht öffnen Sie Visual Studio, aber das wird eigentlich nicht benötigt. Und da gehst du. Also, jetzt sollte es importiert werden. Wie Sie hier unten sehen können, Text Mesh Pro. Und wir können das wieder schließen. Und jetzt haben wir diesen Text in und dann in Klammern TMP hier. Und wie Sie sehen können, sieht dieser UI-Text ein wenig anders aus. Das ist also nicht Teil davon, aber das ist ein Teil davon. Ein paar Dinge, wie Sie sehen können, die sind anders. Also zuerst haben wir ein bisschen mehr zwei für die Schriftgröße. Wir haben auch ein paar mehr liebenswerte Vermögenswerte selbst. Die kommen mit Materialien. Das sind, wir werden gerne schnell ignorieren für den Moment. Es gibt auch einige Textilien, die wir wählen könnten. Zum Beispiel Überschriften, bestimmte Überschriften. Hier. Wir können Zitate haben, sie sind Titel und solche Sachen. Es gibt Haupteinstellungen. Das sind vor allem die Schrift. Wir können die Schriftart kursiv schreiben lassen. Wir können es sogar eine durchgehende Linie haben, alles in einem großen Großbuchstaben, alles in Kleinbuchstaben, so etwas. Größe funktioniert auch so, wie die Autogröße funktioniert. Es ist ein wenig, was ich nicht weiß. Es ist nicht so gut hier. Sie müssen den Inspektor manchmal etwas größer machen
, damit Sie die Min und das Max richtig wählen können. Vertex-Farbe, noch einmal, ist einfach die, die eigentliche, Lassen Sie uns tatsächlich deaktivieren die Gizmos für einen Moment ist einfach die Farbe des Textes. In diesem Fall gibt es auch Farbverlauf. Also können wir hier auch Gradienten einbauen. Also weiß ich nicht so etwas wie Grün oben links und dann haben wir wie ein Rot, das sie sind. Und dann sind sie wie ein Blau. Wie Sie sehen können, können wir hier einige verrückte Effekte machen. Wenn es sein muss. Es gibt auch einen vertikalen Farbverlauf und einen horizontalen Farbverlauf oder nur einen einzigen, richtig? Wir können die Steuer überschreiben. Ich bin eigentlich nicht 100 Prozent sicher, ob die Farbeinstellung das Farb-Tag überschreibt. Ich habe nie damit herumgespielt. Also kann ich nicht einmal wirklich sagen, was dieses Element für die Abstandsoptionen verwendet wird. Also im Grunde, wenn ich hier etwas geschrieben
habe, kann ich das wahrscheinlich auch tun. Also habe ich hier tatsächlich einen normalen Editor. Und dann der Abstand, Abstand zwischen den Zeichen. Wir haben den Abstand zwischen den Wörtern selbst. Wir haben den Abstand zwischen den Absätzen und ich bin auch zwischen den Zeilen. Ausrichtungsoptionen sind also im Grunde alle gleich. Wir haben auch die gerechtfertigte Option, eine Flush-Option und sogar eine geometrische Mitteloption. Also gibt es hier auch ein paar mehr,
sowie Baseline, Mittellinie und die Kappenlinie, wenn das benötigt wird. Wenn Sie also viel mehr benötigen, im Grunde die Kontrolle über Ihren Text als Text Mesh Pro ein Muss. Wrapping-Modus bedeutet einfach, okay, nicht wahr, wie funktioniert dieser Wrapping? Also, im Moment tut das nichts. Aber wenn ich es jetzt aktiviere, wie Sie sehen können, wird
es automatisch zur nächsten Zeile hier umgebrochen. Dasselbe mit dem Überlauf. Es gibt ein paar Dinge, die Sie mit dem Überlauf tun können, haben Ellipsen, sie maskieren, tun nichts abschneidet, also zeigt es es einfach nicht. Da gibt es ein paar Dinge, die du tun kannst. Und dann horizontales Mapping. Also, wie sieht das aus? Eigentlich ändert nichts in diesem Moment. Aber was wirklich interessant ist, sind jetzt die zusätzlichen Einstellungen hier. Es gibt also Ränder, die du einlegen kannst. Also im Grunde der Rand in Bezug auf das GameObject selbst und es gibt eine geometrische Sortierung. Ich glaube nicht wirklich, dass das etwas tut, nein. Und was interessant ist,
ist jedoch der Rich-Text. Ich würde definitiv den Rich-Text verwenden, ihre Gesamtheit, das ist eine Art der interessanten Dinge in den zusätzlichen Einstellungen. Was hier sehr interessant ist, ist auch das Material. Also das Material, wir werden nicht zu viel hineingehen,
sondern das Material, das im Grunde auch einige der,
einige des Textes selbst verändert . So kann zum Beispiel die Farbe hier auch mit dem Material selbst gewählt werden. Und was Sie jetzt auch tun können, ist einen Umriss zu haben, der wirklich, wirklich cool ist. So können Sie zum Beispiel hier einen Umriss haben, wie Sie sehen können, jetzt hat dieser Text tatsächlich einen Umriss oder eine Unterlage. Ich glaube, das ist eine Art Schatten, glaube ich. Mal sehen, ob ich kann. Ja, da gehst du. Sie werden also auch einen Schatten auf Ihrem Text haben. Da gehst du. Das wäre die Unterlage, richtig? Es gibt also ein paar Dinge, die Sie mit diesem Material tun können, was Sie auch ändern können. Insgesamt gibt Ihnen die Text-Mesh-Projekte enorme Kontrolle über Ihren Text. Und auch, was es in der Regel ein wenig schärfer im Inneren des Spiels. Also, wenn wir es einfach machen würden, machen
wir das hier ein bisschen größer. Normalerweise ist es lesbar. Ein bisschen lesbarer, oder? Lassen Sie uns auch nur um des Arguments willen öffnen Sie den Panels Text hier erneut und ich werde nur den Text Mesh Pro hinzufügen, na ja, Idee dazu. Also in der Regel haben wir den Text verwendet, das wir nicht länger essen können für andere Lehrbücher Sonde müssen wir TMP Pro oder TM Pro verwenden. Dies ist der Namespace, den wir verwenden müssen. Und um den Text zu erhalten, müssen wir TMP Unterstrich Text verwenden. Das ist also der TMP txt. Im Grunde, lass es uns so machen. TMP txt. Eigentlich machen wir es so. Ja, das ist besser. Aber insgesamt, dass der Text selbst im Grunde fast der gleiche ist. Wie Sie sehen können, können wir die Farbe des Farbverlaufs auswählen, aktivieren und deaktivieren. Wir können die Schriftart ändern und Punkt txt noch einmal ist einfach die Zeichenfolge, die mit den Texten verbunden ist. Das Ändern des Textes ist also gleich. Da gehst du. Also das ist alles, was wir wirklich über das Wichtige wissen müssen, dass wir nicht mehr die Textklasse verwenden, sondern die TMP unterstrichen Steuerklasse. Aber wenn Sie das im Hinterkopf behalten, als alles andere wirklich das Gleiche ist, können
wir im Grunde immer noch all diese Dinge hier drinnen ändern, wie wir gerne schreiben würden und das wäre es schon für diesen Vortrag. Nur eine schnelle Zeigen Sie, dass der Text Mesh pro Text ist im Grunde ein überlegen in fast jeder Hinsicht dem Text. Wenn Sie jedoch wirklich nur ähnliche Symbol-Dinge verwenden müssen oder Sie wirklich nur ein paar Dinge in Bezug auf einen UI-Text debuggen möchten, dann genügen auch die normalen Texte dafür. Aber ja, der TMP txt gibt Ihnen viel mehr Kontrolle darüber, wie Ihr Text aussieht, oder? Das war es also für diesen Vortrag. Wie immer, ich hoffe, Sie fanden es nützlich und Sie lernen etwas Neues. Wenn es irgendwelche Fragen wie immer fühlen Sie sich frei zu fragen, und ich werde sicher sein, zu antworten. Und ja.
74. (UI-) Hinzufügen von Bildern in unserer UI-Seite: In Ordnung, lassen Sie uns mit der Einführung der Unity UI hier für den Einheitskurs fortfahren. Und in dieser Vorlesung werden wir einen Blick auf die UI-Bilder werfen oder wie Sie Bilder zu Ihrem Auge hinzufügen. Wir haben dies auch in
einem sehr kurzen Moment gesehen , wenn wir unsere Benutzeroberfläche für den Käseclicker herstellen. Also, was wir tun werden, ist, dass wir zuerst einen neuen Ordner hier hinzufügen, und das wird unser Sprites-Ordner sein. Wir werden den Clicker hinzufügen. Zum Beispiel. Natürlich können Sie hier auch ein anderes Element hinzufügen. So können Sie ein anderes Asset hinzufügen. Und ich werde einfach den Filtermodus auf Punkt und die Komprimierung auf keine einstellen. Und dann, was ich tun kann, ist, zum Beispiel, auf diesem Panel, zuerst einmal, natürlich, lassen Sie uns die Szene duplizieren. Dies wären L4-Bilder. Lassen Sie uns dies öffnen und lassen Sie uns auf unserem Panel auf ein neues UI-Element. Und das wäre das Bild hier. Und da ist es, das Bild. Und es wird verrückt sein, aber es ist eigentlich ziemlich ähnlich dem Sprite-Renderer. Also, wenn wir das hier reinlegen, das Sprite, wie Sie sehen können, da ist es. Und ich meine, das ist es im Grunde. Ich meine, ich will nicht zu verrückt darüber sein, aber insgesamt ist das im Grunde, können
Sie es auch hier ändern. Also, wenn wir Bild gehen, jetzt können wir es ändern. Sei es, du weißt schon, Verrücktheit oder einfach normal. Jetzt können wir natürlich auch die Farbe ändern. Das ist also eine Art Overlay-Farbe über dem, was auch immer das eigentliche Sprite ist. Und das ist wirklich das einzig Interessante für Bilder. Wir werden auch einen Blick auf ein neues Skript werfen. Also L4, ich habe diesen einen L4 neuen Ordner nicht bekommen. Da gehst du. L4. Das wären Bilder. Und dann wäre das das Bild. Lassen Sie uns Bildbeispiel machen, richtig? Das ist ein guter Name. Beispiel. Ja. Lassen Sie uns das auch dem Bild selbst hinzufügen. Sie gehen und dann öffnen wir es und sehen, was wir sehen können. Nun, die Idee hier ist, dass wieder einmal, wir haben, zum Beispiel, allem, müssen wir die Unity-Engine verwenden, die Sie kennen, nicht Zugänglichkeit in diesem Fall, aber UI. Da gehst du. Und wir haben dann zum Beispiel ein privates Image, das UI-Image, zum Beispiel das Beispielbild hier. Und dann könnten wir zum Beispiel auch ein Sprite haben, aber das brauchen wir eigentlich nicht. Das haben wir schon. Beispielbild ist gleich diesem Punkt erhalten Komponente Bild. So erhalten wir die Bildkomponente. Das sollte überhaupt nicht überraschend sein, denn wieder einmal, das Bild hier gehen sie. Das Bild hier ist wieder einmal, nur eine normale Komponente und es ist eigentlich sehr leicht zugänglich. Also, wie können wir diese Sprite ändern? Nun, wir machen einfach Dot Sprite. Das ist alles, was es ist. Dies ist genau das Feld, auf das wir zugreifen müssen, um die Verbreitung zu ändern. Es ist also im Grunde fast genau dasselbe wie der Sprite-Renderer. Das Bild selbst ist also wirklich gar nicht so kompliziert. Und es gibt eine interessante Sache, und das wäre das rohe Bild. Also, wenn ich das Rohbild hier hinzufüge, wenn wir uns das jetzt ansehen und dieses tun, so dass wir es entsperren. Wie Sie sehen können, ist das Rohbild hier ein wenig anders, denn anstatt ein Sprite zu nehmen, braucht dies Textur. Also, wenn Sie zum Beispiel, und das ist etwas, das wir nicht im Detail betrachten werden, aber ich wollte das erwähnen. Wenn Sie also zum Beispiel eine Kamera
haben, die Sie einspeisen möchten, also eine Webcam, dann könntest du nicht, ich meine sogar ein im Grunde ein Film, dies könnte auf einem Rohbild angezeigt werden, weil dies in eine Textur übersetzt. Wir werden damit nicht ins Detail gehen, aber das ist
eine der Dinge, bei denen das rohe Bild mehr Sinn ergibt. Und wie Sie sehen können, könnten wir den Clicker noch hier reinlegen. Das ist also kein Problem. Aber jetzt wäre das eine Textur, oder? Aber insgesamt wäre das eigentlich schon für die Bilder. Ich weiß, dass das nichts Verrücktes ist oder auch. Ja, interessant. Aber so fügen Sie ein Bild zu Ihrer Benutzeroberfläche hinzu. Genau wie bei allem anderen auf der Benutzeroberfläche können Sie es zentrieren. Tun Sie alles, was Sie wollen, mit dem Rektor, transformieren Sie es, bewegen Sie es herum und all den Jazz. Aber insgesamt ist es ein sehr, sehr ähnlich wie der Sprite-Renderer. Richtig? Und das wäre es für diesen Vortrag. Wie ich schon sagte, ein bisschen kürzer. Aber das ist nicht so schlecht, weil Bilder
zumindest in Bezug auf die Benutzeroberfläche sind, nachdem wir den Sprite-Renderer gesehen haben. Nicht so kompliziert, oder? Ich hoffe, ich hoffe immer noch, dass Sie das nützlich gefunden haben. Wenn noch Fragen vorhanden sind, dann zögern Sie nicht zu fragen, und ich werde sicher sein, zu antworten. Und ja.
75. (Unity UI) Knöpfe, kann Spaß machen: In Ordnung, lassen Sie uns mit der Einführung der Unity UI hier für den Einheitskurs fortfahren. Und in diesem Vortrag werden wir einen Blick auf die Knöpfe werfen. So haben wir bereits beim letzten Mal eine Tastenkomponente im Käseklicker gesehen, wo wir einige Buttons gemacht haben, auf die wir klicken konnten. Und jetzt werden wir tatsächlich einen normalen Button von hier hinzufügen. Klicken Sie also mit der rechten Maustaste auf das Panel, zum Beispiel u, i, und wählen Sie dann die Schaltfläche. Wir werden die normale Schaltfläche oder den Text Mesh Pro für dieses Beispiel hier verwenden. Und ja, sobald das hier tatsächlich hinzugefügt wird, können
wir es im Grunde wie jedes andere normale Objekt im Grunde ändern. Und die interessante Komponente auf diesem Knopf ist im Grunde die Brötchenkomponente hier unten. Jetzt haben wir schon ein bisschen davon gesehen, aber nicht zu viel. Der Text, der auf der Schaltfläche angezeigt wird, ist eine weitere Textkomponente darunter, im Grunde als Kind. Und wir können das größer machen. Und zum Beispiel, sagen Sie „Klick mich“, „So etwas“, oder? Lasst uns das am besten passen. Da gehst du. Also, jetzt heißt es Click Me Wenn wir in das Spiel schauen, da ist es, gibt es die Schaltfläche. Und wir können tatsächlich ein paar Dinge haben, die wir im Grunde setzen können. Also Nummer eins, wir können festlegen, ob das hartnäckig ist oder nicht. Also, wenn es nicht interaktierbar ist, bekommt
im Grunde das, bekommt die deaktivierte Farbe, die hier benachrichtigt wird. Sehen wir uns einfach die deaktivierte Farbe hier an. Also können wir auch sagen, oh, wir wollen es rot machen, aber ich denke, es macht Sinn, diese Art von ausgegraut zu haben. Das ist, was die meisten Leute für eine deaktivierte Schaltfläche erwarten würden. Es gibt auch, wenn wir es wieder einschalten, haben
wir die normale Farbe. Dann haben wir eine Farbe, die hervorgehoben wird. Wenn wir also den Mauszeiger darüber bewegen, dann wird das in diese Farbe geändert ,
während ich zum Beispiel die Maustaste drücke. Die ausgewählte Farbe ist, wenn
wir zum Beispiel mit den Pfeiltasten auf der Tastatur bewegen, weil wir grundsätzlich verschiedene Arten von UI-Elementen mit den Tasten dort auch auswählen können . Wir haben auch einen Farbmultiplikator und eine Fade-Dauer. Wir können den Übergang auch tatsächlich ändern, so dass wir tatsächlich eine bestimmte Animation damit assoziiert haben können. Wir können sogar das Sprite selbst ändern. Also, wenn Sie verschiedene Sprites für den Knopf vorbereitet haben, dann können Sie das auch tun. Und die Navigation hier, das ist genau das, was im Grunde ist, daher die Pfeiltasten auf Ihrer Tastatur, so dass Sie zwischen bestimmten Tasten wechseln können, zum Beispiel. Also, wenn ich diese Taste Control D duplizieren würde, und ich werde es hier setzen, dann können wir tatsächlich die Navigation visualisiert betrachten. Und wie Sie sehen können, wenn ich den Pfeil nach rechts drücke, würde
ich zu diesem wechseln. Wenn ich links ankommt würde zu diesem jetzt wechseln, sind diese die einzigen interaktablen, wissen
Sie, Tasten, die es gibt. Das ist also, was die Visualisierung zeigen würde. Aber dann haben wir natürlich auch den Onclick, das ist das Einzige, was wir eigentlich einen kurzen kleinen Blick darauf werfen werden. Also lassen Sie uns sehen, dass das eine große ist, Wir haben tatsächlich nicht geändert Die wir haben die Szene verdoppelt und etwas ändern. Unglaublich, Das ist nicht etwas, was wir tun können. Also lassen Sie uns tatsächlich das eigentliche Bild hier machen, L5 Tasten. Wir werden das neu laden und dann die duplizierte Szene, die wir so nehmen werden, wie sie ist. Und das wird auch in Ordnung sein. Also die L5 Tasten, was können wir hier tun? Lassen Sie uns ein neues Skript erstellen, L5-Tasten. Und wir werden hier tatsächlich zwei Skripte erstellen. Einer von ihnen ist nur ein Knopf. Also werde ich ein paar Dinge zeigen, die wir in den Skripten mit Schaltflächen tun können. Und dann gibt es ein anderes Skript, das ist nur die Beispielausgabe. Sagen wir mal, nennen wir es so etwas. Und lassen Sie uns hier ein neues leeres Objekt erstellen, das die Beispielausgabe sein wird. Und setzen Sie das auf 000 und legen Sie das Beispielausgabeskript darauf. Und dann, wenn wir zur Panel-Schaltfläche gehen, fügen Sie das Schaltflächen-Skript zu diesem hinzu. Das Ego, da ist es. Und doch lasst uns beide öffnen und sehen, was wir hier tun können. Also der erste wird sein, Lassen Sie uns die Beispielausgabe betrachten. Schließen wir die anderen. Im Inneren von hier. Wir werden eigentlich nur eine öffentliche Leere haben. Und dann sagen wir eine
Ausgabe, geben Sie etwas aus, das der Name der Methode ist. Und diese Methode wird einfach im Grunde protokollieren, ich habe etwas ausgegeben, ich habe etwas ausgegeben, etwas. Da gehst du. Und das ist im Grunde die Sache, die wir zu diesem Button hinzufügen könnten. Wenn wir also noch einmal auf die Schaltfläche schauen, können
wir manuell ein On-Click-Ereignis hinzufügen. Das passiert, wenn wir ein Plus setzen. Und hier können wir eigentlich alles einbauen, so dass wir es entweder einpacken können, wie Sie sehen können, wir können in Skripte einfügen, wir können verschiedene, fast jedes Objekt, das wir im Grunde ziehen können. Aber was wir wollen, ist dieses Beispiel, Ausgabe GameObject. Und wenn wir das
hineinlegen, können wir auf alle Funktionen zugreifen. So zum Beispiel, das Spiel Objekt Funktionen, können
wir den Namen ändern. Wir können es entweder aktiviert oder deaktiviert einstellen. Das ist also auch nützlich für einige Dinge, bei denen Sie nicht unbedingt neue Methoden dafür erstellen müssen. Wir können die Transformation so einstellen, dass wir hier auch ein paar Dinge tun können. Und auch können wir auf das Komponentenbeispielausgabeskript zugreifen, das dann auch
die Ausgabe Something Methode hat , die wir dort im Grunde setzen können, richtig? Also, wenn wir jetzt hier klicken, wie Sie sehen können, habe ich etwas ausgegeben. Die Methode in diesem Beispiel wird die
Ausgabe tatsächlich als keine Probleme bezeichnet. Nun gibt es eine andere Möglichkeit, eine Schaltfläche über das Skript neue Funktionen hinzuzufügen. Und wir werden uns das jetzt im Schaltflächen-Skript ansehen, in einer Art von Bund Skript. Zuallererst müssen wir natürlich das Unity Engine Dot UI Framework,
UI Framework oder besser gesagt Namespace verwenden , den Sie gehen. Und dann können wir eigentlich nur noch machen Lasst uns einfach einen privaten Button machen. Das ist also der Knopf, sagen wir mal. Und das wird auf diesen Punkt gesetzt werden get Component Button. Das ist also ein Scan die diese Komponente oder die Komponentenmethode, die durchscheint und die Schaltfläche. Wir können dann im Grunde dieses onclick haben und dies ist ein Click-Ereignis, wie Sie sehen können. Und wir können Zuhörer hinzufügen. Im Inneren von hier. Wie Sie sehen können, sollten die Parameter eine Einheit Ereignisse, Einheit Aktion sein. Und wir können dies im Grunde tun, indem wir hier einen Lambda-Ausdruck machen. Zum Beispiel könnten wir sagen Debug Dot Log und dann so etwas wie vier Geräusche. Warum nicht? Lassen Sie uns ein wenig lustigeres Jahr. Warum ich nicht recht hätte. Das würde dann wiederum einfach das nennen. Wir können auch, wenn wir eine andere Methode hier drin haben, können
Sie auch privat sagen. Nehmen wir an, vermeiden Sie den Testen Button oder so etwas. Debuggen Sie Punktprotokoll. Wieder mal so aussehen, als hätte ich den Knopf gedrückt. Und wir können dies auch hinzufügen, indem wir On-Click-Listener tun. Und dann können wir einfach als eine
Art von nur dem Namen der Methode testen , ohne dass es in einem Methodenaufruf gewesen ist. Setzen Sie also nicht die Klammern hier ein, sondern nur den tatsächlichen Namen der Methode. Und das funktioniert auch. Dies wird dann diese Methode aufrufen, wenn auf die eigentliche Schaltfläche geklickt wird. Mal sehen, ob das funktioniert. Was wir also erwarten sollten, ist, dass wir sehen wollen, dass ich etwas für Geräusche
ausgegeben habe und dann die IF klickte auf die Schaltfläche. Mal sehen, ob das tatsächlich der Fall ist. Wir können übrigens die onclick-Änderungen hier nicht sehen. Aber was wir nicht sehen können, sind die vier Geräusche und die ich drücke den Knopf. So werden diese dann ohne Probleme durch den Button Klick aufgerufen. Und das ist im Grunde der Anzeigenlistener hier. Kann unglaublich nützlich sein, wenn Sie die verschiedenen Funktionalitäten für die Schaltfläche einstellen möchten, vielleicht abhängig davon, ob etwas geöffnet oder
geschlossen wird oder auch wenn Sie andere,
Sie wissen, Bedienfelder oder so etwas haben . Es gibt also einige Funktionalität und einige Nützlichkeit dafür, definitiv. Aber insgesamt, das ist eigentlich schon es für den Button. Es ist nicht so aufregend. Wieder einmal gibt es natürlich ein paar Dinge, bei denen wir
die Farben ändern können und so etwas und die Untrennbarkeit. Aber wir haben auch die Veränderungen
sowohl der Untragbarkeit als auch ein wenig für das Hinzufügen neuer Zuhörer gesehen . Sie sind im Käseklicker. Und insgesamt wäre das gut für den Knopf. Es ist nichts zu verrücktes dran. Es ist im Grunde nur ein UI-Element, auf das Sie klicken können. Und das wäre es für diesen Vortrag wie immer, ich hoffe, Sie fanden es nützlich und Sie lernen etwas Neues. Wenn es irgendwelche Fragen gibt, natürlich,
wie immer, zögern Sie nicht zu fragen und ich werde sicher sein, zu antworten. Und ja.
76. (Unity UI) Toggles und Schieberegler: In Ordnung, lassen Sie uns die Einführung der Unity UI hier für den Einheitskurs fortsetzen. Und in diesem Vortrag werden wir einen Blick auf Umschalter und Schieberegler werfen. Also zunächst einmal, lassen Sie uns unsere L5 gesehen bis zu kopieren, um es L sechs insgesamt Schieberegler zu machen. Und lassen Sie uns auch, ja, eigentlich brauchen wir dafür keine Skripte zu erstellen, weil diese, naja, ich meine, das meiste davon wird eigentlich ziemlich selbsterklärend sein. Und Sie werden auf die einzelnen Komponententeile,
die Komponentenfelder und Eigenschaften zugreifen . Alles andere, was wir bisher gesehen haben, also, ja, innerhalb der Leinwand, lassen Sie uns zuerst ein neues Panel hier hinzufügen. Also hier unten eine Tafel. Und lassen Sie uns das auf der rechten Seite des Bildschirms platzieren. So Panel, Lassen Sie uns es auch wieder auf die Gizmos drehen,
dass, Das wäre irgendwie nützlich, ein Ego. Und ja, das ist in Ordnung. Wir können den Text auch ein wenig wegbewegen. Und dann Beginn dieses Panels, wir haben zwei UI-Elemente hinzuzufügen. Einer von denen wird der Umschalter zuerst sein. Lassen Sie uns das ein bisschen größer machen und ich werde mir das ansehen. Und dann lassen Sie uns auch sofort die Schieberegler hinzufügen. Und wir können das tatsächlich größer machen und sofort etwas sehen. Das ist also ziemlich cool. Werfen wir einen Blick auf den Umschalter zuerst. Also der Umschalter, das eigentliche Spielobjekt hat die Gesamtkomponente zu ihm. Wir werden uns das in einer Weile ansehen. Aber zuerst schauen wir uns den Hintergrund des Häkchens und des Labels an. Das Label ist also ein normales Textobjekt, was Ihnen normalerweise zeigt, was dieser spezielle Toggle tut. Wir können das einfach so groß machen, dass wir sehen können, was hier vor sich geht. Dasselbe mit dem Hintergrund und dem Häkchen. Das sind beide nur ein Bild. Im Grunde. Sowohl der Hintergrund als auch das Häkchen, nur ein Bild, das Sie möglicherweise sogar ersetzen könnten. Sie können diese natürlich auch nach oben skalieren. Nehmen wir also zuerst an, die Größe des,
die Größe des Hintergrunds, und dann kann das Häkchen auch X2 groß sein. Lasst uns das hier treffen. Und wenn wir dann die Alt-Taste drücken, während wir die Größe ändern, können wir sie aus allen verschiedenen Blickwinkeln ändern. Es hängt davon ab, ob Sie eine so große Umschaltmarke wollen oder nicht. Aber das ist natürlich etwas, was man zum Beispiel tun könnte. Und so ist das im Grunde nur das Häkchen im Hintergrund gibt es nur um sehr leicht zu verstehen Bilder. Und das Etikett wird, wie ich schon sagte, nur der Text. Und dann ist der Umschalter derjenige, der interessant ist. Also wieder, interagierbar, so dass wir tatsächlich aktivieren und deaktivieren können. Der Übergang ist derselbe. Wir können entweder durch eine Farbe besucht oder wir können
das Sprite ändern oder haben eine Animation mit ihm verbunden. Das ist also im Grunde alles, was wir bereits in der Schaltfläche gesehen haben. Der Unterschied hier ist nur, dass wir einen unbekannten Wert geändert haben. Grundsätzlich Methode, die aufgerufen wird, wenn sich der Wert ändert. Aber das ist eigentlich auch ein Ereignis, das Sie zum Beispiel
abonnieren können, das wir mit unseren eigenen Veranstaltungen gesehen haben. Dies ist eines dieser Ereignisse in der Theorie, mit denen wir das tun könnten. Und hier können wir auch einfach hinzufügen. So zum Beispiel Ausgabe. Wieder einmal, wenn es sich ändert, können wir zum Beispiel auf der Toggle und Funktion Beispielausgabe sagen und dann etwas ausgeben. Dies funktioniert natürlich auch, wenn wir die Methode haben, die wir aufrufen möchten. Wenn das tatsächlich einen booleschen Parameter hat, dann wird es auch
den booleschen Parameter übergeben , den wir ihn ändern, der Umschalter in. Das ist also ziemlich cool. Ist auf ist im Grunde genau der Boolean, nach dem wir suchen möchten. Also ist an, macht ein Häkchen angezeigt, und wenn dies nicht der Fall ist, dann ist das auf Boolean falsch und es gibt kein Häkchen dort. Also lasst uns einfach den Umschalter ein- oder zweimal benutzen. Wie Sie sehen können, kann ich darauf klicken und wie Sie sehen können, habe ich etwas ausgegeben. Und dann, wenn wir uns wieder ändern, wird
dies noch einmal passieren, weil wir gerade erst nach einer Wertänderung suchen. Also schauen wir nur, ob dieser Wert tatsächlich
von true zu false oder von false zu true ändert . Wenn wir zum Beispiel das Label ändern, könnte dies zum Beispiel so etwas wie eine Perma-Tod-Option
sein. Als Beispiel, wenn es um den Schieberegler geht, ist
dieser Brief, würde ich sagen, irgendwie um die gleiche Komplexität. Es ist etwas komplexer. So haben wir wieder ein Bild. Dies ist einfach das Hintergrundbild des Schiebereglers. Ich würde raten, dies als eine Art von der gleichen Länge zu behalten. Der Füllbereich am Füllbereich wird angezeigt, sobald wir diesen Griff, Griff,
leichten Bereich und den Griff tatsächlich bewegen können, im Grunde den Griff können wir es bewegen, die Sie nicht den Griff unabhängig vom Schieberegler bewegen sollten. Da der Schieberegler hier, wenn wir einen Blick auf den Wert hier, wenn wir dies ändern und wie Sie sehen können, ändert sich
der Schieberegler tatsächlich. Und die wirklich coole Sache an diesem Schieberegler hier ist, dass wir tatsächlich sagen können, Okay, vor allem, welche Richtung geht es von rechts nach links, von links nach rechts, oben nach unten oder von unten nach oben und dann von oben nach unten. Wir behalten es links nach rechts. Jetzt noch einmal, alle üblichen Dinge, die in der Lage sind, zu tun, interaktierbaren Übergang der Farben, wissen
Sie, das ist, das ist eine Art von Sache. Und die Min und Max Wert andere Dinge, die wirklich interessant sind. Weil die Idee hier ist, dass, wenn wir das im Grunde bewegen, wir können zum Beispiel sagen, nun, wir wollen, dass der Mindestwert 0 ist und der Maximalwert eine 100 ist, zum Beispiel, richtig? Dann können Sie das ändern. Und wie Sie jetzt sehen können, ändert sich die Zahl hier von 0 auf so etwas. Und wir können auch sagen, nun, wir wollten, dass das nur ganze Zahlen ist, oder wir wollen nicht, dass es sich um ganze Zahlen handelt. Also könnten Sie, zum Beispiel, ich glaube, dass, wenn ich 10,5 setzen würde, dann würde das funktionieren. Wenn ich ganze Zahlen habe, dann sind nur ganze Zahlen die Sache, die hier mit dem Wert funktionieren würde. Das ist also ziemlich cool. Wir können eigentlich sagen, dass wir auch negativ werden können, oder? Das funktioniert gut. Das ist also wirklich cool, um verschiedene Werte dafür zu senden. So könnte dies zum Beispiel A1 und FMV oder so etwas
sein. Wenn wir dafür einen Text wollen, dann müssten wir ihn selbst hinzufügen. Aber das sollte kein Problem sein. So können wir zum Beispiel einfach UI-Text sagen und ihn dann hier hinten hinzufügen und dann etwas größer machen. Sagen Sie etwas wie f von v zum Beispiel. Und dann haben wir hier einen Text. Das ist also, das würde auch als Beispiel funktionieren. Und ja, wir können das auch ändern. Also innerhalb unseres Spiels, wenn wir dies haben, wenn wir den Schieberegler auswählen und Sie können jetzt sehen, ist der Wert 35. Und wenn ich darauf klicke und es tatsächlich ändere,
und wie Sie diesen Schieberegler sehen können, ändert sich auch
der Wert. Ich kann auch glauben, okay, Scroll bereit funktioniert nicht so,
aber Sie können die Pfeiltasten verwenden, um im Grunde von links nach rechts für den Wert zu bewegen. Und wieder einmal gibt es hier eine weitere Veranstaltung, die Sie abonnieren können. Also auf Wert geändert. Und das gibt Ihnen den Wert damit als Parameter. In der Theorie könnten Sie also eine Ya'll Methode haben, die die Änderung hier auswertet. Und wenn es etwas Besonderes ist, dann könnte dort etwas passieren. Richtig? Und das wäre eigentlich im Grunde für die Umschalter und die Schieberegler. Ich denke, dass sie hauptsächlich in Optionsmenüs nützlich sind. Draußen bin ich mir nicht zu 100 Prozent sicher, wo du sie benutzen würdest, aber ich glaube, dass viele Leute
andere kreative Wege finden könnten, auf denen du diese nutzen könntest oder sollten, oder? Aber das wird es für diesen Vortrag wie immer sein, ich hoffe, Sie fanden es nützlich und Sie lernen etwas Neues. Wenn es irgendwelche Fragen gibt, wie immer, zögern Sie nicht zu fragen und ich werde sicher sein, zu antworten. Und ja.
77. (Unity UI) Layout in Unity: In Ordnung, lassen Sie uns mit der Einführung der Unity UI hier für den Einheitskurs fortfahren. Und in diesem Vortrag werden wir einen Blick auf Layouts werfen. Dies ist im Grunde, wo wir einen Blick auf gut werfen, Layouts und wie man das Layout Ihrer Benutzeroberfläche irgendwie automatisiert. Und dafür habe ich bereits L7-Layout als Szene erstellt, so dass Sie das auch tun können. Und dazu werden wir hier eine neue Leinwand hinzufügen. Natürlich wird diese Leinwand unter Weltraum-Kamera, Hauptkamera sein. Und dann werden wir auch sicherstellen, dass es hier den gleichen Skalar hat. Also skalieren Sie mit Bildschirmgröße, 1920 auf 10 ,
80 und 85, und die Referenzpixel, wir werden es auf 200 setzen, nur für die Hölle. Richtig? Und jetzt werden wir ein Panel hinzufügen. Mal sehen, da gehst du. Und dann werden wir dieses Panel dreimal duplizieren, so dass wir drei Panels haben. Und all diese drei Panels werden als Kinder des ersten Panels gehen. Und das, das hier, wir werden nur die Größe des Panels ändern. Nummer eins, wir werden die Größe ändern und es hier setzen. Und dann werden wir auch die Größe ändern. Muss nicht unbedingt die gleiche Größe haben. Nur ähnlich. Und das werden wir hier in die Mitte setzen. Und dann nehmen wir das letzte Panel und machen etwas sehr Ähnliches. Damit wir jetzt drei Panels nebeneinander haben. Und plötzlich so klappt
das sehr gut. Lassen Sie uns das tatsächlich ein bisschen skalieren, so dass sie irgendwie die gleiche Größe haben, nicht wie ich sagte, und ich muss
die gleiche Größe haben , weil wir die Größen sowieso ändern werden. Das erste, das wir betrachten werden, ist das vertikale Layout. Also werde ich das das vertikale Layout nennen. Und was ziemlich cool ist, ist, dass wir im Grunde
eine bestimmte Art von Layout-Gruppe in diesen Panels haben können . Zunächst einmal werden wir eine Art erstellen,
eine neue, na ja, ich sage sozusagen wie ein Display. Also werden wir hier ein neues Panel hinzufügen. Und wir werden das so machen, dass es irgendwie zentriert ist. Und dann werden wir noch ein paar weitere Details hinzufügen. So zum Beispiel ein neues Bild. So könnten Sie darüber nachdenken, vielleicht ist dies vielleicht ein Auswahlbildschirm für ein bestimmtes Element oder so etwas. Also haben wir hier ein Bild. Wir werden es nicht füllen, wir behalten es einfach so, wie es ist. Ich meine, wir könnten es mit einem Klicker füllen, schätze ich. Nicht so, aber so. So können wir zum Beispiel den Clicker dort hineinlegen. Warum nicht? Und dann auf dem Panel werden wir auch einen neuen Text hinzufügen. Also werden wir vielleicht einen Text an der Spitze haben,
der so etwas wie ein wirklich cooles,
wirklich cooles Element sein wird , richtig? Und dann lasst uns das ein bisschen größer machen, damit wir es richtig lesen können. Lass uns am besten passen. Ja, das ist gut. Und dann werden wir diesen Text duplizieren und vielleicht eine Beschreibung hier haben. Also werden wir einfach so etwas wie Lorem Ipsum für diesen hier verwenden. Also, da gehst du hin. Also, jetzt haben wir im Grunde ein cooles kleines Panel hier. Könnte ein Element-Panel oder so etwas sein, was wir wollen, gut haben dies in einer vertikalen Weise angezeigt. Wir wollen also, dass dies so angezeigt wird. Und dann der nächste hier und der nächste hier. Natürlich können wir dieses Control D duplizieren und dann die zweite ein wenig nach unten bewegen. Und so weiter und so weiter. Aber es funktioniert nicht wirklich so gut, wie wir es gerne hätten. Und deshalb können wir hier einfach ein Layout auf dieses Panel setzen. Und das werden wir tun. Also gehen wir zu Add Component,
um, um, und dann legen Sie das Layout direkt hier. Und dann werden wir das vertikale Layout auf diesem verwenden. Jetzt vor allem, wie Sie sehen können, bricht hier
alles. Mach dir deswegen keine Sorgen. Wir werden es benutzen, wir werden das tun und das in kurzer Zeit beheben. So können wir hier zurück gehen und wie Sie sehen können, werden
einige Werte durch vertikale Layout-Gruppe gesteuert. Das bedeutet also, dass sich das grundsätzlich ändert. Jetzt können wir das wieder ändern. Also gehen wir zum Element-Panel hier, richtig? Uh, wurde ein bisschen zurückgetauscht. Wir können jedoch, wie Sie sehen können, seine Position ändern. Wir können die Größe hier ändern, aber wir können die Position ändern, jetzt spielt die Größe eigentlich keine Rolle, wie es aussieht. Denn wir werden auch sagen, verwenden Kinderwaage, dass im Grunde das Kind, wenn wir tatsächlich, das ist nicht die Skala, seine Größe. Da gehst du. Also, wenn wir das tun, also wenn wir sagen, Kontrolle Kindergröße, dann wird es bis zu genau der Größe seines Elternteils. Also wird das Panel hier bis zu seinem übergeordneten Element skaliert. Und nun das coole Ding mit der Layout-Gruppe und der vertikalen Layer-Gruppe auch dafür, können
wir eine Polsterung sagen. Padding ist im Grunde der Raum zwischen dem Kind und seinen übergeordneten Grenzen, sozusagen. Also, wenn ich hier links bin, wie Sie sehen können, wird es links kleiner. So können wir zum Beispiel 15, 15, 15 und 15. Also, jetzt wird es in die Mitte verschoben werden. Und sozusagen 15. Der Abstand kann auch vordefiniert werden. Also lasst uns eine 15 einlegen. Und wenn Sie jetzt dieses Element Panel duplizieren, schauen Sie, was passiert. Sie Layout automatisch, dass, legen Sie sich hier mit einem 15 Abstand zwischen ihnen und überall von der Grenze haben wir auch eine 15 Yup. Einheit. Grundsätzlich Abstand oder Polsterung. In diesem Fall. Die Kind-Ausrichtung sagt einfach: Okay, wo fangen wir mit dieser Ausrichtung an? In diesem Fall spielt es keine Rolle. Wo wichtig sein könnte, ist, wenn Sie tiefer setzen,
so würden wir von unten nach oben im Grunde zählen. Aber oben links wäre in Ordnung. umgekehrte Anordnung kehrt einfach die Reihenfolge dieser, die Skalierung und die Größe um, wie ich sagte. Wenn Sie also die Größezum Beispiel
für die Höhe eingeben,ändert sich hier im zum Beispiel
für die Höhe eingeben, Moment nichts, aber wir können dies erweitern. So können wir das Kind zwingen, sich zu erweitern. Und das wollten wir oft tun. Denn wenn wir jetzt mehr hinzufügen, wie Sie sehen können, wird es
jetzt irgendwann etwas zu überfüllt. Aber zum Beispiel funktioniert
eigentlich wirklich gut und es sieht wirklich schön aus. Das wäre also das vertikale Layout. Nun, als nächstes ist das Gitterlayout auch nutzbar? Oft können Sie tatsächlich eines dieser Element-Panels kopieren und es hier einfügen. Auf das Rasterlayout und stellen Sie sicher, dass es tatsächlich hier zentriert ist. Und wir machen das ein bisschen. Also sind wir eigentlich die Beschreibung hier. Und dann die, Sie haben so etwas. Also lassen Sie uns das hier setzen und dann der Knoten drehen es aber. Und dann wird der Titeltext oben nach
oben gehen und vielleicht auch etwas kleiner machen, so etwas. Und ja, wir werden sehen, ob das auch funktioniert. Also vielleicht ein wenig weniger Text und, oder ein wenig kleiner eines Bildes. Und das ist okay. Jetzt auf das Rasterlayout. Also noch einmal, unter dem Layout können wir einfach Rasterlayout sagen. Es wird sofort die Größe des Elementfelds hier ändern. Und wir werden uns in einer Weile darum kümmern, denn gerade hier ist
diese Zellengröße genau das, was sie tut. Es macht dies zu einer bestimmten Größe. Schauen wir uns zunächst einmal die Polsterung an, das ist das Schwenken wieder genau das Gleiche. Also, wenn ich 15, 15, 15
und 15 sage , dann wird Polsterung an der Grenze des Elternteils haben. Grundsätzlich ist die Zellengröße genau gibt die Größe der einzelnen Zellen. Zum Beispiel könnten wir so etwas sagen wie, naja, vielleicht ist ein 150 genug, aber warum es etwa 200 sein muss. Und das könnte, das könnte funktionieren, oder? So können wir das zum Beispiel auch etwas kleiner
machen. Damit wir das etwas kleiner machen können, oder? Dann würde das passen und es ein wenig kleiner machen. Es wird jetzt schwer zu lesen sein, aber das ist natürlich sowieso
nur ein Beispiel. Also, da gehst du hin. Das wäre also nicht, würde theoretisch funktionieren. Und dann, wenn wir ein neues Element Panel hinzufügen, können
wir sofort sehen, dass es hier auf der rechten Seite hinzugefügt wird. Und wenn wir noch einen auf dieser Seite hinzufügen, gibt es nicht genug Platz. So wird es sozusagen zur nächsten Zeile hinzugefügt. Und wenn ich das ein wenig ausdehne, dann, wie Sie sehen können es
jetzt tatsächlich zur gleichen Zeile hinzugefügt. Das ist also ziemlich cool. Wir können auch einige Abstände haben. Dies ist also der Abstand zwischen den tatsächlichen Elementen, den Layout-Elementen. Wir können eine andere Startecken haben. So können wir zum Beispiel unten links beginnen oder wir können unten rechts beginnen. Jetzt funktioniert das eigentlich nicht. Ich bin mir nicht ganz 100 Prozent sicher, warum das so ist. Ich werde, weil die Ausrichtung dort Sie gehen. Also stellt die Ausrichtung tatsächlich auch sicher, wo das beginnt, eine horizontale oder vertikale, richtig? So können wir zuerst die Spalten und dann die Zeilen oder eine Spalte für Spalte füllen, oder wir können Zeile für Zeile gehen. Und die flexiblen Abhängigkeiten können auch flexibel sein. So flexibel bedeutet einfach, dass, was auch immer passt, es passt. Wenn die Einschränkung feste Spaltenanzahl ist, dann können wir sagen, okay, wir haben nur so viele Spalten, oder wir können eine feste Zeilenanzahl haben. Und dann können wir im Grunde ändern, wie viele Zeilen es gibt oder wie viele Spalten sie sein müssen. Es gibt also tatsächlich viel zu spielen mit dem Rasterlayout. Ich kann nur wirklich, ich würde sagen, Ratschläge, um mit ihm ein wenig zu spielen. Das Rasterlayout ist einer meiner Favoriten und es funktioniert wirklich, wirklich gut. Also, wenn ich nur einige von ihnen überkopiere und ich werde sagen, ich mag den Abstand von denen wirklich nicht. Ich kann einfach den Abstand hier hinzufügen und alles tut nur, was es tut. Also das ist, ich finde das ziemlich cool. Und es ist auch wirklich toll, denn wenn Sie UI-Elemente generieren, dann ist die Idee, dass sie automatisch auf eine Weise ausgelegt werden, die funktioniert. Und das letzte wäre das horizontale Layout. Layout. Lassen Sie uns auch einen von denen kopieren und ihn hier hineinlegen. Und das horizontale Layout sollte niemanden überraschen, ist auch auf Layout unter horizontalem Layout. Und das bedeutet einfach, wenn
ich ein anderes hinzufüge, dann werden sie horizontal hinzugefügt. Es gibt also kein Gitter in diesem Fall. So könnten Sie zum Beispiel auch diese
erweitern, um so etwas wie ein Nein zu sein, da gehen Sie, dieses zu sein wie eine wirklich lange. Zum Beispiel. Lassen Sie uns das löschen und machen es wieder. Und dann könnten wir für das horizontale Layout sagen, wieder einmal ist das
Auffüllen der gleichen Abstände zwischen diesen gleich. Und wir können die umkehren, wir können die Größe kontrollieren, oder? Das funktioniert auch. So steuern Sie die Größe noch einmal, mischen Sie dies erweitert, um die gesamte Größe zu sein. Abstand sollte selbsterklärend sein Polsterung eher an dieser Stelle, Abstand oder alles hier sollte eigentlich selbsterklärend sein. Wenn wir sowohl das vertikale als auch das Rasterlayout gesehen haben, sind
sie alle sehr ähnlich, aber tun etwas andere Dinge, richtig? Und das wäre es für das Layout. Vortrag hier. Layout ist unglaublich nützlich, besonders wenn Sie eine Art von UI-Prefabs haben, die Sie auf Ihrer Benutzeroberfläche instanziieren. Zum Beispiel, wenn Sie, ich weiß nicht, wie 10 Elemente, dann möchten Sie ein Beispiel für 10 Elemente hier, 10 Optionen, die Sie klicken können. Und vielleicht, wenn Sie wollen, wenn Sie 20 Artikel haben, na ja, dann wollen Sie 20 von denen, und sie sollten in einer bestimmten Weise ausgelegt werden, dann können Sie im Grunde erleichtern, dass mit, zum Beispiel, , entweder das vertikale, das Rasterlayout oder das horizontale Layout. So unglaublich nützliches Werkzeug, um automatisch UI-Elemente anzulegen, richtig, und das wäre es für diesen Vortrag. Ich hoffe, du hast es nützlich gefunden. Wenn Sie es täten, würde ich natürlich eine Rezension von Ihnen sehr schätzen. Andernfalls, wenn es noch einige Fragen, dann natürlich, fühlen Sie sich frei zu fragen, und ich werde sicher sein, zu antworten. Ja.
78. (Unity UI) Scrollbars und Masken: Oder ich, lassen Sie uns die Einführung der Unity UI hier für den Einheitskurs fortsetzen. Und in diesem Vortrag werden wir einen Blick auf Scrollbalken und die Scroll-zerstörte Komponente werfen. Diese Art von Arbeit Hand in Hand. In unserem Fall möchte ich Ihnen im Grunde zeigen, wie er eine Ansicht machen könnte. Und dann scrollen Sie nach oben und unten, haben im Grunde mehrere Elemente gleichzeitig vorhanden. Und dafür werden wir einfach das L7-Layout duplizieren. Und wir werden diese LH-Scrollbars nennen. Und lasst uns das sofort öffnen. Und zu niemandem überraschend, sieht
das genauso aus, weil wir gerade die Szene dupliziert haben. Und wir werden dies als Beispiel für das vertikale Layout hier machen. Und das erste, was wir tun werden, ist, dass wir das noch größer machen werden. Also das Buch, wir wollen es nicht bewegen, wir machen eigentlich nur wollen, um es größer zu machen. Also wird das eigentliche vertikale Layout-Panel selbst viel größer werden. Und dann werden wir einfach das letzte Element Panel hier duplizieren und ein paar mehr haben. Lassen Sie uns sie nicht vom Bildschirm laufen lassen oder aus dem eigentlichen Layout-Panel, aber nur so, dann sollte es in Ordnung sein. Und dann wollen wir das im Grunde definieren. Nun, wir werden eine Art haben,
ein neues Panel, das eine Art von dieser Größe ist, wo die als Fenster fungieren wird und der Rest nicht sichtbar sein wird. Das ist die Idee hier. Und so schauen wir uns die Bildlaufleiste an. Die Art und Weise, wie wir dies tun können, ist vor allem, lasst uns so etwas machen. Also werden wir ein neues Panel erstellen, nicht im Grunde als Geschwister zum vertikalen Layout-Panel. Und das wird unter einem UI-Panel sein. Jetzt wird das wirklich groß sein, aber das ist, wir können dies auf ungefähr die gleiche Größe wie die ursprüngliche Größe ändern. Also jemand wie der. Und dann geben wir es ein bisschen extra auf der rechten Seite, damit wir ein wenig Leseraum für unsere Bildlaufleiste
haben. In diesem Panel wird, was oben
hier oben sein und wir werden dies das Scroll-Panel nennen. Sicher. Und dieser muss es. Lassen Sie uns eigentlich auch sicherstellen, dass dies korrekt zentriert ist. Da gehst du. Das sollte sehr gut funktionieren. Und dann werden wir zwei Komponenten hinzufügen. Einer von ihnen wird die Schriftrolle aufrecht sein. Diese eine Schriftrolle ist zerstört. Und dann wird der andere eine Maske sein. Und sobald wir die Maske hinzufügen, werden
Sie sehen, dass dies sofort im Wesentlichen einige visuelle geändert wird. Unsere haben sie visuell nicht verändert. Noch nicht. Natürlich nicht, weil wir immer noch das vertikale Layout nehmen müssen und es tatsächlich als Kind davon haben. Und sobald wir das tun, ändert es
jetzt etwas visuelles, visuelles. Wie Sie sehen können, ist
das eigentliche vertikale Layout plötzlich eine Art Cutoff an dieser Stelle, da das Scroll-Layout jetzt eine Maske ist. Also alles, die Größe davon hängt tatsächlich davon wo der visuelle Bereich davon von der Größe des Scroller-Layouts hier abhängt. Je größer das kleine Layout, das Scroll-Layout, desto größer ist das, was wir tatsächlich sehen können. Und dieses ermöglicht es uns dann. Also, wenn wir dieses vertikale Layout nach rechts verschieben würden. Wir werden das bewegen, wie Sie jetzt sehen können, bewegt es sich irgendwie nach oben und unten. Nun, wenn wir das in einer Art Verbindung mit einer Bildlaufleiste machen können , dann würde alles sehr gut funktionieren. Und das ist genau das, was wir im Scroll-Panel unter diesem tun werden. Wenn Sie also diese Benutzeroberfläche auswählen und dann eine Bildlaufleiste hinzufügen, werden
wir hier eine Bildlaufleiste hinzufügen. Nun, was ist wichtig? Die Bildlaufleistenkomponente selbst sieht tatsächlich wie die Schiebereglerkomponente aus. So wie es ist, es ist ziemlich genau das Gleiche. Für uns für diesen Roboter, was wir wollen, ist, dass er von oben nach unten ist, glaube ich. Ja, das ist es, was wir wollen. Und dann können wir auch die Größe ändern. Also lasst uns so etwas machen. Legen Sie es ganz rechts auf dem Bildschirm hier. Machen wir so etwas und schieben Sie es dann nach unten. Da gehst du. Das ist eine Art Bildlaufleiste. Ich denke, das ist eigentlich sehr gut gemacht. Und ich bin die Bildlaufleiste selbst. Wir müssen eigentlich gar nichts ändern. Was wir ändern müssen, ist, dass die Dinge auf der Schriftrolle selbst korrigieren. Und Dinge, die wir auf dem Scroll rectus ändern wollten, vor allem, wo wir hier nur eine vertikale Bewegung wollten, weil diese sich nur nach oben und unten bewegt. Und dann wollen wir eine vertikale Bildlaufleiste definieren, die genau die Bildlaufleiste ist, die wir gerade hinzugefügt haben. Und dann wollen wir auch Inhalte hinzufügen. Und das ist im Grunde die Rekt-Transformation. Dies wäre also eine UI-Komponente, an die die Wrack Transformationskomponente angehängt ist, die wir verschieben möchten. Und das ist genau das vertikale Layout hier. Nachdem wir beide hinzugefügt haben, ist
das eigentlich alles, was wir tun müssen, um
ein funktionierendes vertikales Layout zu haben , Scrollbalken-Typ Deal. Und ich glaube jedoch,
dass das, was wir eigentlich wollen, von unten nach oben ist, glaube
ich, ja, die Richtung ist eigentlich von unten nach oben. Mal sehen, ob das klappt. Und ja, das tut es. Also, wenn ich jetzt nach unten scrolle, scrollt es nach unten, aber wie Sie sehen können, geht es sehr langsam. Ich kann noch zwei andere Dinge tun. Ich kann natürlich die Bildlaufleiste nehmen und sie so bewegen. Und ich kann auch auf das vertikale Layout-Panel klicken und das von selbst verschieben. Und ich kann es auch irgendwie so gehen lassen, wie du es auf einem Smartphone hättest. Wenn ich nach oben gehen würde, können
Sie sehen, dass es ein bisschen hüpfend an der Spitze ist. Dies kann hier geändert werden. Das ist also der Bewegungstyp. Es ist elastisch. Ich würde persönlich lieber als eine Art gefeiert, wie fast alle anderen Bildlaufleisten funktionieren. Und auch würde ich definitiv raten, die Scroll-Empfindlichkeit dort aufzustellen. Etwas wie 25 sollte sein, sollte genug sein. Ja, jetzt funktioniert es viel besser, also ist es ein bisschen schneller. Mit einer Scroll-Empfindlichkeit von eins, du bist ich meine, du scrollst nur die ganze Zeit. Das ist nicht das eine sehr gute Idee. Ja. Und das ist eigentlich, wie einfach
es ist , eine Bildlaufleiste mit ein wenig Funktionalität hinzuzufügen. Natürlich, wieder einmal, all die Dinge, die wir bereits in allen anderen interaktablen
UI-Elementen gesehen haben, im Grunde richtig? Farbe und all das. Und das, diese Art von Deal mit im Grunde auch gesehen, wenn wir auf die Schieberegler schauten. Das ist im Grunde genau das Gleiche. Wir können den Wert jetzt ändern den Wert, natürlich, wir können nicht ändern, weil es an die Scroll-aufrecht hier gebunden ist. Aber in der Regel können wir den Wert ändern und dann könnten wir auch einfach den Wert durch Ihr Skript auslesen. Natürlich, indem sie eine von denen dort. Wir haben auch dieses EINE Wert geändert Ereignis, wo wir können, wo wir im Grunde die Änderung des Wertes erhalten. Ja. Und das wird im Grunde für die Bildlaufleiste sein. Eigentlich ist es nicht so schlimm. Und mit der Maske und der Scroll-roten Komponente können
Sie dort einige ziemlich coole Dinge wie ein Scroll-Layout machen. Und dann könnte es jetzt sein, Sie könnten dieses vertikale Layout hinzufügen. Ich meine, alles, was du willst, und du könntest scrollen und scrollen. Und du kannst vielleicht, ich weiß nicht, tausend coole Gegenstände hier haben. An diesem Punkt wäre es wahrscheinlich besser, das Rasterlayout zu haben, aber ja, das wäre es für die Scrollbar-Vorlesung hier. Ich hoffe, Sie fanden das nützlich wie immer. Wenn es irgendwelche Fragen gibt, dann natürlich, zögern Sie nicht zu fragen und ich werde sicher sein, zu antworten. Und ja.
79. (Unity UI) Dropdown und Eingabefelder: In Ordnung, lassen Sie uns mit der Einführung der Unity UI hier für den Einheitskurs fortfahren. Und in dieser Vorlesung werfen wir einen Blick auf das Dropdown-Menü, sowie das Eingabefeld für die UI-Elemente. wäre eine Art der letzten Elemente werden geglaubt, dass wir uns ansehen müssen. Also lassen Sie uns eine neue Szene machen, wirklich neue Szene L neun, nennen es Drop down Eingabe. Sicher. Warum nicht? Öffnen wir das sofort. Und lassen Sie uns auch sofort ein schönes kleines Panel hier hinzufügen. Die Leinwand muss natürlich in diesem Fall zur Bildschirm-Raumkamera geändert werden und die Hauptkamera dort hinzugefügt werden. Und lassen Sie uns sofort auch die Referenz ändern. Es ist eigentlich 1920 mal 1080. Und mach das Spiel 0.5. Großartig. Das sollte alles sein, was wir hier tun mussten. Und dann zum Panel, nur um es ein wenig zu ändern. Legen Sie es irgendwie in die Mitte des Bildschirms. Und dann werden wir die beiden Arten der
letzten UI-Elemente hinzufügen , die wir nicht angesehen haben, wird das Dropdown-Menü sein. Lass uns das etwas größer machen. Gehen Sie, legen Sie es hier hoch. Und ich werde auch die Benutzeroberfläche für das Eingabefeld hinzufügen. Lassen Sie uns das auch ein wenig größer machen. Da gehst du. Wieder damit, wären das wahrscheinlich alle von ihnen, oder? Wir haben im Grunde alle anderen gesehen. Das Ereignissystem wird automatisch hinzugefügt. Und die ScrollView ist im Grunde das, was wir letztes Mal gemacht haben, mehr oder weniger. Also werfen wir einen Blick auf zuerst die Dropdown-Liste. Das erste, was wir uns ansehen werden, ist dieses eine Label hier. So
können die Etiketten natürlich ein wenig in der Größe geändert werden, 38, Das ist eigentlich ziemlich gut in der Pfeilgröße könnte auch ein wenig geändert werden. Ich denke, das würde Sinn ergeben. Machen wir es wie ein bisschen größer. Da gehst du. Ja. Das sieht eigentlich ziemlich gut aus für ein Dropdown-Menü. Und es gibt auch diese Vorlage, die derzeit deaktiviert ist. Also, wenn wir es aktivieren und Sie sehen können, ist es, wie es aussieht, wenn wir auf diese andere drücken. Also, wenn wir hier klicken und dann werden wir diese Art von Vorlage hier haben. Sie können den jeweiligen Inhalt dort ändern, so dass das Element hier geändert werden kann. Insgesamt würde ich jedoch wahrscheinlich nicht mit ihm zu viel durcheinander bringen, weil die, Ich glaube, dass dies tatsächlich verdoppelt wird. Eigentlich können wir das. Also lassen Sie uns das ein bisschen größer machen als so wie ja, dass, das ist definitiv ein bisschen zu klein, um den Artikel ein wenig größer zu machen. Da gehst du. Die Kontinente, die größer an der SDA vor bezahlt werden, und dann sollte der Artikel auch die Größe ändern. Da gehst du. Wenn Sie Alt
drücken, wird es die Größe auf beiden Seiten von der Mitte ändern. Und dann können wir hier auch die jeweilige Schriftgröße anpassen. Dies hier auf der linken Seite ist, wie Sie sehen können, dies ist Element Häkchen. Und es gibt auch ein Häkchen, den Hintergrund und das Elementlabel. Und es gibt einen Bildlaufleisten-Mitarbeiter damit. Das ist also ziemlich genau das gleiche wie die Scroll-Datensätze. Sie können sehen, dass es eine Art genau das gibt, was wir letztes Mal gebaut haben. Nur, dass dies bereits in das Dropdown-Menü selbst integriert ist. Nun, das ist im Grunde das, was wir bereits gesehen haben, aber was wir nicht gesehen haben, sind die Optionen hier. Und das ist im Grunde eine sehr interessante Sache. Wir haben Option eins, Option, Option a, Option B, Option C, und wir können einfach Optionen hinzufügen. Ich denke, wir bleiben dabei und wir werden auch keine Sprites machen. Eigentlich werden wir das Sprite in der ersten zu einem
Clicker machen und die anderen werden nicht ein gespaltenes alles haben. Und wir werden sehen, wie das aussieht. Werfen wir einen Blick darauf. Also fangen wir an und lassen das hier runter fallen. Und wie Sie sehen können, dass vor allem, können
wir diese wählen. Und dann haben wir dieses kleine Häkchen. Sie sollen feststellen, welche dieser Optionen tatsächlich gewählt wurde. Jetzt kann die Vorlage beliebig geändert werden. Reggie kann es kleiner oder größer machen. Ja, im Grunde, wie Sie möchten, wird
das eigentliche Sprite selbst nicht angezeigt. Das ist irgendwie etwas im Hintergrund. Sie haben das Ereignis hier wieder auf einen Wert geändert. Und natürlich, die Optionen, die Sie können, mit dem Minus hier, können
Sie sie im Grunde subtrahieren oder, Sie wissen, loswerden. Sie können sie auch hier neu bestellen. Und das, die Optionen hier wären auch möglich, diejenigen innerhalb des Skripts selbst zu ändern. Das funktioniert auch. Sehen wir uns das vorerst an. Also lasst uns einen neuen Ordner erstellen. Das wäre L9. Dies ist ein Dropdown, Dropdown-Menü. Eingang, Eingänge. Das, oh, das ist okay. Und das Lassen Sie uns ein neues erstellen, nennen
wir dieses Dropdown-Beispiel. Und lass es uns neu laden. Und dann starten wir das einfach. Aber bevor wir etwas ändern wollen, werden wir dies auch dem eigentlichen Drop-down-Menü hinzufügen, nur damit wir das nicht vergessen, denn das wäre fatal. Richtig? Wieder einmal brauchen wir die Update-Methode nicht und mit Unity Engine Dot, wir werden eine private haben. Dies wäre ein Dropdown-Menü. Und das ist dann einfach nennen Sie diese Dropdown-Liste. Sicher. Dropdown-Liste entspricht diesem Punkt erhalten Komponenten. Dropdown-Liste, selbsterklärend dieses, und dann fiel es herunter. Und da gehen wir. Optionen. Dies ist also, wie Sie sehen können, eine Liste von Dropdown-Optionsdaten. Okay, das ist eigentlich ziemlich cool. Wir können auch den tatsächlichen Wert einstellen. Dies ist, dies wäre eine ganze Zahl. Es ist also im Grunde der Index der Liste in diesem Fall. Also der Index des Elements der Liste, die wir wollen. Aber zum Beispiel die Optionen, die wir dort hinzufügen können, wie Sie sehen können. Das ist also eine normale Liste. Also hier können wir hinzufügen und in diesem Fall wollen wir, können Dropdown-Optionsdaten sehen. Also glauben wir, dass wir das so machen können, ja, genau. So können wir neue Optionsdaten erstellen und wie Sie sehen können, können
wir ihm ein Bild geben, wir können ihm einen Text geben, oder wir können beide invertieren. Also in der Theorie, was wir tun könnten, ist etwas wie Option S. Wir werden nur diese Option S nennen, weil sie von einem Skript
generiert wurde , so etwas. Und mal sehen, ob das wirklich funktioniert. Wir haben Option D, Option a und Option C. Und dann, nachdem wir gestartet haben, sollten
wir erwarten, dass Option S ebenfalls angezeigt wird. Und wenn wir da runter scrollen, ist es das. Option S steht ebenfalls zur Auswahl. Und jetzt ist es weg, weil es natürlich über das Skript generiert wurde. So einfach ist es also, die Dropdown-Optionen über das Skript hinzuzufügen. Sie können dort einfach eine neue
Dropdown-Optionsdateninstanz erstellen und sie zu den Optionen hinzufügen. Richtig? Und ich meine, das ist im Grunde die ganze Verrücktheit für das Dropdown. Es visuell zu ändern, sollte kein Problem sein. Wir haben viel davon im Grunde schon mit all den anderen Sachen in der Benutzeroberfläche gesehen. Also, ja, gehen wir zum Eingabefeld. So ist das Eingabefeld eigentlich auch sehr einfach. Es gibt das Eingabefeld selbst. Es gibt den Platzhalter, und dann gibt es den Text. Also der Platzhalter, wir können dies ein wenig größer machen, als Sie dies sehen können, das ist einfach eine Art wie Text eingeben. Sie können dies auch in Platzhalter ändern oder wenn Sie Ihr Spiel vielleicht in einer anderen Sprache haben, dann können Sie dies natürlich auch theoretisch ändern. Und der Text selbst sollte wahrscheinlich ungefähr die gleiche Größe wie dieser haben. Also lasst uns das auch 59 machen. Und wenn wir damit anfangen würden und einfach hier reingehen, also wenn ich auf irgendwas klicke, werde
ich diese Kutsche holen. Und ich kann Hallo World eingeben. Und wenn ich darauf klicke, können
Sie sehen, dass sich die Texte Jahr ändert. Das ist also im Grunde nur eine Textkomponente, oder? Ein Verweis auf eine Textkomponente, die diese ist. Und es liest nur den Text aus, der hier drin ist. So können wir diesen Text grundsätzlich sofort ändern. Und das wird auch in der Textvariablen gespeichert, direkt am Eingabefeld selbst. Und das ist so ziemlich genau, wo man es auch lesen könnte. Es gibt auch ziemlich coole Dinge, die Sie tun können. Also die Karotte selbst blinkt, ich denke, das ist ein normales Blinkrot. Sie können auch die Blinkrate erhöhen, so dass es schneller oder langsamer blinkt. Ich weiß nicht, ob das notwendigerweise etwas ist, was Sie brauchen, und Sie können auch die Breite anpassen. Ich glaube, dass fünf die größte sind, also ist es hier ein bisschen auffälliger. Wir können es auch zu einer benutzerdefinierten Farbe machen, die ziemlich cool ist, eigentlich, Art von rot. Es ist eine nette Sache, mit der du rumspielen kannst. Und ja, dann können Sie dieses Mal
auch zwei verschiedene Ereignisse hier auf Wert ändern. Dies ist im Grunde, wenn sich die Zeichenfolge selbst ändert und dann am Ende bearbeitet wird. Dies ist, wenn Sie mit der Bearbeitung fertig sind. Und so müssen Sie den Wert im Grunde nicht jedes Mal ändern. Also jeder kleine, jeder bestimmte Zeichentyp wäre unangefochten auf Wert geändert, und dann auf Bearbeiten, String und ein Ende Bearbeiten, sorry, Dort gehst du. Auf und bearbeiten gibt Ihnen im Grunde nur diesen Ring, wenn Sie mit der Bearbeitung dort fertig sind. wären also die beiden Ereignisse, zu denen Sie auch Ihre Funktionsaufrufe oder Methodenaufrufe
hinzufügen könnten . Und ja, das ist im Grunde alles, was es für das Eingabefeld gibt. Es ist nichts Verrücktes oder ja, Sie können auch ein Zeichenlimit setzen, wenn Sie wollen. Das ist etwas, was du tun könntest. Und es gibt noch ein paar andere Dinge wie Multiline mit Submit. Sie können es auch zu einer mehrzeiligen neuen Linie machen, und es gibt auch einige andere Dinge. Also, was ist der Inhaltstyp hier? Ein Pin, eine ganzzahlige Zahl. Dann kann es tatsächlich diese Dezimalzahl auslesen, richtig? Das wäre also etwas für den Inhaltstyp. Sie könnten das im Grunde auch ändern. Aber insgesamt, das wäre für das Eingabefeld, geben Sie das Dropdown-Menü. Und das würde die Art des Durchblicks
durch alle Elemente der Unity UI schließen . Ich habe Ihnen im Grunde alle gezeigt. Nun, um dies die UI ziemlich gut zu machen, ist
das ein ganz anderes Problem, das definitiv mehr in deinen Händen liegt als meine. Das hat mehr mit der Art des User Experience Designs zu tun. Und das ist schwer zu lehren. Ich möchte Ihnen sagen, oder ich möchte Ihnen die technischen Fähigkeiten beibringen und dann, was Sie mit ihnen machen. Nun, ich meine, ich hoffe, dass du nicht nur mich beeindrucken kannst, sondern vielleicht sogar dich und viele andere Leute mit dem, was du dir einfällt, richtig? Das wäre also für die UI-Einführung. Nächste Vorlesung, wir werden tatsächlich noch ein paar Dinge hinzufügen, um den Käseklicker. Also werden wir ein definitiv zumindest das Layout hinzufügen. Und dann können wir vielleicht sehen, ob es
vielleicht noch ein oder zwei andere Dinge gibt , die wir dort hinzufügen können, oder? Aber das war es für die Benutzeroberfläche. Und in diesem Fall die Dropdown-Liste, eine Eingabefeld-Vorlesung. Ich hoffe, du hast das nützlich gefunden und du wirst etwas Neues lernen. Wieder einmal, wenn irgendwelche Fragen bleiben, zögern Sie nicht zu fragen und ich werde sicher sein, zu antworten. Und ja.
80. (Unity UI), indem du Layout für den Cheese hinzufügst.: Alles klar, wie versprochen, wir finden uns wieder beim Käseklicker hier. Und das ist der letzte Vortrag hier für die Einführung. Und wir werden nur im Grunde Layout-Gruppen hinzufügen, eine für die Gebäudeplatte und eine für das Upgrade-Panel. Weil beide im Grunde gut,
ich meine, von denen profitieren könnten . Und lasst uns darüber nachdenken. So die Gebäudeplatte selbst, können
wir einfach auf die Komponente hinzufügen gehen, Gebäudepanel-App-Komponente, und fügen Sie dann eine vertikale Layout-Gruppe. Ich denke, dass das am sinnvollsten wäre. Und lassen Sie es alles steuern auch die Kindergröße und dann erhalten Sie etwas wie 15, 15, 15, 15, 15, und dann Abstand auch 15. Ich denke, dass das wirklich gut funktioniert. Und wenn wir hier ein drittes Element haben würden, dann würde das einfach funktionieren. Und am vierten, müssten wir anfangen, die Größe ein wenig zu ändern. Oder wir könnten auch darüber nachdenken, keine vertikale Layoutgruppe zu haben und vielleicht eine Rasterlayoutgruppe zu haben. Wir können zwei davon gleichzeitig haben. Das macht Sinn. Also lasst uns das entfernen. Lassen Sie uns eine Rasterlayout-Gruppe haben. Und dann auch dafür zu sorgen, dass das ein bisschen größer ist , denke
ich, denn sonst passt das nicht. So etwas wie 300, 200 vielleicht, vielleicht 300,
300, tatsächlich würde funktionieren. Und dann auch sicherstellen, dass wir hier ein wenig Polsterung haben. Da gehst du. Das wird also auch funktionieren, wenn wir uns mit
den tatsächlichen Prefabs etwas ändern würden. Aber ich denke eigentlich, dass wir wieder zur vertikalen Layout-Gruppe zurückkehren. Ich denke, das war in Ordnung. Und das ist eigentlich in Ordnung, richtig. Und wenn wir uns das Upgrade-Panel ansehen, werden diese
natürlich über die Upgrade-Benutzeroberfläche generiert. Lassen Sie uns das auch öffnen. Weil es eine Sache gibt, die wir natürlich ändern müssen. Und das wäre die Transformationsposition hier , weil wir die Position selbst festgelegt haben. Jetzt müssen wir das nicht mehr tun. Also können wir diese Zeile im Grunde komplett löschen. Und lasst uns es eigentlich einfach auskommentieren. Denn sonst, wer weiß, vielleicht ist das ein besseres. Und dann können wir das etwas kleiner machen und einfach buchstäblich nur die Rasterlayout-Gruppe hinzufügen. Wenn ein wenig Polsterung, vielleicht 10 hier, und dann die Zellengröße, denke
ich eigentlich, dass die Zellengröße eines 100 in Ordnung sein sollte. Wir können es wahrscheinlich etwas kleiner machen, sogar 8585, so etwas. Und mal sehen, wie das aussieht. Jetzt ist das in Ordnung. Ich meine, ein bisschen Abstand wäre auch in Ordnung. Also 10 Abstand und dann denke ich, gut, Das ist eigentlich sehr gut gemacht. Und wenn wir hier neue Upgrades hinzufügen würden, könnten
wir es natürlich etwas größer machen, so etwas. Und dann würden die Upgrades auch dort hineinpassen. Das ist also ziemlich ordentlich. Eigentlich. Das ist so, so einfach ist es, tatsächlich ein funktionierendes Layout zu haben. Und das ist wirklich nett. Also lassen Sie uns tatsächlich das kleine Stück Käse hinzufügen, damit sie aufleuchten. Nur zum Teufel. Also komm ich zu 500 und ja. - Ja. Sie funktionieren also immer noch völlig gut, obwohl sie sich in einer mehrschichtigen Gruppe befinden. Und andere größte Sache ist, dass, wenn wir auf einen von ihnen klicken, sie deaktiviert werden, oder? Das ist es, was wir gesetzt haben. Daher wird die für das Spielobjekt aktive Menge auf false gesetzt. Und wenn das passiert, dann bewegen sie sich, wie Sie sehen können. Denn die Layout-Gruppe legt sich im Grunde nur auf die aktiven Spielelemente aus. Also, wenn wir das wieder aktivieren, funktioniert
es eigentlich einfach. Das ist also wirklich schön,
dass das für die Benutzeroberfläche in der Layoutgruppe inhärent funktioniert. Also, das funktioniert eigentlich ohne Probleme, oder? Und dann könnten wir hier eine Art anderes Panel hinzufügen oder so etwas. Oder Sie könnten auch alle einzelnen Texte mit Texten Mesh Pro ersetzen , um ein schöneres Gefühl zu haben. Aber insgesamt denke ich, dass das in Ordnung ist. Das wäre irgendwie das, was ich mir vorgestellt hätte, was wir für die Art von verschiedenen Layouts
tun würden , oder? Das Upgrade-Panel, das ich fand, wie das interessanteste zu sein. Und dann die Gebäudeplatte, wenn wir noch ein paar davon hinzufügen würden, müssten
wir wahrscheinlich unser eigentliches Gebäude wie Gebäudeplatte neu ausrichten, die einzelne Gebäudeplatte ein wenig. Aber insgesamt würde das immer noch sehr gut funktionieren, oder? Und das wäre es für die Benutzeroberfläche. Für den Moment. Ich hoffe, Sie fanden diese nützlich und ein weiterer Käse-Slicker mit, dass wäre irgendwie komplett. Und ich hoffe, dass du etwas Neues gelernt hast. Und wenn irgendwelche Fragen geblieben sind, natürlich, wie immer fühlen Sie sich frei zu fragen, und ich werde sicher sein, zu antworten. Und ja.
81. (Unity Intermediate) Hinzufügen einer Audioquelle: Alles klar, und willkommen in der Abteilung für zwischengeschaltete Einheit für diesen Kurs der Einheit. Und in diesem Vortrag werden
wir einen Blick auf Audioquellen werfen und im Grunde, wie man Audio abspielt. Und die im Grunde Optionen, die wir damit haben. Also zuerst, weil wir wieder in einem neuen Projekt sind, lassen Sie uns zuerst unseren Assets Ordner hier einrichten. Und zu diesem Zeitpunkt werden wir tatsächlich noch ein paar Dinge brauchen. Vor allem natürlich die Skripte noch einmal, das ist eine Selbstverständlichkeit. Und dann duplizieren wir das einfach mit Control D. Dann brauchen wir natürlich auch die Sprites. Auch wenn wir in diesem Fall keine Sprites in diesem speziellen Vortrag verwenden, aber diese werden kommen. Keine Sorge. Wir werden auch Animationen brauchen. Wir werden das nur noch hinzufügen. Und dann ist eines der Dinge, die wir
jetzt in diesem Vortrag brauchen werden, dass das Audio im Ordner „Szenen“ ist. Lassen Sie uns einfach eine neue Szene erstellen, nicht ein neues Skript, eine neue Szene, natürlich, sie vor. Und das ist L, eins, denn sobald man den ersten Vortrag im Zwischenbereich bekommt, und das wäre Audioquellen. Und dann im Skript-Ordner können
wir einen neuen Ordner erstellen, L1-Audio. Und dann wollen wir ein neues Drehbuch. Und das, das wir Audio nennen, Audio-Beispiel. Da gehst du. Als so das ist eine ziemlich gute schon m. Und dann glaube ich, wenn wir die Audioquellen hier starten,
Ich denke, wir haben alles, was wir für das Setup brauchen. Lassen Sie uns ein leeres Spielobjekt erstellen. Das wird unsere Audioquelle sein. Ich habe es natürlich auf 000 gesetzt. Und dann fügen wir die Audioquellkomponente hinzu. Also unter Audio, seltsam genug, und das ist die unterste, die Audioquelle. Und es gibt eine Reihe von Dingen, die wir hier im Grunde in Bezug auf Felder ändern können. Aber lassen Sie uns zuerst auch die Audiobeispiele hier hinzufügen. Also das Skript zum Spielobjekt, und lassen Sie uns auch unsere Audio-Dateien hinzufügen. Also ist dieser natürlich zur Verfügung gestellt. Sie können auch mit Ihrer eigenen Audiodatei spielen. Aber ich dachte, ich hätte einen, der irgendwie wie ein lustiger Boing Sound ist. Das werden wir in einer Weile hören. Und nun, es gibt tatsächlich eine sehr einfache Möglichkeit, dies hinzuzufügen. Sie haben dieses Audio-Clip-Referenzjahr und Sie können dies einfach in ziehen, und dann ist es da drin. Nun kann dies natürlich genauso geändert werden wie beim Sprite-Renderer, bei dem wir das Sprite genauso geändert haben. Wir können diesen Audioclip auch per Skript ändern. In diesem Fall werden wir es nicht ändern. Was wir tun werden, ist, dass wir diese spielen werden, der eigentliche Ton über das Skript. Also, was wir tun werden, ist zuerst, lasst uns das hier für einen Moment durchmachen. Audio-Mixer, können wir grundsätzlich, so wie Sie sehen können, ist
dies im Grunde, ob der Ton sollte über einen Audio-Mixer zuerst oder direkt den Audio-Hörer abspielen. Wir werden in diesem Fall keinen Audiomixer verwenden. Das interessiert uns also nicht, schaltet einfach die Sound-Bypass-Effekte. Also, wenn wir Auswirkungen darauf haben. Auf der eigentlichen Audioquelle werden
wir diese nur ignorieren, wenn dies auf den Listenereffekt ist. Auf dem Listener kann auch einige Effekte haben. Wir haben Hallzonen und wir können umgehen. Das würde also all diese umgehen. Play on wake bedeutet einfach, sobald dieses bestimmte Spielobjekt mit der Audioquellenkomponente aufwacht, dann wird es den Ton einmal abspielen. Und Schleifen bedeutet einfach, dass es Schleife wird, sobald es das Ende des Audio-Clips erreicht, es wird von Anfang an neu gestartet. Die Priorität hier, wie Sie sehen können, ist
die Idee hier, dass
also, wenn wir gerade gelesen wurden, diese schnell die Priorität der Quelle setzt. So dass irgendwie Sinn macht für die, jede Audioquelle hat eine besondere Priorität. In diesem Fall wird eine Sonne mit einem größeren Prioritätswert eher gestohlen. Wahrscheinlich von Klängen mit kleineren Prioritätswerten gestohlen werden. Wie bedeutet das, was bedeutet das? Nun, wenn wir zwei Dinge gleichzeitig spielen, kann
vielleicht etwas nicht mithalten. Manchmal müssen wir also eine Priorität davon haben. Ich habe noch nie gesehen, dass wirklich in Kraft treten. Aber ich muss auch zugeben, dass ich nicht mit der OU herumgespielt habe, mit so viel. Ein Band sollte selbsterklärend sein. Es ist einfach die Lautstärke des Klangs. Es sollte auch nicht verrückt sein. Dies ist einfach die Frequenz und dies wird tatsächlich verlangsamen und verlangsamen die Geschwindigkeit des Klangs. Wir werden uns so schnell genug heilen. Serial pan, wenn die Video-Codierung richtig ist, dann sollten Sie auch in der Lage sein, dies zu hören. Das ist also einfach, ob es vom linken oder rechten Lautsprecher kommt oder nicht. Eine räumliche Mischung besteht im Grunde darin, dass Sie 3D-Audio haben können. In unserem Fall gibt es drei REO macht nicht einmal Sinn, weil wir auf einem,
auf einem zweidimensionalen Spiel sowieso, so dass sie gehen und dann die Reverb-Zone Mix, Ich bin eigentlich nicht ein 100 Prozent sicher, wohin das geht. Ich behalte das grundsätzlich immer bei einem. Auf Standard-3D-Soundeinstellungen. Es gibt ziemlich cool. Also haben wir tatsächlich eine Menge Dinge hier drin. Wieder einmal, für uns jetzt nicht gebraucht, weil wir sowieso nur mit 2D umgehen. 3D macht für uns sowieso keinen Sinn. Richtig? Also lassen Sie uns unser Audio-Beispiel öffnen und auch das Spiel auf wach entfernen. Weil wir nicht wollen, dass der Eintopf wach ist. Wir wollten eigentlich nur spielen, wenn wir etwas tun. Also zuerst, denn natürlich ist dieses spezielle Skript wieder auf den tatsächlichen Spielobjekten, die auch Audioquellen sind. Wir machen hier eine private Audioquelle. Und dann werden wir es einstellen, indem wir folgendes tun gleich diesem Punkt Component Audio Source, und das war es. Natürlich befindet sich das eigentliche Skript auf demselben Spielobjekt wie die Audioquelle. Wir können es einfach mit diesem Befehl tun. Andernfalls müssen wir möglicherweise das Spielobjekt abrufen, aber die Get Component-Methode leicht genug. Und dann, was wir tun werden, ist, dass wir sagen, wenn schottky eingeben und den Schlüssel runter bekommen, tatsächlich das Ego keydown bekommt. Und dann sagen wir Keycode Punkt Raum. Lasst uns hier Platz nehmen. Und dann so einfach, wie Sie vielleicht denken, Audio Source Dot, da gehen Sie. Das war's. Das ist eigentlich alles, was wir brauchen, um dies
die einzige Methode zu nennen , die wir aufrufen müssen, um diesen Sound abzuspielen. Und lasst uns den Ruhm des lustigen Boing Sounds hören. Also, wenn ich damit anfange, sollte nichts passieren. Und nichts passiert. Und wenn ich jetzt die Leertaste drücken, da gehen wir, Es funktioniert. Nun, das ist ziemlich cool. Also kann ich tatsächlich einen Ton abspielen, wenn ich die Leertaste drücke. Und lasst uns ein bisschen mit diesen Dingern herumspielen. Also zum Beispiel, wenn ich die Tonhöhe hier ein wenig hochziehe, und wie Sie jetzt sehen können, sind es Stücke hoch und die Tonhöhe steigt. Wenn ich die Tonhöhe etwas runterziehe, nicht zu viel, dann klingt es wie jemand. Das ist ziemlich gut. Richtig? Das ist also ziemlich lustig. Der Stereo-Stift, also der Stereo-Stift, wenn ich das abspiele, und es hätte jetzt im Grunde den ganzen Weg zum linken Lautsprecher verschoben werden sollen. Und wenn ich das noch einmal spiele, sollte es
jetzt nur auf dem richtigen Lautsprecher sein. Also, wenn Sie das im Grunde kontrollieren wollen, dann können Sie das auch tun. Natürlich können all diese Dinge auch über das Skript gesteuert werden. Wenn wir also einen Blick auf diese Audioquelle Punkt zum Beispiel nehmen, wird
das Tonhöhe Jahr ein get und ein Set verschoben. Und wir haben die Pan Stereo, holen ein Set. Wir können einen Boolean, Stumm und alle möglichen anderen Dinge als auch haben. Es gibt also eine Menge anderer Dinge, die wir auch tun können. Einschließlich könnte die Lautstärke auch von 0 auf
eins und einige der anderen Dinge eingestellt werden , aber die Wiedergabemethode ist eine der wichtigsten. Es ist auch ein Spiel geplant, so dass Sie im Grunde haben können dies auf eine bestimmte Zeit. Wir können ein Spiel mit einem Schuss haben. So spielt das Audio ab und skaliert es dann. Das ist eigentlich auch, Sie können ihm auch einen Audio-Clip tatsächlich geben. Und dann spielen verzögert macht es einfach verzögert. Das sind ganz spezifische Dinge. Normalerweise ist die Audioquelle Dot Play diejenige, die Sie wirklich brauchen, oder? Und das wäre es eigentlich schon für die Idee der Audioquelle. Und Sie können es einfach hinzufügen. Und was sehr wichtig ist, ist,
dass die Kamera-Komponente in der Regel den Audio-Listener hat. Das ist eine der Komponenten, die Sie in Ihrer Szene benötigen. Wenn Sie das nicht haben, dann werden Sie im Grunde nicht in der Lage, hier von dieser Audioquelle und dann wird kein Ton tatsächlich erreichen. Das ist also sehr wichtig zu beachten, dass
es wie bei Ihrer Hauptkamera auch mit der Hauptkamera kommen sollte. Jedes Mal, wenn Sie eine Hauptkamera in Ihrer Szene haben, sollte
diese sofort da sein. Aber wenn aus irgendeinem seltsamen Grund es nicht ist, dann, jetzt wissen Sie, dass dies eigentlich auch etwas, das Sie brauchen Roboter, die es für diesen Vortrag wäre. Ich hoffe, Sie fanden es nützlich und Sie lernen etwas Neues. Wie immer. Wenn noch Fragen bleiben, zögern Sie nicht zu fragen und ich werde sicher sein, zu antworten. Und ja.
82. (Unmittel), Intermediate): In Ordnung, lassen Sie uns mit dem Abschnitt der Zwischeneinheit hier für den Einheitskurs fortfahren. Und in diesem Vortrag werden wir einen kurzen Blick auf das Partikelsystem werfen. Nun ist das Partikelsystem wahrscheinlich eines der umfangreichsten Systeme in Unity. Es kann, ich meine, man kann fast alles tun. Nun, nicht irgendetwas buchstäblich, aber sagen wir zumindest in Bezug auf Partikel. Also lassen Sie uns hier eine neue Szene hinzufügen, L2 Partikelsystem. Öffnen wir das auch sofort. Und dann brauchen wir eigentlich keinen anderen Skript-Ordner, denn in diesem werden
wir eigentlich nicht die Skripte verwenden, Skripte in diesem, oder? Und dieser hier ist unter Effekten. Wenn wir also mit der rechten Maustaste klicken und dann zu Effects gehen, haben
wir ein Partikelsystem. Also lassen Sie uns dieses Partikelsystem hinzufügen und wie Sie sehen können, geht
es sofort ab und schießt Partikel wie verrückt heraus. Und das erste, was wir tun werden, ist, das zu nehmen und das
nach unten zu ziehen , damit wir ein bisschen mehr von dem Inspektor sehen können. Und ich habe es nicht getan, als ich das sagte, das waren eine Menge Dinge und es gibt noch mehr, so dass wir eigentlich jede dieser oder sogar mehr Dinge können. Und eines der Dinge, die ich erwähnen möchte, ist, dass wir hier definitiv nicht alles
durchmachen werden, denn drei Stunden später sind
wir mit allem fertig. Gleich am Anfang möchte
ich sagen, dass das Beste ist, was Sie tun können, einfach so viel
herumspielen , wie Sie im Grunde brauchen und wie Sie wollen. Denn das ist der beste Weg, um das Partikelsystem zu lernen. Einige dieser Dinge sollten tatsächlich eine Art inhärenten Sinn machen. So etwas wie das. Beginne mit was? Farbe starten. Fangen die Partikel an? Welche Art von Schwerkraft modifiziert oder sie haben. Also, jetzt fallen sie runter, wie Sie sehen können, gibt es eine Art von steigen und dann gehen sie wieder nach unten. Wir können die Geschwindigkeit ändern, oder? So geht es jetzt schneller. Oder wir können sagen, eigentlich machen wir es langsamer, also ist es negativ zwei. Lasst uns das auch machen. Und keine 0, das wäre, ja, und sie sind wirklich, wirklich langsam. Das ist also eines dieser Dinge, bei denen es tatsächlich Sinn ergeben sollte. Ziemlich einfach. Also Flip-Rotation, ich glaube nicht, dass tatsächlich etwas tut. Und in diesem Moment, nein. Denn was auch wichtig ist, zu sagen ist, dass die, dieser etwas tut, so dass dies tatsächlich dreht die tatsächlichen Partikel. Das Produktsystem wird in der Regel im dreidimensionalen Raum verwendet. Wenn ich also in den dreidimensionalen Raum
umwandle, wie Sie jetzt sehen können, gehen sie dorthin. Aber es gibt keinen Grund, warum man es nicht auch in
einem zweidimensionalen Projekt verwenden konnte , dass es tatsächlich keinen Grund
gibt, das nicht zu tun. Richtig? Also lasst uns darüber nachdenken. Hier gibt es ein paar Dinge. Also die Dauer, ich meine, Sie können auch über diese bewegen und
eine ziemlich gute Schätzung bekommen , was all diese Dinge sind. Ich möchte definitiv ein paar Dinge zeigen, die du hier unten bist. Das sind also eine Art von Funktionen, die Sie anwenden können. So zum Beispiel, was ich wirklich mag etwas wie Farbe über das Leben. Also, wenn ich das reinstelle, dann kann ich, wie Sie sehen können, irgendwie einen Farbmodus haben, so dass sie beginnen können, zum Beispiel, als weiß. Und dann, wenn sie sich bei einem 100 befinden, dann kann ich sagen, dann will ich sie irgendwie Gier. Und was passiert? Je weiter diese Partikel von meiner Quelle weg sind, werden sie grüner. Das ist eigentlich ziemlich cool. Und das ist im Grunde, Sie können dies mit fast all diesen Dingen tun. Sie können das mit der Größe, mit der Geschwindigkeit tun. Sogar, Sie können die Farbe sogar durch die Geschwindigkeit des tatsächlichen Partikels ändern. Als gäbe es eine Million Dinge, die du hier tun kannst. Sie können Lärm hinzufügen, wie Sie sehen können, das ist, ich meine, das ist Wahnsinn. Sie können entweder sogar benutzerdefinierte Daten hinzufügen. Wir werden nicht auf jeden Fall nicht auf Kundendaten schauen, weil das verrückt ist. Aber sagen wir zum Beispiel Geschwindigkeit über ein Leben lang. So können wir ihm zum Beispiel ein bisschen mehr Geschwindigkeiten
geben, zum Beispiel in z-Richtung oder in der x-Richtung. Dann können wir also tatsächlich die Flugbahn ändern. Wichtiger oder interessanter ist eigentlich die Form und nicht die Emission, sondern die Form. Die Form ist im Grunde, welche Art von Kontrollen, wo die Partikel erzeugt werden. Das ist also die Kegelform und dann können wir zum Beispiel den Winkel verlängern. Und dann, wie Sie jetzt sehen können, ist es ein wellenflacherer Winkel, so dass die Partikel bewegen sich hier in einem viel flacheren Winkel. Wir können auch den Radius hier unten und auch die Dicke einstellen. Die Dicke sollte eigentlich nicht so wichtig sein. Denn wieder einmal ist dies in 3D. Wenn ich also zu 3D gehe, wie Sie jetzt sehen können, sieht
das ein bisschen anders aus, wie Sie sehen können, als es in Zweidimensionen getan hat. Deshalb habe ich gesagt, dass das Produkt großartig ist, normalerweise in drei Dimensionen verwendet wird, aber es gibt kein Problem. Sie können es auch so machen. Und wenn es um die Formen geht, können
Sie hier sehen, dass es viele Formen gibt, die wir verwenden können. Also ist die Kugel, na ja, einfach eine Kugel, also beginnt sie am Anfang und bewegt sich dann einfach aus. Wir können den Radius auch auf die Stelle verlängern, in der sie erscheinen. Haben Sie auch einen anderen Bogen. Ich glaube, dass der Bogen hier wieder
ein bisschen ein Problem ist, wegen der zweidimensionalen Natur. Schauen wir uns einen anderen an, den Kegel zum Beispiel, ich eigentlich, der Kegel war das, was wir auf die Hemisphäre geschaut haben. Aber das ist irgendwie ein Halbkreis. Offenes Schiff, größerer Radius. Da gehst du. So etwas wie das. So, wie Sie sehen können, gibt es fast kein Ende damit. Jetzt können wir eine Art Strahl haben, und wir könnten zum Beispiel eine, eine
weitere skalierbare Abgabe IFA haben , sie skalieren. Und zum Beispiel könnte das sein, Sie könnten dies haben und dann sagen, zum Beispiel, haben wir die Idee, dass wir eine haben könnten, wo ist es die Größe über, sagen wir, Lebensdauer. Eigentlich machen wir die maximalen Partikel. Übrigens sehr wichtig. Aber ich will eigentlich das Leben lang, oder? Das ist, wenn sie sterben. Also kannst du im Grunde sagen,
nun, lass es uns tun. Lass sie bei etwa 1,5 oder so etwas sterben. Und dann plötzlich bam,
Sie haben eine Art wie einen coolen Teleporteffekt für wie ein 2D teleportiert. Ich meine, das ist, das ist so einfach, wie es für das Partikelsystem ist, als Beispiel hier. Das war eine Art Idee, die mir zum Beispiel für die Box in den Sinn kam. Und dann können Sie auch Ihre eigenen benutzerdefinierten Sprites darin als die Art von Laichbereich haben, Sie können einen Kreis haben. Jetzt ist der Kreis im Grunde ein Thema, weil es
wieder einmal die Art ist, die in diesem Fall gedreht wird. Aber ja, das ist eine Art allgemeiner Blick für das Partikelsystem. Ich muss ehrlich sein, es gibt so viel, was du damit machen kannst. Aber ich schlage vor, nur eine ganze Reihe von Sachen hier auszuprobieren, weil ich,
es bringt dich nirgendwohin , wenn du dir eine dreistündige Vorlesung ansiehst, okay, was macht jedes von diesen Dingern? Ich meine, die meisten von ihnen sind sehr gut beschriebene Farbe durch Geschwindigkeit, okay, also ändert das Partikel seine Farbe durch die Geschwindigkeit, die es hat. Das ist alles, was es gibt. Und ja, noch einmal, was ist auch verrückt? All diese Dinge können auch per Skript geändert werden. So können Sie grundsätzlich auch alle möglichen Dinge per Skript ändern. Vielleicht hast du also einen Teleprompter, der so aussieht, wenn er rot ist, also kannst du teleportieren und dann grün machen, wenn du so etwas nicht teleportieren
kannst, nur als Idee. Es gibt also so viele Dinge, die du damit machen kannst. Ja, ich will dich damit verlassen. Spielen Sie so viel, wie Sie brauchen. Das Partikelsystem ist unglaublich umfangreich und es kann eine Menge Dinge tun. Aber wie ich schon sagte, das Beste, was ein bisschen damit herumspielt. Ich wollte dir hier nur ein paar Dinge zeigen. Und so eine Art allgemeiner Kern davon, richtig? Das wäre es also für diesen Vortrag. Ich hoffe, du lernst etwas Neues. Wenn irgendwelche Fragen bleiben, natürlich, zögern Sie nicht zu fragen und ich werde kürzer sein. Laichen. Hand. Ja.
83. (Unity Intermediate) Projekteinstellungen: In Ordnung, lassen Sie uns mit dem Zwischenabschnitt Einheit hier für den Einheitskurs fortfahren. Und dann werden wir diesen Vortrag einen kurzen Blick auf die Projekteinstellungen werfen. Also gibt es etwas, wo wir eigentlich nicht einmal eine neue Szene vier brauchen. Wir gehen nur, um hier oben zu bearbeiten und dann zu Projekteinstellungen. Und dann werden wir mit einer Menge Zeug getroffen werden , dass wir nur ein bisschen Drüsen überziehen werden. Ein paar dieser Dinge und die Projekteinstellungen haben
wir sie einmal zuvor in der
C-scharfen Einführung für die C, C-Sharp-Projekt-Generierung für den Namespace gesehen . Also hier konnten wir im Grunde einen Namespace einfügen. Und jetzt sind wir im Grunde mit allen möglichen Einstellungen überflutet, die wir einbauen können. Wir haben Audio-Einstellungen, wir haben Paket-Manager, benutzerdefinierte Physik. Es ist eigentlich ziemlich viel. Und normalerweise würde ich vorschlagen man
sich nur bestimmte Dinge ansieht, wenn man sie wirklich braucht. Also werden wir uns ein paar Dinge ansehen, die meiner Meinung nach nutzbar und vernünftig
sind, um vorher gesehen zu haben, aber normalerweise ist keines davon wirklich notwendig. Also bin ich, eines davon ist zum Beispiel die Grafik. Sie können verschiedene Grafikebenen haben. Und die Standardwerte, ich würde eigentlich sagen, dass unser Bestes einfach so gehalten hat. Wissen Sie, es gibt einige Shader-Einstellungen im Grunde. Ich würde mich nicht mit denen anlegen, besonders wir sind in einer 2D-Umgebung. Ich würde auf jeden Fall sagen, dass die Grafik so bleiben sollte, wie sie sind. Sie können tatsächlich einen Eingabe-Manager haben. Wir haben noch nicht wirklich darüber gesprochen. Paketmanager, wir werden die Physik überspringen, interessieren uns nicht. Wir interessieren uns für Physik bis D, und das ist die erste, die hier sehr interessant ist. Zunächst einmal könnten wir zum Beispiel eine benutzerdefinierte Gravitation
haben. Natürlich ist die Schwerkraft in unserer Welt 9,81 Meter pro Sekunde quadriert. Und das ist dasselbe, wie es hier ist. Aber wenn Sie zum Beispiel eine Schwerkraft haben
wollen, die anders angewendet wird, dann können Sie sie hier ändern,
ein projektweites grundsätzlich. Und es gibt auch so viele andere Dinge, die man auch im Jahr ändern kann. Die Idee ist, dass es gibt, die Physik sind grundsätzlich komplett anpassbar. Das ist also ziemlich cool. Eigentlich. Die Spielereinstellungen sind eine andere dieser Dinge, die sehr interessant sind. Hier können Sie also einen Firmennamen und auch einen Produktnamen
sowie eine Version angeben . Sie können das Symbol Ihrer EXE auch grundsätzlich überschreiben. Und Sie können auch den Cursor überschreiben. Dann gibt es auch einige Einstellungen, zum Beispiel für den PC hier. Dies würde auch hier das Symbol auf der PC-Version für Ihre EXE. Dann haben Sie einige grundlegende Auflösungs- und Präsentationsoptionen. So können Sie sagen, was ist der grundlegende Vollbildmodus? Ich persönlich denke, dass ein Vollbildfenster im Grunde das beste ist. Sie können eine standardmäßige native Auflösung im Hintergrund ausführen lassen ist ebenfalls möglich. Dies wäre also, wie Sie sehen können, die Idee, wenn Sie außerhalb des Fensters klicken, ob das Spiel im Hintergrund weitergeht oder nicht. Und dann einige weitere Dinge, die auch
in der Größe ändern Fenster funktionieren , wäre etwas, das interessant sein könnte. Und ja, das würde funktionieren. Dann gibt es auch ein Splash-Bild-Optionen. Das ist also der Anfang des Spiels. Wir können tatsächlich eine Vorschau dafür machen. Also am Anfang des Spiels, werden
Sie haben, Sie werden dies mit Unity gemacht sehen. Sie können dort auch Ihre benutzerdefinierten Begrüßungsbildschirme hinzufügen. Also, wenn ich das mache, gehen
sie, Sie können im Grunde Logos hinzufügen und dann können Sie sagen, Hey, wo ist das, wissen Sie, Sie wollen es vor dem Unity-Logo danach, und so weiter und so weiter. Sie können Ihr eigenes Hintergrundbild erstellen, all das. Also im Grunde, das ist etwas, das Sie haben würden, wenn Sie wirklich eine Art, ein,
ein echtes vielleicht sogar Studio haben . Und dann hast du dein Logo und du zeigst es und dann machst du, hat ein Unity-Logo und dann alle anderen Logos, die du brauchst, vielleicht für einen Verlag oder so etwas, wären dann im Grunde hier drin. Aber noch einmal, viele dieser Projekte Einstellungen sind wirklich für Menschen,
die weit fortgeschrittener in sogar ihr Spiel sind . Ja, und dann gibt es noch ein paar andere Einstellungen. Normalerweise können die meisten von ihnen so gelassen werden, wie sie sind. Und das ist definitiv das, was ich empfehlen würde. Wie Sie noch einmal sehen können, dass es so viele Dinge gibt, die Sie hier
im Grunde haben können , dass es tatsächlich Wahnsinn ist. Die nächste sehr interessante Sache. Also sowohl der Preset Manager als auch die Qualität, im Grunde werden wir nicht kümmern, wie auch die Szenenvorlagen. Diese könnten interessant sein, eine Art von Vorlagen für Szenen zu erstellen. Aber derzeit wird dies für unseren Anwendungsfall hier nicht wirklich benötigt. Interessant ist jedoch der Skript-Ausführungsdienst. Und das ist eines der Dinge, auf die ich irgendwie in einer vorherigen Vorlesung anspielte, wo wir zwei Dinge hatten, bei denen ein GameObject von einem Skript gesetzt wurde und das Skript dieses Spielobjekt las. Und das Problem dort war, dass, naja, vielleicht
einer der anderen, einer der beiden wird zuerst ausgeführt und der andere ist der zweite. Also hier können wir im Grunde Skripte hinzufügen. Fügen Sie zum Beispiel einfach das Audio-Beispielskript hinzu. Und dann können wir sagen, nun, wann wird das im Grunde ausgeführt? Dies ist also ein Add Scripts zur Kundenbestellung und ziehen Sie sie,
um Skripte neu zu bestellen und der Kunde kann es vor oder nach der Standardzeit ausführen. Dies ist also die Standardzeit und wird von oben nach unten ausgeführt. Also im Grunde, zuerst von denen und dann, und dann irgendwann kommen wir zum Audio-Sample. Das ist also etwas, wo Sie nicht notwendigerweise das Wach- und die Startfunktion oder eine Methode haben müssen. Verwenden Sie diese eher, um zu wissen, welches zuerst ausgeführt wird, weil wir vielleicht
zwei Dinge haben , die in der awake-Methode auf zwei verschiedenen Skripten ausgeführt werden. Und wir sind wie, Okay, dieses Skript muss vor diesem Skript laufen. Und das ist ein Weg, wie wir das versichern können. Deshalb kann die Skriptausführungsreihenfolge wirklich, wirklich wichtig sein. Die Dienste, lassen Sie uns das tatsächlich anwenden. Die Dienste sind wieder etwas, was ich persönlich sagen würde. Wir werden noch einmal überspringen, weil das etwas ist, das ein Weg fortgeschrittener
für Sie tatsächlich ein echtes Projekt ist , das Sie vielleicht haben wollen. Was möchten Sie zusammenarbeiten? Und entweder haben Sie In-App-Käufe, Cloud-Builds und all das. Nicht wirklich interessant. Tags und Ebenen sind etwas, das wir später in der Linie betrachten werden. Dies ist in einer zukünftigen Vorlesung, vor allem die Tags oder das, was wir betrachten werden. Eine sehr interessante text-basierte Pro, das ist einfach der Bildschirm, den wir hatten, wenn wir einen Text Smash bro letztes Mal importieren, der Timer auch etwas, das wichtig oder interessant ist. Wir haben im Grunde einige feste Zeitschritte sowie die Zeitskala. Dies ist im Grunde, was wir bekommen, wenn wir eine Time.Deltatime Skala nennen. Und wir können dies übrigens auch im VA-Skript ändern und dann hört die Zeit grundsätzlich auf. Das ist also etwas, das wir auch tun können. Und all die anderen Dinge sind für uns nicht interessant. Das einzige, was interessant sein könnte, ist eine abweichende Rolle mit den sichtbaren Metalldateien, die wir vielleicht im Grunde aktivieren wollen, um für unsere Ich weiß nicht, warum es begonnen hat. Plötzlich ist das irgendwie seltsam, dass wir vielleicht die sichtbaren Mesophile hier haben wollen. Weil wir vielleicht wollen, dass dies
auf GitHub ist und dann die sichtbaren Mesophilen Sinn ergeben, oder? Und das wäre es im Grunde für den schnellen Blick auf die Projekteinstellungen. Wie gesagt, ich wollte Ihnen nur einen flüchtigen Blick auf einige von ihnen geben, vor allem Ausführung Ordnung kann sehr,
sehr interessant und wichtig sein. Und Physik 2D, die Sie im Grunde anpassen können, ist auch ziemlich cool. Ich würde Ihnen auf jeden Fall raten, wenn es bestimmte Dinge gibt, dann können Sie auch nachschlagen immer bestimmte Dinge, die Sie wollen. Normalerweise weiß ich es nicht. Zum Beispiel könnte es gewesen sein, dass, Hey, ich möchte eigentlich die Zeit haben, um zu schlafen
größer zu sein , oder ich wollte die Zeitskala auf etwas mehr als eins setzen, und genau das solltest du tun. Daher würde
ich Ihnen von Fall zu Fall empfehlen, die Projekteinstellungen in der Einheit in
der Unity-Dokumentation nachzuschlagen . Das ist die beste Idee, die ich Ihnen dafür geben kann, denn sonst, wie beim Partikelsystem,
wird es nach drei Stunden
wieder hier sein. Und dann würden wir alle Projekteinstellungen durchlaufen. Und dann wären die ersten zwei Stunden nach der letzten Stunde einfach vergessen worden. Deshalb wollte ich nur erwähnen, diese existieren können irgendwann in der Linie nützlich sein. Aber im Moment würde ich Ihnen nur raten, das zu übernehmen. Ok. Und dann lassen Sie uns das nächste Mal weitermachen, richtig? Das wäre es also für diesen Vortrag. Wieder einmal, wenn irgendwelche Fragen bleiben, natürlich, zögern Sie nicht zu fragen, und ich werde sicher sein, zu antworten. Und ja.
84. (Unity Fort), indem du Tags zu GameObjects hinzufügst: In Ordnung, lassen Sie uns mit dem Zwischenabschnitt Einheit hier für den Einheitskurs fortfahren. Und in diesem Vortrag werden wir einen Blick auf die Tags werfen. Und dazu werden
wir zunächst ein paar nette Sprites zu diesem Projekt hier hinzufügen. Wir haben unsere guten alten Karten, die wir zuvor verwendet haben. Dies ist wieder einmal die mehreren Karten. Also werden wir hier im Grunde nur ein paar Einstellungen einbauen. Filtermoduspunkt, werden wir die Pixel pro Einheit auf 16 setzen, sowie den Sprite-Modus auf mehrere setzen. Dann werden wir dies auf den Sprite Editor anwenden. Setzen Sie das Schneiden auf die automatische, das ist in Ordnung. Und dann in Scheiben schneiden. Und dann haben wir uns hier individuelle Karten mit einer Breite von 42 und einer Höhe von 60. Klicken Sie hier auf Bewerben. Und dann geht es uns wirklich gut. Und dann im Inneren von hier haben wir diese Karten, Kern 0, 1, den ganzen Weg bis zu 55. Und wir werden nur Court 0 nehmen und es
in unsere kleine Welt hören in unsere Szene setzen . Und ich denke, dass 02 eine großartige Position dafür ist. Eigentlich ist nichts davon ein Partikelsystem. Lassen Sie uns zunächst eine neue Szene erstellen, um alles schön und ordentlich zu halten. Und das wäre L4, das Tags hinzufügt. Und das ist auch offen. Und dann drinnen können wir die Karte legen und sie gehen zu 0,5, richtig? Das ist großartig. Das ist eine gute Position, die sie sind. Und dann wollen wir hier ein schönes leeres GameObject. Natürlich, bei 000, 000 oder Monaco, diese Tags. Und dann innerhalb unseres Skript-Ordners, ein neuer Ordner. Nein, das hat nicht geklappt. Da gehst du. Skripte. Skripte, Ordner erstellen, L4-Tags. Und dann werden wir ein neues C-Sharp-Skript erstellen. Wir werden diese Tags auch nennen. Und das wird zu unserem leeren Spielobjekt hier hinzugefügt. Und dann werden wir einen Blick darauf werfen, was das eigentlich für uns tun kann. In Ordnung? Also zuallererst, ein Etikett, was unsere Tags? Nun, die Idee ist, dass Sie bestimmte Elemente zu Spielobjekten hinzufügen können, und das ist genau hier oben. So wie Sie sehen können, getaggt und derzeit ist dies nicht markiert, ist dies untangle. Die Hauptkamera hat tatsächlich erkennen Hauptkamera. Und was wir tun können, ist, wenn wir darauf hineingehen, können
wir tatsächlich sehen, dass es ein paar Tags vordefiniert für uns gibt. Reagieren Finish Editor nur Hauptkamera-Player und der Game-Controller. Und dann gibt es auch das Edge-Tag, im Grunde Funktionalität, auf die wir klicken können. Und dann im Inspektor bekommen wir diese Tags und Ebenen fühlen, dass wir sehen können. Und statt hier, wie Sie sehen können, ist die
Steuerliste leer. Die Liste unserer vordefinierten Tags, die wir definiert haben, ist leer und wir können dieses kleine Plus treffen und dann müssen wir einen Namen angeben. So können wir zum Beispiel sagen, nun, das Gericht, der neue Tag-Name ist Karte und dann speichern Sie diese. So ist dies jetzt mit 0 markiert. Und dann können wir zum Beispiel auch Feind hinzufügen. Und dann vielleicht so etwas wie. Sind nicht einmal wissen, auch Gesundheit oder, oder, oder, oder, oder, oder Schaden, so etwas. Also, was macht das? Also, was macht das jetzt? Also gehen wir zum Vektor, der Karte. Zunächst einmal sehr wichtig, wenn Sie Angriff über diese Summe hinzufügen, haben
wir dieses Drop-Down-Menü. Es fügt das Tag nicht automatisch zum Spielobjekt hinzu. Sie müssen das Dropdown-Menü öffnen und dann im Grunde auswählen. Also sagen wir Schnur, weil das eine abnehmbare Karte hat, denn das ist eine Karte. Und dann können wir denken, dass dies im Grunde
eine der anderen Möglichkeiten ist , die wir irgendwie sehen können, okay, ist dieses GameObject eine bestimmte Art von Objekt im Grunde,
bevor wir zurück denken, wo wir den Box-Collider hatten, wo wir die Kollider benutzen. Da. Wir konnten den Namen des Objekts vergleichen. Aber weißt du, manchmal ändert sich der Name und vielleicht haben verschiedene Feinde unterschiedliche Namen. Und Sie wollen eine Art anderes identifizierendes Zeichen haben. Und das könnte zum Beispiel ein feindliches Kennzeichen
sein. Und wie verwenden wir diesen Tag? Nun, dieses Tag ist eigentlich nur eine Zeichenfolge. Es ist sehr einfach zu bedienen. Also werden wir hier nur ein Debug-Punktprotokoll erstellen. Und dann werden wir sagen, GameObject dot find. Und wir werden Akkorde 0 finden
, denn das ist natürlich der Name dieses Spielobjekts in diesem Fall. Und dann werden wir sagen, zum Beispiel, Tag, wie Sie hier sehen können, ist nur eine Zeichenfolge. Und dann lassen Sie uns das mit Control C kopieren und dann gibt es eine andere wirklich nette Funktion oder Methode hier namens Vergleichs-Tag. Und dann im Inneren von hier können wir zum Beispiel Karte sagen. Und dann gibt es noch einen, sagen wir Feind. Richtig? Also Idee, hier zu sein. Die erste, wir werden nur das Tag ausgeben, wie Sie sehen können, Tag dieses Spielobjekts. Und dann ist das Vergleichs-Tag dieses Spiel Objekte mit dem Tag, den wir es als Umfang geben,
beauftragt? Dies wird natürlich wahr sein, weil Kabel genau das Tag
ist, auf das wir es gesetzt haben. Ein Feind sollte ein falscher Vergleich sein. In diesem Fall ist es besser, diese Methode der CompareTo-Methode zu verwenden anstatt unseren eigenen String-Vergleich zu machen, ich glaube, es gibt ein bisschen Debatte darüber. Aber normalerweise sieht die CompareTo-Methode sowieso schöner aus, anstatt Tag dot gleich zu machen und dann einzufügen, ist es in Ordnung. Vergleichs-Tag ist eigentlich eine gute Methode. Alles klar, in der Theorie sollte
das so funktionieren wie sofort, Mal sehen, Karte, okay, zuerst, das ist
das Tag, das wir hier vordefiniert haben. Und dann ist es natürlich wahr, dass Tag und der Wagen und CT genau das gleiche Tag sind. Und dann ist der Feind nicht wirklich der Tag, den dieses Gericht hat, dieses Spielobjekt, richtig? Und das ist eigentlich alles, was es zu den Tags gibt. Sie sind nicht verrückt, kompliziert, aber sie können wirklich nützlich sein, wenn Sie
bestimmte vordefinierte Dinge haben , die auf eine bestimmte Weise funktionieren sollten. Und sie sind wirklich nützlich,
vor allem, wenn Sie die Segelflugzeuge benutzen. Wir können im Grunde einfach Tags vergleichen. Sie sind, anstatt den Namen zu vergleichen, wie wir es getan haben. Und sie sind eine normale Sache, die Teil eines GameObject ist, wie Sie sehen können. Dies ist also eine normale Eigenschaft des Spielobjekts und Sie können darauf zugreifen und es sogar innerhalb des Skripts
setzen, wenn Sie schreiben möchten, und das wäre es für diesen Vortrag noch einmal,
ich hoffe, Sie fanden es nützlich und Sie lernten Etwas Neues. Wenn irgendwelche Fragen bleiben, dann natürlich, zögern Sie nicht, zu fragen und ich werde sicher sein, zu antworten. Und ja.
85. (Unity Intermediate) 2D-Raycasting in Unity: In Ordnung, lassen Sie uns mit dem Zwischenabschnitt Einheit hier für den Einheitskurs fortfahren. Und in diesem Vortrag werden wir uns einen kurzen Blick auf ein Strahlencasting werfen. Also, Neufassung, vielleicht hast du schon mal davon gehört. Es ist im Grunde eine Art zu betrachten, ob oder nicht ,
wenn Sie ein Projektil in eine bestimmte Richtung schießen, ob das etwas getroffen hat, das eines der Dinge, wo es verwendet wird, hat oder nicht. Meistens würde ich sagen, einer seiner Anwendungsfälle kann es sein, im Grunde Treffererkennung durchzuführen. Also, anstatt eine Kugel zu laichen und tatsächlich mit dem Physiksystem Art berechnen seine Flugbahn und mit einem neuen Spielobjekt und so etwas. Wir zeichnen eigentlich nur einen Strahlenpreis, was eine Art unsichtbare Linie ist. Wir sind unsichtbarer Vektor, der dann irgendwie erkennt, wenn es einen bestimmten Collider Basic trifft. Und wir werden uns das ansehen. So scheint eine neue Szene. Das wird die L5-Neufassung sein. Jetzt. Oh, das ist eigentlich so. Da gehst du. Und die, wir werden uns die Neufassung in zwei Dimensionen ansehen. Jetzt in drei Dimensionen, das einzige, was wirklich ändert, ist die Anzahl dessen, was der Vektor, den Sie in setzen müssen. Also statt eines Vektors, um einen Vektor von drei setzen zu müssen. Aber abgesehen davon bleibt
alles gleich. Und dann ein neuer Ordner innerhalb unseres Skript-Ordners L5 Neufassung, sowie ein neues Skript darin. Und das zu niemandem Überraschung wird auch Raycasting genannt. Großartig. Also, jetzt wollen wir eigentlich zwei Karten hier hinzufügen. Also lassen Sie uns eine Art Herz-Ass hinzufügen. Und dann werde ich einfach zufällig aus dieser Sache herausholen. Also, jetzt haben wir zwei Karten hier. Und was wir tun werden, ist, dass wir halbzentralisiert werden, also negativ sechs und dann das y auf 0 setzen. Und ich werde das bei negativem setzen. Und die X86, Das ist großartig. Und einer davon wird in einer kleinen Weile gut erkannt werden. Und einer von denen. Also wird das Herz-Ass tatsächlich einen Re-Cast von sich selbst herausschießen. Und dann wird es im Grunde diesen Akkord hier erkennen. Und die Art und Weise, wie wir dies tun können, ist zunächst, lassen Sie uns einen Box-Collider hinzufügen, um zu verwerfen. Also zu den fünf Clubs,
ich denke, das wäre wieder in Physics 2D und dann nur Box Collider, so dass ein nettes Box-Unordnung um ihn gezogen wird. Und dann auf die 0 oder das Ass der Herzen in diesem Fall, können
wir einfach unser Skript hinzufügen, so dass sie wieder korrekt Casting-Skript wird hier hinzugefügt werden, dass Sie gehen. Und der andere hat einen Boxplot. Öffnen wir das Raycasting-Skript und sehen, was wir hier tatsächlich tun können. Und das wird eine ziemlich einfache Sache sein. Zunächst einmal werden wir
die Startmethode löschen, da wir nur die Update-Methode benötigen. Und im Inneren von hier bekommt input.txt einen Schlüssel. Wir nehmen den Torwächter, in diesem Fall nicht nach unten. Und wir werden Platz in diesem Fall nehmen. Denn was ich tun möchte, ist im Grunde, dass ich immer ein neues machen möchte. Eigentlich machen wir den Schlüssel unten für jetzt und dann können wir es später ändern. Wenn wir wollen. Eine neue Methode, private Leere, Laichen, Re-Cast. Das ist nur so, dass wir es ein bisschen besser lesen können. Dies ist also der Lesbarkeit willen sowie nur, weil es ein wenig schöner ist,
anstatt dies in die Art der if-Anweisung zu setzen. Und was wir wollen, ist ein Re-Cast Hit 2D. Das ist es, was wir wollen. Dies ist gleich einem Strahl. Dies wird also Raid die Variable genannt, und dies ist gleich Physik 2D. Also diese eine Physik zu D ist ein Klassenpunkt-Re-Cast. Und dies erfordert, wie Sie sehen können, einen Ursprung und eine Richtung. Und wir können auch noch ein paar Dinge liefern. Das wird also diese Punkt-Transformation sein, diese Position. Und dann bekommt es eine Richtung. In unserem Fall, was wir wollen, dass dieser Vektor dot-dot, oder? Dann können wir auch einen Abstand angeben, wie Sie sehen können, lassen Sie uns tun 15 F für jetzt. Und dann wird es uns gut gehen. Wenn Sie keine Richtung angeben, wird der Strahl unendlich lang sein. Und im Grunde der gleiche Strich oder wir werden tun, ist, dass wir zeichnen, also debuggen Punkt zeichnen ray. So können wir tatsächlich einen Strahl Kosten hier ziehen, wie Sie es auch sehen können. In diesem Fall dauert es tatsächlich einen dreidimensionalen Vektor. Also Vektor drei, sowie eine Richtung. Das ist jedoch kein Problem, weil wir es einfach noch passieren können. Diese Punkt-Transformation, Punkt-Positionsvektor, der Vektor zwei Punkte, richtig? Mal 15, denn das ist im Grunde die Länge, die wir hier angegeben haben, oder? Diese Richtung und das ist die Länge. Und wenn wir diese nur multiplizieren, und das klappt auch sehr gut. Und dann müssen wir eine Farbe liefern. Lasst uns hier blau machen. Lasst uns blau machen. Und dann gibt es eine Dauer. Das ist also, wie lange dieser Strahl tatsächlich gezeichnet wird. Ich werde fünf Sekunden dauern. Das ist also sehr ähnlich wie eine Zeichenlinie, nur dass es in diesem Fall speziell für einen Strahl ist. Und dann, was wir tun können, sowie Debug dot log re dot collider. Das ist also das GameObject, Mal sehen, kollider. Dies ist eigentlich der Collider 2D, an das Spielobjekt angeschlossen
ist, das dieses Array getroffen hat. Und ich werde nur den Namen für jetzt sagen, lassen Sie uns einfach den Namen ausgeben, was auch immer die eigentliche Re-Cast getroffen hat. Also, wenn Sie darüber nachdenken, was passieren sollte, ist, dass von der Position negativ 600, ein Re-Cast 15 Welt-Reichtum Schritte zusammen mit 15 Welt-Einheiten entlang Laichen. Und sobald es die Gerichte trifft,
32, sollte es im Grunde auch ausgeben. Mal sehen, ob das tatsächlich funktioniert. Also im Moment sind wir im Spiel und ich traf die Leertaste und Sie können Kerne sehen 32 tatsächlich ausgegeben wird. Und wir können tatsächlich auch diese sehr dünne blaue Linie sehen. Es ist sehr, sehr, es ist eigentlich nicht sehr gut zu sehen. Gehen wir eigentlich zurück und machen das rot. Vielleicht ist das Rot ein bisschen besser zu sehen. Das könnte der Fall sein. Mal sehen, ob das klappt. Ja, Rot ist ein bisschen besser. Also C, ich werde es nur pausieren. Statt unserer Szene hier können
wir sie tatsächlich ein bisschen besser sehen. Wie Sie von der Mitte der Karte draußen sehen können, gehen
wir nach rechts, genau 15 Einheiten im Grunde. Und wir haben diesen Akkord getroffen und dieser Strahl erkennt dann im Grunde, oh, ich habe eine Karte getroffen und gibt dann den tatsächlichen Namen davon aus. Nun, wir können das mehrmals tun, oder? So können wir Array spawnen. Nun, der Strahl wäre tatsächlich an diesem Punkt weg, weil wir schon etwas getroffen haben, was wir getan haben, wir sind fertig. Also das Bild ist ein bisschen, naja, ich würde nicht sagen, dass es täuscht, aber das Bild bleibt ein bisschen länger, nur damit wir eine Show haben, dass wir tatsächlich sehen können, was passiert. Wenn wir diese Karte nehmen und nach unten bewegen würden. Was Sie sehen werden, ist, dass wir plötzlich
eine Nullreferenz erhalten , weil wir nichts in diesem Strahl getroffen haben. Also, das ist auch etwas, das Sie auf jeden Fall berücksichtigen sollten , dass vielleicht wieder dot collider tatsächlich null sein wird. Also seien Sie sich dessen bewusst. Und wenn wir es zurücklegen und wir es wieder treffen, dann, wie Sie sehen können, werden die Karten 32 mehrmals ausgegeben. Damit können wir im Grunde sagen, okay, wo ist das? Wir können auch einen Blick darauf werfen, wo das getroffen wurde und alle möglichen anderen lustigen Sachen. Also hat der Strahl tatsächlich ein paar Dinge dort. Mal sehen, was der Strahl auch zu bieten hat. Damit wir den Collider kriegen können. Wir können auch die Entfernung bekommen, die wirklich nützlich sein kann. Und das ist der C-Anteil der Entfernung entlang des Strahls, die der Treffer aufgetreten ist. Grundsätzlich bedeutet, dass, wenn der Strahl
10 Einheiten lang ist und er genau in der Hälfte der Länge des Arrays getroffen wurde, dies 0,5 erhalten würde, weil das 50 Prozent der Länge des Arrays ist. Es gibt einen normalen Vektor, den Sie bekommen könnten, der nützlich sein könnte wenn Sie ausgefallene Dinge mit Vektoren machen möchten, die sie sind. Sie können auch sofort den starren Körper erhalten, der an das Spielobjekt befestigt ist. In unserem Fall haben wir eigentlich keinen starren Körper, der daran befestigt ist. Sie können auch den Punkt erhalten,
den genauen Punkt im Weltraum, an dem der Strahl das Ziel trifft. Das wäre also, naja, in unserem Fall wäre es irgendwo hier. Dies ist eine der Möglichkeiten, wie Sie zum Beispiel sagen können, Nun vielleicht, wenn es hier oben trifft, dann wollen Sie vielleicht die obere Hälfte dieses Kerns verschwinden. Und wenn es unten auf dich trifft, dann willst du, dass die untere Hälfte irgendwo so verschwindet. So können Sie irgendwie machen Sie ohne Schaden in bestimmten Teilen dieser Karte. Aber ja, das ist die grundlegende Umformheizung. Es ist wirklich nützlich, denn mit natürlich, dem Collider wieder, können
Sie sehr leicht das GameObject Punkt GameObject bekommen, wie Sie sehen können. Und dann haben Sie das GameObject und das natürlich, öffnet sich im Grunde alles, was die, dass das Spielobjekt Rechte hat, die Sie bekommen können, erhalten
Sie Komponente wieder, jede Komponente, die es hat, und alle möglichen verrückten Dinge damit machen. So könnten Sie es treffen und dann
seine Position ändern oder Sie könnten seine Größe ändern, so etwas. Also im Grunde die, die Möglichkeiten sind wirklich endlos in diesem. Und die Re-Cast ist einfach eine Möglichkeit, dass Sie das im Grunde tun können. Und es ist ein ziemlich, würde
ich sagen, billig Weg. Alle Dinge, die berücksichtigt werden, dies zu tun. Also, wenn Sie eine
einfache 2D-Szene haben , in der Sie etwas schießen würden, dann ist es vielleicht ein wenig besser, Re-Cast einzubauen. Nun, ja, es gibt zahlreiche Möglichkeiten, was Sie re Kosten verwenden können mit. Das sind nur einige, die ich erwähnt habe. Einer von denen, die ich verwendet, zum Beispiel, war in meinem, Ich hatte ein 2D-Spiel. Lassen Sie uns Zelda ähnlich, sagen wir. Und ich drehte jedes Mal in einem Re-Cast aus meinem Charakter, wenn ich die Leertaste drückte, um im Grunde mit NSCs zu sprechen. Npcs hatten alle einen Box-Collider und sie hatten auch eine Schnittstelle namens trackable. Und wenn die Re-Cast feststellte, dass sie
eine Auge tolerierbare Schnittstelle im Grunde an ihnen befestigt hatten . Dann war ich in der Lage, mit ihnen zu reden. Das war im Grunde die Art, wie ich Re-Cast in einem Beispiel verwende. Aber natürlich gibt es so viele Möglichkeiten, wie du die Re-Cast nutzen kannst, dass ja, ich wollte dir nur zeigen, wie du es benutzen kannst und je mehr du es verwendest, nun, das liegt wirklich an dir. Und das wird es für diesen Vortrag über Ray Casting sein. Ich hoffe, du hast das nützlich gefunden. Wie immer. Wenn irgendwelche Fragen bleiben, dann zögern Sie nicht zu fragen und ich werde sicher sein, zu antworten. Und ja.
86. (Unmittel), die die Szene vorbereiten: In Ordnung, lassen Sie uns mit dem Zwischenabschnitt Einheit hier für den Einheitskurs fortfahren. Und in diesem Vortrag werden wir einen Blick darauf werfen, wie man Daten mit Player-Prefs speichert. Und ja, im Grunde, wie Sie bestimmte Daten auf der Festplatte speichern können. Und dann, wenn Sie
zum Beispiel im Grunde einen Safe neu laden , wie funktioniert das? Und wir können das mit etwas tun, das Player-Prefs genannt wird. Das ist eine Klasse, die Unity für uns bereitstellt, in der wir im Grunde ganze Zahlen,
Strings und eine Art der normalen und primitiven Datentypen sichern können . Nun, um dies zu tun, werden wir tatsächlich ein ziemlich großes gesehen in diesem Vortrag hier bauen. Das ist also L6-Player-Prefs. Und der Grund, warum ich hier ein bisschen
eine größere Szene bauen möchte , ist, weil Nummer 1, es ist eine gute Übung. Das ist also ziemlich gut. Und dann Nummer zwei, dies wird auch
nächste Vorlesung verwendet werden , wenn wir mit JSON-Dateien speichern und laden. Aber wir werden dazu kommen, sobald es Zeit ist, richtig? Wenn Sie nicht daran interessiert sind, im Grunde den Flaum herum und die Benutzeroberfläche hier zu machen, dann können Sie natürlich
auch diese Vorlesung überspringen, weil die nächste Vorlesung im Grunde nur die Wand ist, wie Sie die Spieler prefs auf eigene Faust machen. Und Sie können einfach das eigentliche Paket herunterladen, das zur Verfügung gestellt wird. Da. Alles ist bereits eingerichtet, die Szene und die Player-Prefs und alle Skripte sind im Grunde eingerichtet. Das einzige, was nicht Setup ist, ist das Speichern und Laden der Daten, die Sie dann im Grunde folgen können. Ich wollte das nur erwähnen, weil die tatsächlichen Spieler-Prefs nur etwa fünf Minuten von der eigentlichen Vorlesung sind. Der Rest ist irgendwie das Ding um ihn herum. Ich wollte das nur erwähnen. Sie müssen es nicht unbedingt einrichten. Sie können es auch einfach herunterladen. Also ja, also L6, Player-Prefs. Und um unsere Skripte zu erstellen, haben
wir tatsächlich vier Skripte, in diesem Fall wird
das von, das erste Population genannt. Und dann wahrscheinlich, ja, da gehst du. Und dann ist die zweite ein Spieler Daten. Dies ist also nur ein Beispiel für einige Spielerdaten, die wir verwenden werden. Dann haben wir diese sicheren Player-Prefs, die
die eigentliche Datei oder das Skript sein wird, das die Daten speichern wird. Und dann haben wir auch einen UI-Manager, der die Benutzeroberfläche verwalten wird, die angezeigt wird. Also lasst uns die nacheinander öffnen. Core Population Player-Daten, sicher, Player prefs, und dann last but not least, der UI Manager. Das erste, was wir uns ansehen werden, ist die Gerichtsbevölkerung, die sehr, sehr einfach sein wird. Das wird eigentlich ein wie der einfachste von allen sein. Weil dieser einfach eine private Liste von Sprite haben wird. Nein, nicht Frühlingszeichnung, sondern Sprite. Sie werden kalt, alle genannt Sprites. Und dann machen wir dieses eine serialisierte Feld. Das ist es, Das ist alles von der Autobevölkerung hat. Es ist einfach ein Mono-Verhalten, das alle unsere Karten halten wird. Und wir können dies sofort als leeres Spielobjekt hier hinzufügen. Das wäre also unsere Karte. Bevölkerung. Und dann fügen wir dies dem eigentlichen Objekt und dann unseren Kernen hinzu, die Sie bereits importiert haben. Noch einmal, wir werden zuerst hier einsperren. Also die Auswahl der Kartenpopulation GameObject, Sperren des Inspektors. Und wir werden Akkorde 0 wählen und halten Sie dann unsere Umschalttaste nach unten gehen, so dass, wenn jede Karte ausgewählt, und dann werden wir einfach ziehen Sie diese über auf alle Kabel Sprites. Und jetzt haben wir alle Gerichte Bräute hier, sauber in unserem Kartenbevölkerungsskript. Und das wird später verwendet werden, um im Grunde eine andere Karte Sprites referenzieren. Und ja, dann lassen Sie uns weiter und lassen Sie uns zuerst eine sehr schöne UI bauen. Dafür werden wir hier ein Panel für heute Abend hinzufügen und dann die Leinwand, zuerst natürlich, das wieder freischalten. Und dann wird die Leinwand auf dem Bildschirm Raum Kamera gesetzt werden. Hinzufügen der Hauptkamera hier. Das sollte nichts zu verrücktes sein. Und dann wird das Panel in der unteren Hälfte des,
der unteren Hälfte oder dem unteren Drittel sein. Lassen Sie uns niedrigere Hälfte tun, Das ist in Ordnung des Sichtfeldes. Und wir werden auch eine Karte haben. Also lassen Sie uns einfach in einem Gericht hören aufgetreten 0. Das wird um 0,52 Uhr sein. Ich denke, das ist in Ordnung. Und das wird die Spielerschnur genannt. Das ist also das Auto. Grundsätzlich kann der Spieler wählen welche Karte hier angezeigt wird, und wir werden diese speichern. Und wenn wir die Daten wieder einladen, ändert sich die Karte tatsächlich. Das ist also eines der Dinge, die wir tun werden. Wir müssen hier auch noch ein paar Dinge auf der Leinwand bauen. Das wird also in diesem Fall etwas umfangreicher. Eines der Dinge, die wir haben werden, ist ein Dropdown-Menü und wir werden den Text Mesh pro in diesem Fall verwenden. Also lassen Sie uns die wichtigsten TMP importieren hier. Nun, da wir den Text Mesh Probe im Grunde auch haben. Lasst uns das ein bisschen größer machen. So etwas wird wahrscheinlich vorerst ausreichen. Das können wir uns ein wenig später ansehen. Das wäre also das, im Grunde das Karten-Drop-down-Menü, oder? Also werden wir diese Karte Drop-down-Liste umbenennen. Dies ist das Dropdown-Menü, aus dem wir
im Grunde können , aus dem wir die Karten auswählen können. Wir werden das später mit den Gerichten bevölkern. Und dann werden wir drei Eingänge haben. Dies wird also eine Benutzeroberfläche und ein Eingabefeld sein, auch Text Mesh Pro. Weil warum nicht? Lass uns das so etwas machen. Lassen Sie uns versuchen, es mehr oder weniger zu zentrieren. Und dann lassen Sie uns in dieses Eingabefeld gehen und einfach die Größe dieser Woche ändern. So ist der Platzhalter die automatische Größe und andere Texte werden auch automatisch Größe. Und dann wird dieses Eingabefeld die HP-Eingabe sein. Also das ist, ich werde im Grunde, ja, zuerst werden
wir das bauen und dann werden wir die Daten darauf bauen, während wir dieses Control D auswählen, um es zu duplizieren. Und dann wird das ein bisschen nach unten geschleppt. Und das wäre zum Beispiel die leere Eingabe. Und dann werden wir das auch duplizieren. Und dann wird dies der XP-Eingang sein. Und die, Ich werde auch ein paar Etiketten dort zu bekommen. Dies wird nur Text Mesh Pro sein. Das ist zum Beispiel das HP-Label. Lasst uns das hier machen. Und wir werden das bewegen,
um es ein bisschen größer zu machen. Verschieben Sie das hier nach oben. Und das ist HP, richtig? Wir können dies auch Auto Größe. Das ist toll, das ist ziemlich gut. Duplizieren Sie es noch einmal mit hier Control D und dann noch einer, Regel d. Dieses wäre das MPI-Label, immer dafür zu sorgen, dass dies
hier gut gemacht ist , sowie die Spielobjekte, die richtig umbenannt werden Portal, sowie dann natürlich
auch die Änderungen der Texte, die sie sind. Denn das wird Ihnen eine Menge Kopfschmerzen ersparen, besonders später nach unten. Wenn Sie vielleicht einige Dinge ändern möchten, werden
Sie glücklich sein, dass Sie dies richtig umbenennen. Und dann zwei letzte Dinge, und das werden zwei Knöpfe sein. Ein Knopf hier. Dies wird wieder ein Text Mesh pro Taste sein. Und das wird der Speichern-Button sein. Und dann lassen Sie uns das auch duplizieren. Eigentlich ändern Sie die, so dass Sie einfach zurückgehen können Kontrolle Z Natürlich kann dies die sichere Daten-Taste sein, und dann lassen Sie uns das kopieren. Eigentlich. Lassen Sie uns auch die Auto-Größe machen, so dass das eigentlich noch besser ist. Jetzt dupliziert. Aber es scheint, dass dies die Schaltfläche Laden, Laden Taste sein wird. Und dann ändern Sie auch den Text hier, um Daten zu laden. Im Moment ist das erste Panel hier eingerichtet. Und jetzt wollen wir ein zweites Panel. Und das ist im Grunde, um zu zeigen, was wir hineingesteckt haben, wird Ihr Panel sein. Und dann machen Sie es etwas kleiner auf der rechten Seite hier. Wir werden hier oben ein Panel haben, das den Rest der Daten anzeigt. Das wird also das Player-Datenpanel sein. Und auf dieser Seite werden
wir einen UI-Text ganz oben haben. Was nur sagen wird, das wird nur das Player-Datenlabel sein. Zum Beispiel. Dies wird nur sagen, Spieler, ein Spieler Daten Auto Größe und dann auch machen es Mitte ID, das Ego. Und dann bekommen wir eine SMS. Dies wird das jedes peal HP Label wieder sein. So könnten wir zum Beispiel auch diese auswählen und dann erneut duplizieren. Bringen Sie sie zum Player-Datenpanel, und ziehen Sie sie dann einfach über, so dass wir nicht wirklich lesen müssen. Wir machen das, weil diese im Grunde die gleichen sind. sind nur Etiketten, die genau so bleiben, wie sie sind. Sie werden sich also nicht ändern. Allerdings werden wir, dann können wir sie grundsätzlich wieder duplizieren. Und dann werden sich
diese, diese Spielobjekte, tatsächlich ändern. Das würde also sein. Der HP-Wert, Werttext, zum Beispiel. Und dann haben wir den MPI-Wert Text und den XP-Wert Text. Die Eingaben hier sind, ich werde hier nur eine beliebige Nummer auswählen. So etwas wie das. Einhundert, zehnhundert, fünfhundert, und dann wird das hier 500 sein. Jetzt auch gehen, um dies ein wenig zu erweitern. Also werden wir dies ein bisschen größer machen und es auch mit diesen
ausrichten, so dass es irgendwie schön aussieht. Mehr oder weniger. Wenigstens gehen sie so etwas. Eine Linie dort und eine Linie. Da. Du gehst. Jetzt ist es in Ordnung. Und dann auch das hier. Und da, und dann werden wir die gleiche Größe hier machen, und diese haben die gleiche Größe wie die niedrigste und die mittlere. Da gehst du. Dann werden diese drei auch irgendwie auf der rechten Seite verankert sein. Also werden wir die Ausrichtung B auf der rechten Seite haben, und diese werden sich ändern. Aber wir werden herausfinden, warum, wie das in einer Weile funktioniert. Zunächst einmal ist das hier das Setup. Das klappt also sehr gut und das ist ziemlich gut. Lasst uns das kleiner machen. Und wir können im Grunde schon ein paar Dinge hinzufügen. Also das erste, was wir haben werden, ist, dass wir ein leeres Objekt erstellen. Hat der UI-Manager, wir werden viel damit in einer kleinen Weile tun, sowie wir werden ein, ein
anderes leeres Objekt, das sichere Datenobjekt haben . Dies wird im Grunde unsere Daten speichern und im Grunde auch
unsere Daten laden , so dass wir diese zur Verfügung haben, richtig? Ich glaube, dass das eine Art Setup ist, das wir jetzt brauchen, und jetzt geht es weiter zu den verschiedenen Skripten. Lassen Sie uns auch die hinzufügen, fügen Sie den Player, die Safe Player Prefs hier zum sicheren Datenobjekt und den UI-Manager zum Manager-Objekt, sowie die Herzpopulation, die wir bereits hinzugefügt haben. Und dann die Spielerdaten, richtig? Die Spielerdaten müssen zu nichts hinzugefügt werden, da die Spielerdaten eigentlich kein Mono-Verhalten sein werden. Das ist, wo wir im Grunde anfangen können. Also lasst uns dies in erster Linie löschen. Und die Spielerdaten, die wir speichern wollten, sind ein paar Dinge. Also zum Beispiel, was wir speichern wollen, ist eine öffentliche Ganzzahl, HP, eine öffentliche Ganzzahl MP und eine öffentliche Ganzzahl XP, sowie ein öffentlicher Int-Karten-Index. Dies ist also der Index, der die Karte darstellt. Natürlich könnten wir die Karte selbst retten. Aber warum sollten wir die Karte selbst oder das Sprite speichern, wenn wir einfach sagen können, Oh, ich meine, wir haben einen Index, wir haben eine Liste von Karten. Deshalb war die Kernbevölkerung so eine gute Idee. Und das können wir leicht machen. Und wir werden das im Grunde ziemlich vernünftig machen. Also zuerst, wir werden hier tatsächlich einen Delegierten haben. Dies wird also ein öffentlicher Delegat nichtig bei
Spielerdatenänderungen sein , so dass wir im Grunde sehen können, wenn sich die Daten ändern. Also werden wir jedes Bit Daten hier im Karten-Index, im Herzindex einfügen. Das ist also der The void“ und dann alle Parameter, wie das tatsächliche Ereignis oder die Methode, die es vom Ereignis aufgerufen wird, aussehen muss. Also müssen wir ihm die Umfänge geben und es muss vermieden werden. Und dann werden wir ein öffentliches statisches Ereignis vom Typ auf Spielerdatenänderung haben, das sich auf Datenänderung bezieht. Und wir werden dies verwenden, um die Benutzeroberfläche im Grunde zu aktualisieren, sobald sich die Daten geändert haben. Also noch einmal, anstatt es mit innerhalb einer,
einer Update-Methode durchzugehen , werden wir es so tun, oder? Wir machen hier ein einziges Muster. Also werden wir eine private statische LEA-Daten haben, die die Instanz sein wird, die am Anfang null sein wird. Und dann werden wir ein nettes kleines Ghetto haben,
indem wir eine statische Player-Dateninstanz machen. Dies ist jetzt in Großbuchstaben geschrieben. Das wäre also in diesem Fall, in diesem Fall ist eigentlich eine Eigenschaft. Und dann werden wir hier ein Get in haben, wo wir im Grunde sagen, Hey, wenn Instanz gleich null ist, dann werden wir eine neue Instanz erstellen. Und wenn dies nicht der Fall ist, werden wir diese Instanz einfach zurückgeben. Und im Inneren von hier wollen
wir tatsächlich Instanz ist gleich einem neuen Spieler Daten. Augenblick wäre dies jedoch ungefüllt. Also müssen wir zuerst einen neuen Konstruktor erstellen. Jetzt kann dieser Konstruktor tatsächlich privat sein, weil wir eigentlich nie wollen, dass klare Daten außerhalb von irgendwo liegen. Wir wollen es immer im Inneren von hier erschaffen. In diesem Fall, weil es immer nur ein Spieler Daten geben wird. Und das wird in dieser Instanzvariable gespeichert von öffentlichen statischen Player-Dateninstanz
zugänglich ist. Normalerweise ist dies nicht ganz die Art und Weise, dass es wahrscheinlich innerhalb eines Spiels funktionieren
würde, das tatsächlich funktioniert. Aber das wird sein,
ich denke, es genügt für diesen Moment, weil
eigentlich das einzige, was wir tun wollen, ist, dass wir einige Daten wollen, die wir speichern wollen. Unser Konstruktor wird also einen JMP XP und einen Kartenindex haben. Wir hätten dies auch automatisch generieren lassen können, aber ich glaube, dass das auch gut wird. Also das ist, dieser AHP,
dieser Punkt AMP ist gleich MP. This.Tab XP ist gleich x b, und dann ist diese Punkt-Karte Index gleich Koordinate x Es ist gleich Karte Index sie gehen. Und was wir auch haben werden, ist, das sind die Spielerdaten im Inneren von hier. Jetzt müssen wir die Dinge angeben, die wir wollen. Also lasst uns fünfhundert, hundert, zehnhundert bis 507.000 machen. Dies wäre also die HP, Starting HP, die Start-MP, Start XP, und der Karten-Index, mit dem wir beginnen. Und wir werden auch eine öffentliche Leere haben, die die Methode der Set-Player-Daten sein wird, die im Grunde die Spielerdaten festlegt. Also können wir es im Grunde ändern. Dies wird genau die gleichen Parameter wie der Konstruktor haben. Und es wird genau das gleiche in diesem Fall tun. Und dann werden wir auch die Datenänderung mit
einem Fragezeichenpunktaufruf aufrufen, so dass wir überprüfen, ob es im Grunde null ist oder nicht. Und dann können wir einfach alle Parameter eingeben, die wir dort oben hatten. Im Inneren von hier. Und dies wird dann das Update oder Änderungsereignis
jedes Mal aufrufen , wenn wir die Playerdaten einstellen und sie im Grunde ändern ,
so dass wir die Benutzeroberfläche aktualisieren können, sobald wir das im Grunde in unseren UI-Manager eingefügt haben. In Ordnung, also lassen Sie uns dann in den UI-Manager gehen. Ihr Manager wird also einen haben, das wird eigentlich sehr interessant sein. Dies wird wie folgt funktionieren. Also haben wir jetzt eine Reihe von UI-Elementen in unserer Szene. Und wir werden tatsächlich alle diese Art explizit in unseren UI-Manager einfügen. Also werden wir eine, also zuerst, natürlich,
mit der Unity-Engine wi, also müssen wir diesen Namespace verwenden. Wir werden zwei Knöpfe hier haben. Also private Taste, Schaltfläche Speichern. Und dann könnten wir das einfach über
Kontrolle C kopieren und dann mit der Schaltfläche Laden speichern. Jetzt werden beide serialisierte Felder sein. In diesem Fall werde ich das serialisierte Feld tatsächlich in die gleiche Zeile wie diese setzen, weil sonst unser Skript sehr lange wird. Es ist jetzt schon sehr lang, aber das wird es nur ein wenig einfacher zu lesen. Sie können das auch übrigens tun, ich setze es normalerweise an der Spitze auf eine andere Zeile. Aber es funktioniert auch. Wir werden in diesem Fall auch TMP Pro oder TM pro für unseren Profi verwenden. Und wir werden ein serialisiertes Feld vom Typ privates TMP-Eingabefeld haben, Eingang HP, keine Eingabe, HP tatsächlich. Und dann kann das auch kopiert werden. Also Control C, Control V, Kontrolle V. Und dann haben wir Eingang MP und XP. Es wird auch eine serialisierte Felder, private TMP, fallen gelassen. Dies wird unser Karten-Drop-Down genannt. Und dann haben wir serialisiert Feld von privaten TMP, txt. Dies ist der HP-Text. Dies ist also die tatsächliche Anzeige der Werte. Hp nimmt leeren Text und XP-Text. Und dann für jetzt, was wir haben werden, ist, dass wir welche haben. Also ein Spieler Daten spielen Datenreferenz hier wird auch eine private genannt Bevölkerung, Kernpopulation, so dass wir darauf zugreifen können, wann immer wir wollen. Und dann last but not least, was wir nicht implementiert haben, aber wir werden sehr bald bei den Safe Player Prefs, das wird die sicheren Player Prefs sein. Da gehst du. Und jetzt ist das ein Haufen Zeug, richtig? Das ist verrückt. Das ist eine Menge Zeug. Ja. Und was wir tun werden, ist zunächst, wir werden dies im Grunde in den wake-Methoden einrichten, die
wir das in der Wake-Methode speichern werden und
wir werden ein paar Dinge am Anfang einrichten. Und das wird die Spielerdaten sein. So Spielerdaten sind gleich Datenpunktinstanz. Dies stellt also einfach sicher, dass die Playerdatenvariable hier, die statische Variable gesetzt wird. Und das speichert diese dann in der Playerdatenvariablen. Dann werden wir es tun, dann sagen wir:
Ja, dann werden wir alle diese Dinge finden. Also sichere Player-Prefs wird gleich GameObject dot find sein. Und eigentlich, was wir ein anderes verwenden werden wir finden Objekt des Typs verwenden. Das ist also eine Art von GameObject Punkt finden und dann Komponente in einem erhalten. Dies wird ein finden,
ein Spielobjekt, das dieses spezielle Skript an es angehängt hat. Und dann wird das Auto Bevölkerung wird das gleiche Spiel Objekt Punkt finden, Objekt des Typs. Und das wird die Kartenpopulation sein, richtig? Und das ist es. Für jetzt, was wir in der wake-Methode genau hier tun werden. Es gibt noch ein paar Dinge, die wir tun müssen, bevor wir damit im Grunde fortfahren können. Und so glaube ich, dass die Update-Methode, die wir eigentlich nicht einmal brauchen, weil
wir, wie ich schon sagte, die Update-Methode nicht verwenden möchten. Wir wollen tatsächlich die tatsächliche Benutzeroberfläche mit einem aktualisieren, mit dem Ereignis Kohle. Und ja, das können wir schon umsetzen. Dies würde also mit der privaten Update-Benutzeroberfläche funktionieren. Hinweis nicht aktualisiert, sondern UI aktualisieren, die natürlich genau die folgenden Parameter hat. In MPI, in XP und int index. Das ist natürlich der Karten-Index. Und dann, was wir tun werden, ist, dass wir genau diese Dinge hier aktualisieren werden. Also haben wir die XP HP Texte, wir haben den leeren Text und mit dem XP Text habe ich dann eine andere Sache, die wir natürlich brauchen, ist das GameObject der Spielerkarte. Was wir also tatsächlich tun können, ist ein privater Sprite-Renderer. Dies sollte in nur einer Weile verständlich sein. Spieler Karte Sprite-Renderer. Das ist also die, dies wird ein Verweis auf den Warenkorb hier sein. Also die Spielerkarte, die wir hier und zum
Sprite-Renderer haben , so dass wir dies auch als Update einstellen können. Und das wird die Spielerkarte Sprite Renderer gleich GameObject Punkt finden, Spielerkarte, Spielerkarte, Spielerkarte, die Sie gehen. Dot get Komponente, nicht Komponente in Kindern erhalten, aber normale get Komponente, die Ego, Sprite-Renderer lesen. Das ist also das Setup. Dies ist etwas, das Sie normalerweise sowieso tun müssen, wenn Sie
einige große Skripte einrichten und eine Art ineinandergreifender Art, dies zu tun. Und jetzt können wir die Daten schon einstellen. Die Update-Benutzeroberfläche sollte also jetzt nein, ohne Probleme funktionieren. So ist Player-Sprite Renderer Dot Sprite gleich der Auto-Population. Und dann Aya, Natürlich, nun, die Autopopopulation im Moment, lassen Sie uns einfach schnell wieder in die Kernbevölkerung zurückkehren. Das ist natürlich jetzt privat, wir werden es tatsächlich in diesem Fall öffentlich machen müssen. Damit wir von überall aus darauf zugreifen können. Sie könnten auch darüber nachdenken, es als Singleton statisch zu machen, aber das wird auch gut sein. Und dann können wir jetzt tatsächlich darauf zugreifen. Und das wird der Akkord des gegebenen Index sein, wo wir diese Röhre einstellen werden. Und dann werden auch die Texte gesetzt. Also HP-Text, Text ist gleich jedem p Punkt toString, weil dies ganze Zahlen sind, müssen
wir sie tatsächlich mit der toString-Methode konvertieren. Und dann können wir das einfach überschreiben. So MPI-Texte und Experte TTX, XP und MPEG-2 String. Mit andersherum gehen
sie MP und XP. Sei vorsichtig damit. Das könnte passieren, nur um sicherzustellen, dass dort alles in der richtigen Reihenfolge ist. Richtig. Und dann das, was würden wir sonst wollen? Wir möchten auch eine andere Methode, die privat genannt wird oder nicht geladen wird, nicht auf Ebene geladen, sondern nur geladen. Und hier nehmen wir im Grunde die Eingaben und setzen diese ein. Die Idee ist also, dass sie jetzt leer sind, oder? Im Moment ist also die Textur leer und wir
werden dies sofort auf den Standardwert setzen. Also sind wir im Grunde sofort zu sagen, okay, Eingang HP, das ist geschrieben wird, wird Spieler-Daten Punkt, Punkt, Punkt zu String sein. Also bei der Onload werde
ich Ihnen zeigen, was das genau in einer Weile tut, sobald wir damit beginnen. Aber es wird im Grunde einfach sicherstellen, dass die tatsächlichen Eingaben auch korrekt ausgeführt werden. Hustentropfen. Ein Wert ist gleich Spielerdaten Punktkarte Index. Und dann wird die Onload-Methode kalt sein. Nun, es derzeit brauchen wir eigentlich nicht, es zu nennen. Rufen wir das einfach auf Ladung hier im Wachen an. Nach dem Player wurde diese Instanz festgelegt. Und dann glaube ich, dass wir eigentlich nicht mehr zu viele Dinge tun müssen. Wir müssen die Kurs-Dropdown-Liste füllen. Das ist also etwas, das wir tun müssen, denn im
Moment könnten wir dies entweder manuell oder über das Skript tun. Denn wenn wir uns das Panel hier ansehen, also ist dies unser Eingabefeld, hat
das Karten-Drop-down-Menü jetzt natürlich keine Optionen, oder vielmehr hat es Optionen a, B und C. Aber das ist natürlich nicht ganz, was wir wollen. Und was wir wollen, sind im Grunde alle Karten da drin. Also wollen wir die Karte Population Sprites da drin ,
so dass wir im Grunde eines der Schnüre wählen können, die sie sind. Und was wir tun werden, ist, dass wir eine neue Methode dafür machen werden. Das wird also eine private Leere sein. Leere knallen Sie spät, die Schnur fällt nach unten. Und das wird folgendes tun. Dies wird eine Liste von TMP-Dropdown-Optionsdaten haben. Dies ist, was wir bereits gesehen haben, die Art und Weise, wie wir in der Lage waren, unser Dropdown zu füllen bevor es mit dieser Option Datenklasse im Grunde war. Und das wird hier eine neue Liste sein. Und dann werden wir einfach für jedes Sprite tun,
Sprite in Gerichtsbevölkerung, Punkt-Punkt-Punkt-Note, Kartenpopulation. Das ist nicht richtig. Kartenbevölkerung. Da gehst du. Dot Sprites. Wir werden data.table Paket zu tun und dann
eine neue Option Daten hier mit dem bestimmten Sprite-Punktnamen sowie dem Sprite selbst zu tun . Und dann in der Endkarte, Dropdown-Menü. Und Optionen ist im Grunde, wo wir eine Liste von Optionen hinzufügen können und sie sind, werden
wir die Daten hinzufügen. Dies füllt also einfach das tatsächliche Dropdown-Menü aus. Und das werden wir bald in Aktion sehen. Richtig? Lassen Sie uns also sehen, lassen Sie uns auch sicherstellen, dass innerhalb unseres Gerichts Drop-down-Liste ,
dass die Optionen, die wir bereits oder tatsächlich
genommen haben , die optionale Liste hier sind, jetzt leer ist. Andernfalls haben wir diese Optionen auch. Und das wird natürlich nicht funktionieren. Ok. Ich glaube, dass wir jetzt weit genug voraus sind, oder wir sind weit genug drinnen, dass wir in der Lage sein sollten, das zu beginnen und tatsächlich Dinge zu ändern. Derzeit werden wir nichts speichern können. Und doch ist das letzte, was eigentlich, bevor wir anfangen, wir müssen sagen, hier wach
sind, ganz unten hier, wir sagen, dass dies die Veränderung sein würde. Also, das ist die, eigentlich, lasst uns das hier oben stellen. Sobald das Player-Dataset, wird
dies Spielerdaten sein, Ordnungsdatenänderung plus gleich Update UI. Wir werden also die Benutzeroberfläche aktualisieren, wenn sich die Playerdaten ändern. Richtig? Und das sollte es eigentlich für diesen sein. Mal sehen, fangen wir an, sehen, ob wir irgendwelche Fehler bekommen. Wir bekommen tatsächlich einen Fehler. Das ist nicht das Schlimmste. Sofort. Wir machen tatsächlich ein sehr kompliziertes Ding. So können wir sehen, was Y0 ist. Dies wird Karte bei Datenoptionen fallen gelassen
, so dass irgendwo etwas hier eine Nulllesung ist. Wir können darüber nachdenken. Die Idee ist also, dass wir kalte Linie 38 im UI-Manager haben. Und das ist irgendwie null hier. Was also wahrscheinlich bekannt ist, ist die Karte, die in diesem Fall heruntergelassen wurde. Und lassen Sie uns darüber nachdenken. Und das ist natürlich
wahr, weil wir
einen entscheidenden Teil davon verpasst haben , und das setzt all diese serialisierten Felder. Wenn wir also einen Blick auf den UI-Manager hier werfen, wird hier nicht
alles gesetzt. Und das ist natürlich etwas, das wir zuerst tun müssen. Das ist also etwas, das völlig normal ist, kann jedem passieren. Grundsätzlich vergessen wir manchmal, etwas zu setzen. Das ist eigentlich sehr wichtig, darüber nachzudenken. Dies ist ein Fehler, der jederzeit auftreten kann. Und jetzt werden wir dies so einstellen, dass das Einfügen eines Panels hier, Speichern Schaltfläche ist die Schaltfläche Speichern, die Schaltfläche Laden. Und jetzt, wie Sie sehen können, ist
die Benennung hier sehr praktisch, weil wir wissen, was alles ist. Hp-Eingang ist HB-Eingang, leerer Eingang ist leer Eingang x p Eingang EXP-Eingang, sorry, mit dem Ego ausgeführt. Und das Karten-Drop-down-Menü ist die heruntergeklappte Karte. Und dann können wir zu unserem Spielerdaten-Panel gehen. Und holen Sie sich die Werttexte. Also HB-Werttexte, MP-Werttexte und XP-Werttexte. Deshalb ist die Benennung der Spielobjekte so glaubhaft wichtig. Sag nicht, dass ich das nicht brauche. Es dauert nur ein paar Sekunden und es wird Ihnen eine Menge Ärger ersparen denn jetzt, wenn diese Eingabe eins, Eingabe zwei, Eingabe drei wären, hätten wir keine Ahnung. Wir müssen darauf klicken. Schauen Sie hier. Einfacher nicht. Nennen Sie sie richtig und alles wird viel besser funktionieren. Schreiben Sie es jetzt, wir sollten in der Lage sein, dies ohne Pfeile zu starten. Mal sehen. Okay, es gibt keine Fehler, also ist das schon irgendwie nett. können Sie die Eingabefelder sehen. Ich habe tatsächlich mit den Spielerdaten gefüllt, die im Hintergrund waren. Und dann können wir auch einige der Karten hier auswählen. Nun, das sind, wie Sie sehen können, ein bisschen vollgestopft. Also möchten wir vielleicht in unsere Drop-down-Liste schauen und es einfach ein bisschen größer hier
machen, so dass Sie diese Vorlage
im Grunde ein wenig erweitern können . Und ich glaube, das sollte das eigentlich schon ein bisschen schöner machen. Sowie die Vorlage hier zu setzen, wobei die Scrollempfindlichkeit ein wenig höher ist. Vielleicht würde es auch funktionieren, das auf 10 zu setzen, aber das ist etwas, das wirklich nicht unglaublich notwendig ist. Es wird unser Leben ein bisschen schöner machen. Also, jetzt ist es ein bisschen schöner. Wir können jedoch immer noch sehen, was wir Ihr Ende wählen können. Ja, wir können im Grunde eine andere Karte wählen. Und im Moment passiert nichts auf der, auf die Wahl hier. Aber das ist eigentlich etwas, das wir
jetzt einbringen werden , denn das sind die letzten drei Dinge. Bevor wir tatsächlich etwas speichern, haben
wir Kurve muss, müssen die Daten ändern, die wir sehen. Also im Grunde, wenn wir die Anzeige hier ändern, dann wollen wir, dass sich die tatsächlichen Karten ändern. Und wenn wir hier etwas ändern, dann wollen
wir im Grunde am Ende diese Daten Dinge hier oder
die relevanten Spielerdaten ändern , die angezeigt werden. Und wir können das hinzufügen, indem
wir im Grunde eine andere private Leere machen. Und das wäre im Grunde auf, auf Datenänderungen, auf Datenänderungen. Und wir werden das hier ganz unten stellen. Also das ist auf, auf Datenänderungen. Und das wird einige Zuhörer hier haben. Das wird also die Karte sein, die heruntergeworfen wurde. Aber ja, bei geändertem Wert fügen Sie Listener hinzu. Und dann im Inneren von hier haben
wir im Grunde den Index gegeben. Und dann können wir hier noch einen Lambda-Ausdruck machen. Und was wir eigentlich wollen, ist, dass wir die Spielerdaten ändern wollen, die sie sind. Also das einfachste, was ich hier denke, wäre, ja, Eigentlich machen wir eine private void sichere Methode mit Zoll, HP und MP in x ein ganzzahliger Index wie dieser, nur ohne diesen. Da gehst du. Und dann werden wir einfach Datenpunkt-Set-Player-Daten aufrufen, so dass es die Methode war, die wir zuvor definiert haben. Jeweils BMP. Und Index. Und das wird hier reingerufen werden. Selbst wenn sich der Index ändert, werden
wir alle Spielerdaten ändern. Das ist nicht so schlimm. Alle Dinge berücksichtigt, weil, weil, warum nicht? Das wird also sein, wir werden tatsächlich ein int machen. Dies wäre die Eingabe HP ist gleich in Punkt-Parse-Eingabe HP Punkttext. Entschuldigung, das ist die Eingabe. Ps. Ich nenne das die Eingabe. Ja, auf jeden Fall. Ok. Eingang HP ist die, ist eine Ganzzahl. Oh sorry, natürlich, das ist das gleiche, dann wird das nicht funktionieren. Also geben Sie HP dot-dot-dot Texte, sie gehen. Das war also das Problem hier drin. Und wir werden dies über kopieren, machen den Eingang MP und Eingang X p Wert. Dies kann MP und XP sein. Also im Grunde lesen wir in diesem Moment aus, was auch immer der Text in unseren Eingaben hier ist. Also die Eingabe hier, die Eingabe hier und die Eingabe hier. Das ist der Text, den wir vorlesen. Und dann im Grunde speichern Sie es in dieser sicheren Methode. Und das wird die tatsächlichen Daten dort setzen. Dies wird also jeden p-Wert eingeben, leeren Wert eingeben und XP-Wert hier unten eingeben. Da gehst du. Und dann brauchen wir auch den Index. Jetzt ist der Index eigentlich das, was wir mit dem Listener hier gegeben werden weil dies das Dropdown-Menü im Grunde gibt Ihnen den Index der Änderung, so dass wir herunterfallen können und dann wählen wir ein bestimmtes Element darin. Und wir bekommen den Index, den wir auch ändern. Und genau das möchten wir
der Speichermethode hier hinzufügen , damit sich der Index des Akkord ändert. Dies ist also einer der Zuhörer, die wir hinzufügen wollten. Und wir wollen auch Listener für die Änderung der tatsächlichen Eingaben hinzufügen, die sie sind. Also die Eingabe HP, ähm, die das Eingabefeld ist, gibt es ein Ende bearbeiten. Das ist wieder einmal, wir haben das schon mal gesehen. Dieses Ereignis, das ausgelöst wird, wenn wir fertig sind, das besondere zu bearbeiten, na ja, was auch immer dort geschrieben ist. Und dann im Inneren von hier, werden
wir tatsächlich eine Schnur bekommen. Das wird also sein, nennen
wir das den HP-Text. Sicher, warum nicht jeder Scheitelpunkt ändert, warum nicht das? Und dann werden wir auch die Speichermethode hier aufrufen. Und anstatt das eigentliche Ding zu verwenden, das dort oben analysiert wurde, wollten
wir tatsächlich die jeweilige Vertexänderung hier. Allerdings sind die anderen Werte, die wir von oben nehmen werden, sie sind Eingabe x p-Wert sowie der Index, den wir tatsächlich auch bekommen müssen, natürlich, dann wäre dies int index gleich int dot nirgendwo. Das musst du eigentlich nicht tun. Wir können Dropdown-Punktwert tun. Da gehst du. Das wäre also der Index. Nennen wir das eigentlich den Karten-Index. Denn sonst könnten dieser Index und dieser Index verwirrbar sein. Also Karten-Index. Und da gehst du. Dies ist jetzt natürlich eine Zeichenfolge. Das müsste also im Inneren von hier geparst werden, ist ein bisschen wackelig, aber ich denke, dass das in Ordnung sein wird. Der Text verändert das Ego. Und dann lasst uns das hier runterziehen, damit wir es können, jetzt denke ich, dass das gut läuft. Und das wollen wir nicht nur für die HP tun. Also, wenn die, wenn wir mit der HP-Bearbeitung fertig sind, aber auch mit der MP und der XP-Bearbeitung. Nun sehr wichtig, dass wir auch diese Variablennamen ändern. Das ist also NP und das ist XB-Steueränderung. Und dann wollten wir die HP-Änderung hier nicht mehr analysieren. Wir wollen tatsächlich den Wert an der Spitze nehmen. Wir wollen, ist dieses in Dot Parse kopieren. Und dann ist es hier, die gleiche Idee. Ups, nein, das ist nicht das, was wir wollen. Da gehst du. Dies wird Eingabe HP-Wert und dann kopieren Sie diese Kontrolle C. Und dann wird dies Integer.ParseInt sein, dies und das. Alles klar, lasst uns das durchmachen. Lassen Sie uns schnell, schnell, schnell Listen erklären. Also, was machen wir hier? Auf Datenänderungen ist also einfach eine Methode, die wir am Ende unserer Gewichtsmethode hier aufrufen. Und die Idee ist, dass wir am Anfang alles
auslesen , wofür wir die Eingaben haben. Also lesen wir aus dem Text des HP und setzen den MPI-Eingang in den XP-Eingang, sowie den aktuellen Wert, der in einigen unserer Dropdown-Menüs ausgewählt ist. Dann fügen wir jedem dieser Zuhörer hinzu. Also im Grunde, wenn sich der Wert unseres Dropdowns ändert, wenn wir
also einen anderen Wert auswählen, dann wollen wir, dass die sichere Methode Ende genannt wird, genau diese Werte übergeben wird. Nun, das wird einfach nichts ändern. Wir sind einfach, aber wir wollen immer noch, dass diese Werte übergeben werden. Denn in unserem Fall, dass wir eine sichere Methode haben alle vier dieser Werte theoretisch
hat, können
wir natürlich auch zu den Spielerdaten gehen und grundsätzlich Spielerdaten individuell einstellen ,
so dass wir einzelne Teile der Dinge einstellen können. Also, wenn wir hier zurück zu unseren Spielerdaten gehen, natürlich im Moment, unsere Spieler-Daten etwas, wo wir jede Variable zur gleichen Zeit setzen müssen. Wir könnten zum Beispiel mehr über machen, diese Methode
überladen und so etwas wie
Spielerdaten setzen und ihm dann nur die HP geben oder ihm nur die MP geben, oder nur die XP und so weiter und so weiter. Im Moment denke ich, dass es sinnvoller ist, all dies in einem zu haben, weil wir auf den Rest der tatsächlichen Eingabe zugreifen
können. Sie sind überhaupt kein Problem. Und dann wäre das nächste, dass, wenn wir zu einem, ändern Sie die Eingabefelder. Also, wenn wir mit der Bearbeitung dort fertig sind, als das, was wir wollen, ist,
wollen wir die einzige Eingabe, die wir geändert haben, setzen. Dies wird eine Reihe von daher müssen wir es auch analysieren. Und dann wird der Rest die Standardwerte sein, sozusagen. Die werden also so bleiben. Und das wollen wir für jeden der drei Eingänge tun. Richtig? Und jetzt sind wir immer noch nicht beim Sparen, denn wie ich schon sagte, das wird ein bisschen umfangreicher sein, weil ich eigentlich möchte, dass Sie den Rahmen um ihn herum verstehen. Es ist Gewicht, weil der Einsparung selbst wird wirklich einfach sein. Du wirst wirklich sein, das ist die Rettung. Sie verbringen etwa 30 Minuten auf, auf der Benutzeroberfläche und all das und dann wie vier Minuten, um Dinge zu speichern, das ist lächerlich. Aber das ist im Grunde, ich möchte das als eine Art,
eine wirklich schöne Art und Weise haben , in der man auch ein wenig herumspielen kann. Also, ja, jetzt ist alles eingestellt. Mal sehen, was passiert. Also zuerst, fangen wir damit an. Und wenn wir hier im Grunde eine andere Karte ausgewählt haben, und wie Sie sehen können, ändert sie sich zum König, was wirklich, wirklich cool ist. Und dann können wir eine andere Karte ändern, 33, und dann wollen wir vielleicht 41 runtergehen. Da gehst du. Nun, lasst uns die HP ändern. So zum Beispiel, 8 Tausend. Und wenn ich außerhalb dieses klicke, dann wird die HP tatsächlich auch geändert werden. Nun, was Sie hier bemerkt haben, ist, dass sich der Akkord
wieder ändert und wir werden das auch beheben. Ich habe gerade bemerkt, warum das so sein würde. Und der Grund ist, weil sich dies auf Daten ändert, natürlich einmal aufgerufen wird. Und wir speichern im Grunde, was auch immer die tatsächlichen Werte sind. Die hier drin, was Sie sagen könnten, na ja, das wird kein Problem sein. Allerdings wird es tatsächlich ein Problem sein, weil
das eine Art einmalige Sache ist, richtig? Dies wird also einmal aufgerufen und dann werden diese Werte an diese weitergegeben. Es gibt also zwei verschiedene Wege, wie wir damit umgehen können. Wir können entweder dazu bringen, diese Dinge richtig zu machen, und sie dann hier reinzubringen. Also kann im Grunde diesen haben und dann diesen, und dann diesen. Jetzt fragen Sie vielleicht, warum sollte es das ändern? Und lasst uns das so brechen, damit wir es sehen können. Sie könnten also fragen, warum würde das das ändern, um zu funktionieren? Und die Idee ist, dass sich der Eingabetext hier ändert, nachdem wir diesen Wert zwischengespeichert haben. Dieser Wert ändert sich nicht mehr. Dies ist im Grunde in Stein gesetzt. Das ist also eine Sache, die wichtig ist, wenn Sie es sind. Ich meine, das ist nicht wirklich eine Art Parallelität
oder, weißt du, mit parallelen Dingen zu arbeiten. Aber das ist eines der Dinge, über die es sehr wichtig ist, darüber nachzudenken weil das Zwischenspeichern dieser Werte manchmal nicht ganz funktioniert. Also, leider müssen wir das nehmen und dann im Grunde dieses und dieses ersetzen. Und dann können wir den leeren Text nehmen und diesen und diesen ersetzen. Lassen Sie uns auch sicherstellen, dass wir dies auf vernünftige Weise brechen. Also im Grunde, nach dem leeren Text für diesen, und wir müssen die XP horsing hier nehmen und den z-Wert, z-Wert nehmen. Dies wird bereits getan. Und dann leider dasselbe mit dem Karten-Index, wo wir tatsächlich den Wert hier setzen müssen. Und dann werden alle drei dieser Variablen, alle vier dieser Variablen vollständig veraltet und wir brauchen sie nicht mehr. Dies führt leider dazu, dass dies viel weniger lesbar ist. Aber wir könnten dies ein
wenig lesbarer machen , indem wir den Lambda-Ausdruck in diesem Fall erweitern. Aber das werden wir jetzt nicht tun. Denn in diesem Fall funktioniert das auch. Wir könnten auch eine andere Methode namens haben, aber ich glaube, dass dies vorerst gut sein wird. Richtig. Und dann nur für ein kleines bisschen weitere Klärung, denn das ist vielleicht nicht offensichtlich, warum das nicht funktioniert, warum das vorher nicht richtig funktionierte. Die Idee ist, dass so zum Beispiel, wenn wir den Wert unserer Karten Drop-Down-Wert ändern. Und wenn wir jetzt den Parse-Text hier einfügen, dann passiert dies jedes Mal, wenn wir diesen Wert tatsächlich ändern. Also wir im Grunde, jedes Mal, wenn die sichere Methode aufgerufen wird, tun
wir dies tatsächlich wiede
87. (Unity Intermediate) Speichern von Daten mit PlayerPrefs: Und nun zum Sparteil, auf den wahrscheinlich jeder schon eine Weile gewartet hat. Und was wir haben werden, ist, dass wir zwei Methoden in unserem Spiel haben werden, sichere Spieler Prefs. Das wird eine öffentliche vermeiden Sie eine sichere Daten, Daten speichern, und dann eine öffentliche Lücke laden Daten, laden, Daten laden. Da gehst du. Und auch eine private Spieler-Datenvariable spielen hier unsere Daten. Sie gehen. Das Player-Datum der Variablen wird eingestellt werden, um eine Daten gleich
Layer-Datenklasse gleich in Punkt-Instanz spielen sollte sinnvoll sein. Die gespeicherten Daten werden einfach Player-Prefs machen. Das ist also genau die Klasse, von der ich gesprochen habe, in der wir Dinge
retten können und dann mit dem Set Dinge retten können. Also setzen, schweben, setzen und String setzen. sind im Grunde die drei verschiedenen Werte, die wir speichern können. Das wären also alle Ins, also ist das HP. Und dann als zweiter Parameter werden
wir ihm den tatsächlichen Wert geben. Das ist also alles, was wir wirklich tun müssen, um das zu retten. Und dann lassen Sie uns das für alle tun. Also MPI, nicht nur er, sondern MP, EXP, und dann werden wir auch die Karte tun, Karte zu Karte Index. Und das wird leer EXP sein, und dann der Court Index. Das ist also die Einsparung erledigt. Das war's. Jetzt müssen wir uns natürlich nur an diese Saiten erinnern , weil sie die Schlüssel sind. So können Sie sich im Grunde vorstellen, dass der Player als Wörterbuch drückt, ein Fencing-Wörterbuch, das dies tatsächlich auf einem,
auf der Festplatte, auf der Datei speichert . Dann, um das zu lesen, können wir tun. Also unterbrechen ganzzahlige XP,
Spieler, Spieler prefs, Player prefs dot, in diesem Fall. So ist getInt so gemacht, wie Sie den Schlüssel übergeben und dann gelangen Sie zum tatsächlichen Wert. Sie können auch eine zweite Sache tun, in der Sie einen Standardwert eingeben können. Wenn dies also nicht gefunden
wird, erhalten Sie im Grunde den Standardwert. Dies ist einfach zu fehlersicher, dass, wenn aus irgendeinem Grund Ihre Dinge nicht gesetzt sind, dann können Sie es tatsächlich so tun. Also lassen Sie uns das auch ein paar Mal kopieren. Mp XP und dann der Karten-Index. Und wir hatten eine von 1500 für die MP und die XP war 2500. Also werden wir das auch ändern. Ist 0 für die Karten-Indizes wird sich so öffnen. Karten-Index das Ego. Also jetzt, da wir auch die grundlegenden Standardwerte haben, nur für den Fall, dass diese nicht existieren. Denn vielleicht, was passiert, ist, dass wir auf
die Schaltfläche „Daten laden“ klicken und tatsächlich die Daten noch nicht gesetzt wurden. Das wäre also sehr gut. Und dann spielen Sie einen Datensatz Player-Daten. Und dann können wir den HP,
den MPI XP und den Karten-Index eintragen . Und das war es für das Speichern und Laden. Wir müssen jetzt nur noch an den beiden Knöpfen anknicken. Und das wäre es. Also müssen wir nur den Speichern-Button auf Klick tun, Listener hinzufügen. Und dann können wir einfach sichere Spieler prefs dot speichern Daten nennen. Und im selben Token, indem wir dies kopieren, können wir die Schaltfläche Laden sagen. Wir möchten Daten laden. Und die Player-Prefs, Safe Player Prefs wurden mit dem Find Objekt vom Typ gesetzt. Das sollte also eingestellt werden. Das wird auch tun. Dies könnte also in eine andere Methode extrahiert werden. Wir werden das hier vorerst behalten. Aber insgesamt glaube ich, dass dies eigentlich alles sein sollte, was wir brauchen. Tun Sie. Weißt du, es gibt noch ein paar Dinge. Also diese onload-Methode, könnten
wir uns wahrscheinlich daran erinnern, den Text zu füllen. Es gibt eine Menge Dinge, die wir ändern können, um dies ein wenig lesbarer zu machen. Aber insgesamt wird das in Ordnung sein. Und mal sehen, ob wir tatsächlich Daten speichern und laden können. Das wäre also sehr cool und sehr interessant. Also werden wir das für jetzt beginnen, und dann werden wir einfach eine schöne der König wählen. Dann werden wir so etwas wie 12000 haben und dann haben wir eine Menge von dort und dann so etwas für die EXP. Und dann lassen Sie uns die Schaltfläche Daten speichern drücken. Nichts ist passiert, was eigentlich ziemlich gut ist, weil ,
wenn es einen Fehler gibt, dann hätten wir wahrscheinlich davon gehört. Und dann lassen Sie uns einfach aussteigen und dann wissen alle, dass alle meine Daten verloren gehen. Ich weiß es nicht. Ich weiß nicht, was wir hier drin hatten, etwa 30000. Lassen Sie uns auf die Schaltfläche Daten laden klicken und sehen, ob das funktioniert. Und das tat es. Das ist also ziemlich cool. Eines der Dinge, die gerade nicht aktualisiert wurden, sind die HP Texte, die Texte und die XP Texte hier. Das ist also etwas, worüber man auch nachdenken müsste. Denn wenn wir die eigentliche Karte hier ändern würden, würde sich
das ändern, weil dies die ganze Zeit von denen ausliest. Das ist also eine Sache, die sehr wichtig ist, darüber nachzudenken, dass man tatsächlich muss. Ich bin auch dafür sorgt, dass diese auch gespeichert werden und dass sie sich damit ändern. Also, was Sie grundsätzlich in der Theorie tun könnten, was im Grunde tun könnte, ist, dass Sie
die Lademethode jedes Mal aufrufen können , wenn Sie dies tun. Also im Grunde, was Sie einfach tun, ist, anstatt ihm nur die eine Methode zu geben, können
wir hier eine lockige Klammer und eine lockige Klammer einfügen. Und dann stellen Sie sicher, dass Sie das Semikolon nicht vergessen und dann „Last“ sagen. Jetzt wird die onload-Methode jedes Mal aufgerufen, wenn Sie sagen, klicken Sie auf die Schaltfläche Speichern. Und dann können wir im Grunde dasselbe auch für die Schaltfläche Laden tun. Also machen Sie das hier, und dann können wir sagen, laden. Und dann, wenn die Onload natürlich aufgerufen wird, werden wir unsere Eingaben immer genau darauf zurücksetzen. Und das sollte dann völlig in Ordnung sein. Mal sehen, ob das jetzt funktioniert. Die Daten sollten weiterhin gespeichert werden, da sie vorher gespeichert wurden. Schauen wir uns diese Ladedaten an. Und wie Sie jetzt sehen können, wurden
alle diese Daten ebenfalls festgelegt. Und wenn wir dann die Karte ändern, dann ändert sich hier nichts mehr. Das ist die letzte Art von Fixed, die Sie implementieren müssten, damit dies funktioniert. Und dann kann ich das in etwas anderes ändern. 99, 99, so etwas. Und dann, weißt du, ich weiß nicht, so etwas. Und wenn ich das nochmal speichere und jetzt werde ich alles ändern, richtig? So etwas wie das. Und dann gehen wir zu einer anderen Karte. Und wenn ich jetzt laden würde, ändert sich
alles wieder zu genau den Daten, die ich kurz zuvor gespeichert habe. Richtig? Das war also ein sehr Kreisverkehr, um zu zeigen, wie Sie Daten speichern können. Ich wollte das in ein bisschen mehr machen, sagen
wir, Stil in ein bisschen schöner und etwas, das Sie tatsächlich haben, so dass Sie damit spielen können. Unabhängig davon ob Sie
das Paket bereits importiert und so herumgespielt haben, oder wenn Sie mitprogrammiert haben, verstehen Sie, dass dies ein wenig komplizierter ist, obwohl die tatsächliche sich selbst zu sparen, wie Sie deutlich sehen können, ist sehr, sehr einfach zu tun. Das ist keine verrückte Sache. Es sind nur zwei Methoden, wenn im Grunde nur die
set-Methode und dann die getMethod, die wir auf den Player-Prefs tun. Und ja, das wäre die Rettung. Aber ich wollte das Ganze herum haben, denn nächste Vorlesung, was wir uns ansehen werden, ist das Speichern von Daten mit grundsätzlich Jason mit JSON-Dateien. Und das wird ein bisschen komplizierter, aber wird eine Nummer eins viel robuster sein? Und Nummer zwei, es wird uns tatsächlich erlauben,
ganze Klassen zu speichern , anstatt nur ganze Zahlen, Floats und Strings zu speichern. Was ziemlich wichtig ist, besonders wenn Sie wirklich mit einem großen Projekt arbeiten. Dann könnten ganze Zahlen, Floats und Strings Sie ein wenig für. Aber irgendwann wirst du wie sein, Mann, ich will das einfach nicht einstellen, auch die Spieler Prefs sind nicht die beste Idee, alles dort zu speichern. sind, Es ist besser, im Grunde zu sparen. So, wie Sie sehen können, speichert es Spielereinstellungen zwischen Spielsitzungen. Wie der Name schon sagt, ist
es mehr oder weniger besser,
Ihre Präferenzen für Ihren Spieler dort zu speichern . Also vielleicht Optionen, das ist eine gute Idee, um in den Player-Prefs zu speichern. Und darüber hinaus ist es wahrscheinlich nicht, es wird definitiv nicht empfohlen, irgendwelche lebenswichtigen Daten dort zu speichern. Es ist viel besser, das in
Ihrer eigenen JSON-Datei zu speichern und dann vielleicht sogar Ihr eigenes Dateiformat, aber das ist viel zu fortgeschrittene benachbarte Datei für uns gerade jetzt bei der nächsten Vorlesung wird sehr viel ausreichen, so dass es mehr als Genug. Das wäre es für diesen Vortrag. Wie ich schon sagte, es war ein bisschen umfangreicher. Die Rettung selbst. Ziemlich einfach. Aber ja, das wäre es für diesen hier. Wie immer. Wenn es Ihnen gefallen hat und wenn Sie etwas Neues lernen, würde
ich natürlich eine Rezension von Ihnen sehr schätzen. Andernfalls, wenn Fragen bleiben, dann natürlich, fühlen Sie sich frei zu fragen, und ich werde sicher sein, zu antworten. Und ja.
88. (Unity Intermediate) Speichern (Benutzerdefinierte Daten) mit JSON-Dateien: In Ordnung, lassen Sie uns die Einführung der zwischengeschalteten Einheit hier für den Einheitskurs fortsetzen. Und in dieser Vorlesung werden wir einen Blick darauf werfen, wie Daten in einer JSON-Datei gespeichert werden. Das letzte Mal haben wir hier im Grunde unser nettes kleines Beispiel aufgebaut, sowie Sicherheitsdaten mit den Player-Prefs in diesem Fall. Und jetzt werden wir etwas hinzufügen und im Grunde die Daten in einer JSON-Datei anstelle der Player-Prefs gespeichert werden. Lassen Sie uns zunächst eine neue Szene erstellen. Das wird jetzt eigentlich keine neue Szene sein. Wir werden tatsächlich die L6-Player-Prefs nehmen,
sorry, und dann Control D, um sie zu duplizieren. Und das wird L8 sein, Jason. Und dann innerhalb des Skript-Ordners, ein neuer Ordner, und das ist L8 Speichern mit JSON oder einfach Jason, das ist auch in Ordnung. Und dann das neue Skript hier, und wir werden das den Jason-Loader nennen. Weil es ein Einzelgänger sein wird, der Jason Wright lädt. Und nun lassen Sie uns auch öffnen, die Jason ist hier zu sehen und dann über die sicheren Daten zu wechseln. Also werden wir im Grunde das
sichere Skript des Players prefs von dort entfernen und das JSON-Lade-Skript dort hinzufügen. Und dann öffnen wir das Jason Lower Script sowie wir brauchen
auch den UI Manager und die Player-Daten. Das sind die anderen beiden, die wir auch brauchen, weil wir ein paar Dinge da drin
ändern müssen , um tatsächlich nicht so viele. Also in den Playerdaten, werden
wir tatsächlich System.Out serialisierbar an der Spitze der Klasse hinzufügen. Dies ermöglicht es uns, diese Klassendaten sozusagen
in eine JSON-Datei zu konvertieren . Das ist also die Idee, die sie sind. Und die zweite Sache im UI-Manager, die wir tun müssen, ist eigentlich nicht zu schlecht. Wir möchten hier eine
weitere private Variable hinzufügen , und das wäre ein privater Jason-Loader namens JSON-Lader. Nennen wir es so. Das ist eigentlich, und das ist okay, das ist in Ordnung. Und das wird hier eingestellt sein. Dies wäre also der JSON-Lader gleich GameObject dot find Objekt vom Typ Jason loader. Und das wäre in Ordnung. Und dann statt folgendes zu tun, also anstatt mit den Player-Prefs zu speichern und zu laden, werden wir sagen, okay, wenn die Player-Prefs nicht null sind. Also, wenn es in der aktuellen Szene ein gefunden hat, ein Objekt mit dem sicheren Player prefs. Dann werden wir das tun. Und wenn das nicht der Fall ist, werden
wir schauen, ob der Trace und der Loader ungleich null auf gleich null ist. Und wenn das der Fall ist, dann machen wir etwas anderes. Dann werden wir im Grunde die JSON Loader Punkt speichern Daten halten. Also lassen Sie uns die JSON-Ladedatei hier öffnen. Und wir werden das eigentlich
ein Mono-Verhalten halten , weil wir es bereits angehängt haben. Und wir brauchen noch einmal bei den Spielerdaten hier, Layerdaten als Variable. Dies kann natürlich sehr einfach mit Player-Datenpunktinstanz abgerufen werden. Und dann, genau wie bei den Spieler-Prefs, werden
wir tatsächlich eine öffentliche Reise,
sichere Daten und eine öffentliche Lücke haben . Laden öffentlicher ungültiger Daten. Nein, nicht das, aber laden Sie Datenmethoden. Also dies, wenn Sie dies gesehen haben und dann auch der Spieler Prefs C-Sharp-Klasse, die wir gemacht haben. Sie könnten sagen, nun, wir haben eine sichere Daten und laden Daten auf beiden. Könnten wir nicht eine Schnittstelle dafür schaffen? Ja, das ist genau richtig. Das wäre eine der, eine der Möglichkeiten, die Sie auch tun könnten. So könnten Sie wahrscheinlich eine Schnittstelle für jeden von ihnen einrichten. So etwas wie eine gespeicherte Daten oder ein IA, IA Daten speichern oder so etwas,
das wahrscheinlich auch funktionieren würde. Aber in unserem Fall müssen wir das nicht tun. Wir wollen nur wissen, okay, wie können wir das wirklich in unsere Nachbarschaft speichern und wir können das tun? Zunächst einmal müssen wir auch den System.out.Print Joe Namespace verwenden. Denn das ist der Namespace, den wir, die wir schreiben und lesen können Daten. Im Moment in unserer Speicherdatenmethode, was wir tun werden, ist, dass wir eine Zeichenfolge definieren, die angrenzend genannt wird. Und dann werden wir
die Jason-Dienstprogrammklasse verwenden , um ein Objekt im Grunde in einen JSON zu konvertieren. Wie Sie sehen können, können wir ein Objekt als Parameter einfügen und diese in
eine JSON-Darstellung konvertieren. Nur für eine schnelle Klärung, angrenzend ist eine JavaScript-Objektnotation. Jetzt lass dich nicht täuschen. Es muss nicht nur in JavaScript verwendet werden,
ist nur eine Art Art und Weise, dass Sie
Daten ziemlich effizient speichern und im Grunde lesen und schreiben können . Was wir also tun werden, ist, dass wir
diese JSON-Zeichenfolge protokollieren und tatsächlich sehen, was sie tut. Und dann, was wir tun können, ist, dass wir auch einen bestimmten Pfad protokollieren. Also natürlich werden wir bald im Grunde den Stream-Writer verwenden
, den wir bereits in der C-Sharp-Einführung verwendet haben. Und dieser wird etwas Besonderes
in einem bestimmten Verzeichnis speichern . Und die Art und Weise, wie wir dies tun können, ist die Verwendung von Anwendungsdaten, Datenpfad. Das ist also im Grunde der Datenpfad. Dann können wir ein halbes altes Verzeichnis-Trennzeichen verwenden. Jetzt mag das verrückt erscheinen. Was machst du da? Dann wird der letzte Datenpunkt JSON gespeichert werden. Und die Idee ist, dass der Datenpfad, wie Sie sehen können, immer direkt im Spielordner ist. Dies ist also ein direkter Pfad zum Ordner „Assets“. Und dieser alte Separator ist im Grunde. Nun, was du brauchst. Also entweder ein Schrägstrich grauer umgekehrter Schrägstrich weil manchmal abhängig davon, auf welcher Art von System Sie sind, ob Sie auf einem Linux, Mac oder PC sind oder nicht. So Windows, dass dies anders sein könnte. diesem Grund ist ein Pfadpunkt altes Verzeichnistrennzeichen wahrscheinlich am besten hier zu verwenden. Also lasst uns zuerst tatsächlich nur, dass dies hier auf einem
Safe ausgegeben wird, anstatt es tatsächlich etwas zu haben , nur damit wir das tun können. Also lassen Sie uns im Grunde das Hören hier beim
Hörer kopieren und dann die Einstellungen des sicheren Players auf Jason Loader ändern, und dann den JSON niedriger als auch. Und das sollte absolut funktionieren, völlig in Ordnung. Nun, lassen Sie uns sehen, ob das tatsächlich funktioniert hat oder nicht. Also, wenn wir hier reingehen und wir werden ein paar Dinge ändern. So zum Beispiel, im Alter, ändert dies die Zahlen hier nur ein wenig. Und dann, wenn wir Daten speichern drücken, sollten
wir eine Ausgabe sehen. Und wir tun es tatsächlich, HB ist fünf, was macht das 5 Millionen, ja, und dann 24 Tausend für MP ein 100 und 33 für XP. Und dann ist der Warenkorb-Index 18. Und dann sehen Sie auch genau, wo es die benachbarte Datei speichern würde. Und das wäre genau in unserem Asset-Ordner hier. Das ist also ziemlich gut. Und wir können jetzt die Funktionalität hinzufügen. Ich werde es auch retten. Also, wie würden wir es retten? Nun, wir werden das Schlüsselwort
mit dem Stream Writer in diesem Fall wieder verwenden. Dies wird also der Schreiber sein und das ist gleich einem neuen Stream Writer für ein bestimmtes Verzeichnis in diesem Fall, und das ist genau das Verzeichnis, das wir hier angegeben haben. Ich wollte das nur ausgeben, weil das irgendwie nett ist. Und dann machen wir das. Und während das passiert, brauchen
wir eigentlich nichts Verrücktes hier zu tun. Schriftsteller, Punkt-Punkt-Punkt, richtig? Und dann geben wir ihm nur die eigentliche benachbarte Zeichenfolge, die wir hier haben. Weil das benachbarte Dacian Dienstprogramm
bereits unser Objekt oder ein Player Datenobjekte in eine Zeichenfolge konvertiert hat. haben wir in der Ausgabe gesehen. Und wir müssen den Datenpfad nicht mehr ausgeben. Und dann für die Ladedaten sind eigentlich genau das gleiche genau umgekehrt. Also werden wir eine Schnur haben, Jason, die ein, ein Saitenpunkt leert sich auf eine leere Schnur. Und dann werden wir den Stream-Leser benutzen. In diesem Fall entspricht Reader dem neuen Stream-Leser. Nun natürlich, stellen Sie sicher, dass dies genau der gleiche Ort hier ist. Es könnte also Sinn oder Interesse geben diesen Datenpfad als String-Variable innerhalb Ihres Loaders als,
als String zu
speichern , wie ich sagte, wo es das an diesem Punkt nicht tun wird, aber es könnte eine gute Idee sein. Und dann sagen wir einfach Reader Punkt zu Ende und speichern Sie das innerhalb unserer JSON-Zeichenfolge. Jetzt haben wir im Grunde genau die gleiche JSON-Zeichenfolge. Lesen Sie wieder, wie wir hier drin haben. Aber jetzt müssen wir natürlich eine Art neue Spielerdaten dafür machen. Und wir werden einen Spieler Daten machen. Daten sind gleich Jason util dot von JSON. Und dann innen von hier, innerhalb unserer Und eckigen Klammern sind abgewinkelte Klammern. Wir geben tatsächlich an, was wir als Retouren wollen. Das wird also die Spielerdaten sein. Und dann wird innerhalb von dort an der eigentlichen Zeichenfolge gehen. Und dann, was wir tun werden, ist, dass wir Spielerdaten sagen, Spieler-Daten, Spieler-Daten. Das sind also die tatsächlichen Daten, die wir hier haben. Dies wäre eine neue Instanz davon. Und in der Regel, was wir tun würden, ist eine Daten, data.table P und dann data.dat AMP, und dann data.txt. Und dann last but not least, data.dat Karten-Index. Und dann wurden die tatsächlichen Spielerdaten wieder eingestellt. Jetzt könnten wir natürlich
auch daran denken, vielleicht eine andere Set-Player-Datenmethode zu erstellen, bei der wir ihm
tatsächlich eine andere Layer-Dateninstanz hier geben und es so machen. Aber im Moment wird das natürlich völlig ausreichen und es wird völlig gut funktionieren. Lassen Sie uns also sehen, ob das funktioniert oder nicht. Also das erste, was natürlich das Speichern ist und ich bin nur ein bisschen herumverfolgen. Lass uns so etwas machen. Und dann machen wir es wie 1990 und dann machen wir es wie 420. Sicher, warum nicht? Und dann lassen Sie uns auf die Schaltfläche „Sichere Daten“ klicken. In Ordnung. Das schien also geklappt zu haben. Also 17 für 20, 30, 45 und 1990. Und dann schaue ich tatsächlich in unseren Projektordner, damit wir im Moment nichts sehen. Lassen Sie uns mit der rechten Maustaste aktualisieren. Und mal sehen, da ist es, sicher db.json. Also lassen Sie uns darauf doppelklicken. Und es hat tatsächlich innerhalb von Notepad Plus, Plus geöffnet. Das ist ein bisschen bedauerlich. Aber man kann es auch hier sehen. Jeder vor 2013, 45, 1990 und 17 ist der Wagen und Hals, so dass gespeichert wurde. Und wenn wir das stoppen und es dann neu starten, werden
Sie sehen, dass, wenn ich die Daten geladen habe, und wie Sie sehen können, alles völlig gut funktioniert. Und das ist eigentlich so einfach, wie das auszuschalten, oder? Natürlich gibt es einen Sinn zu sagen, nun, vielleicht wollen wir es nicht so machen. Vielleicht wollen wir es mit einer Schnittstelle oder so etwas tun. Ich denke, das wäre übermäßig kompliziert. Wir haben hier schon ein recht kompliziertes Konstrukt für den gesamten Sparapparat, sozusagen. Und ich denke, das wird definitiv in Ordnung sein. Aber ja, es sind im Grunde die gleichen Speicher- und Lademethoden, die wir aufrufen. Und das speichert einfach die Daten in einer, in einer JSON-Datei. Jetzt wollte ich Ihnen die eigentliche Datei als Innerhalb des eigentlichen Projekts zeigen. Nur eine Sekunde. Ich werde im Explorer zeigen. Dies ist also ein weiterer Ordner auf meinem anderen Bildschirm. Und dann ziehe ich das einfach da rein. Lassen Sie mich sehen. Da gehst du, und da gehst du. So sieht die JSON-Datei tatsächlich aus. Die Formatierung ist also nicht die beste, aber im Moment, würde
ich persönlich sagen, Sie sich keine Sorgen um die Formatierung für jetzt. Das Wichtigste ist, dass Sie es immer noch lesen können. Wenn Sie komplexere Klassen
haben, wird es natürlich komplexer. Wissen Sie, wenn Sie Listen haben, dann wird das ein bisschen anders aussehen. Und ja, aber insgesamt ist das das. Und ja, so können Sie Daten mit JSON-Dateien laden und speichern, im Grunde, äh,
mit dem benachbarten Util, das mit Unity selbst kommt, und das wäre es. Also, das sind im Grunde die beiden Vorträge zum Speichern der, sagen
wir drei Vorträge, wie Sie Ihre Daten speichern. Ich würde auf jeden Fall sagen, dass der benachbarte Lader, während es ein wenig komplizierter ist, definitiv, würde ich sagen, dass verwenden. Es ist viel robuster, es ist viel besser. Und die Player-Prefs zu verwenden ist in Ordnung. Aber es wird nur zu Kopfschmerzen führen, weil die Spieler Prefs wirklich nicht die, nicht die reale Quelle oder Umzug Weg
sollten Sie Daten speichern, die wichtig für das Programm ist. Also speichern Sie Dateien auf jeden Fall von Jason gemacht werden oder Sie könnten sie auch auf eigene Faust
machen, machen Sie Ihre eigene Art ein bisschen klug, aber das ist im Moment viel zu fortgeschritten. Sofort. Jason ist definitiv da, wo es ist, oder? Und das wäre es für diesen Vortrag. Ich hoffe, Sie haben es nützlich gefunden und Sie werden etwas Neues lernen. Wenn etwas unklar bleibt, dann zögern Sie natürlich nicht, eine Frage zu stellen, und ich werde sicher antworten. Und ja.
89. (Unity: In Ordnung, lassen Sie uns mit dem Zwischenabschnitt Einheit hier für den Einheitskurs fortfahren. Und in dieser Vorlesung werden wir einen Blick auf eine Kachel-Sets werfen. Also Kachel-Sets sind im Grunde eine Art und Weise, in der
Sie eine zweidimensionale Landschaft erstellen können. Und das wird wirklich einfach sein. Also lassen Sie uns eigentlich nur eine neue Szene erstellen und schauen wir uns einfach an, was all das auf Lager hat. So L9 Fliesensätze. Wir brauchen keinen neuen Ordner innerhalb
eines Skript-Ordners, weil wir das eigentlich nicht brauchen. Wer auch immer wir brauchen, ist ein neuer Ordner innerhalb unseres Assets-Ordners. Und das wird die Kacheln, Kacheln Sets Ordner sein. Und dann werden wir noch eins in diesem machen. Also ein weiterer Unterordner, und das wird nur der Titelsatz genannt werden unterstrichen eins, nur damit wir einen Namen haben. Und wir werden die Kachel-Karte PNG importieren. Dies ist wieder einmal eines der Kenny Assets. Natürlich Nummer 1 als Link und dann Nummer zwei als Ressource. Lassen Sie uns die Komprimierung zu taub Filtermoduspunkt ändern. Und dann wird Pixel pro Einheit 16 sein und den Sprite-Modus auf mehrere setzen. Und dann sagen wir „Bewerben“. Und dann, was sehr wichtig ist, ist, dass wir hier in den Sprite Editor gehen wollen. Und wir wollen das schneiden, schneiden Sie es automatisch. Ich glaube, dass das in Ordnung sein sollte, aber ich denke tatsächlich, dass durch die Zellgröße besser ist. Also sollte das 16 mal 16 sein, wenn ich mich nicht irre, lass uns 16 mal 16 sehen. Und dann konnte er sehen, dass sie immer durch ein Pixel getrennt sind. Also, was wir wollen ist, wir wollen 16 mal 16 und dann sollte der Offset 11 sein. Also lass uns das schneiden und sehen, oh, nein, das ist 64 mal 64, das ist nicht richtig. Setzen Sie diese Rückgängigmachen hier zurück. Scheibe 16 mal 16, Offset 11, schneide das. Und dann ist der Offset eigentlich der falsche Weg. Also wollen wir eigentlich,
wollen wir die Polsterung hier? Das ist eine sehr seltsame Art, das zu sagen. Okay, also denke ich, dass es ein Padding für den Sprite Editor ist. Ich dachte eigentlich, dass die Polsterung diejenige von den, naja, den Rändern sein würde. Aber anscheinend ist es das nicht. Also gehen sie, um diese 16 mal 16 zu schneiden und dann 1 und 1 aufzufüllen. Und dann sollte jeder von ihnen auch sehr gut funktionieren. Jeder von ihnen ist jetzt ein separates Brune-Sprite und wir werden in der Lage sein, das als talentierte zu verwenden. Jetzt kann die Anwendung hier eine Weile dauern, weil das 485 verschiedene Sprites sind. Wie Sie sehen können, ist es eine Art Stadtbild hier mit ein paar Grün- und eine Art Bausprites als auch. Und wenn das geschehen ist, dann lassen Sie uns tatsächlich zu unserer Fliesenset-Szene hier gehen
und sehen, was wir tun können. Was wir also tun können, ist mit der rechten Maustaste auf die Hierarchie. Auf 2D-Objekten haben wir die Kachel-Karte. Wir werden ein Rechteck zu machen ist höhere Angelegenheiten auch hexagonal mit einem spitzen Oberteil und dann flache Oberseite. Es gibt auch asymmetrische und dann isometrische Z2, Z0 als y. Das würde auch funktionieren. Aber wir werden uns normale Kachelkarten in rechteckiger Weise ansehen. Wenn ich das zum Laufen bringen kann, gehen sie rechteckig. Dann wird ein Raster innerhalb Ihrer Szenenansicht angezeigt, sowie zwei grundlegende Spielobjekte, ein Gitter-GameObject mit einer Zellengröße sowie eine
Lücke, Lücke und dann eine Kachelkarte darunter. Und das sind die beiden Dinge, die im Grunde erscheinen werden, sie sind jetzt. Wie können wir das ändern? Wenn wir hier auf die offene Kachel-Palette gehen, dann werden wir tatsächlich ein neues Fenster erscheinen, das ist dieses. Und statt dort haben wir derzeit keine aktive Kachelkarte. Und es heißt, erstellen Sie eine neue Kachelkarte. Und wir werden eigentlich keinen erschaffen. Wir nehmen unsere Stadt Sprite und ziehen sie einfach hier rein. Nun, wir müssen tatsächlich
eine neue Geschichte erstellen und dann ziehen wir sie da rein, natürlich. Das wird also sein, lassen Sie uns einfach diese Kachel nennen, Fliesen Stadtfliese Set. Stadtfliesen Set Das ist in Ordnung. Sie sind rechteckig. Rastergröße wird automatisch sein und dann wird der Sortiermodus auch in Ordnung sein. Also lasst uns das schaffen. Und dies wird innerhalb einer Kachel-Sets erstellt werden und mentalen Satz unterstreichen eins. Wie Sie sehen können, ist das cool zu sehen, digitalisieren Sie es. Und jetzt können wir eine Ausbreitung hineinziehen, eine Spitze. Und dann machen wir das. Wir werden das genau speichern, in genau demselben Ordner hier. Und das wird eine Weile dauern, weil es im Grunde
jeden dieser Sprites in eine Art Kachel in diesem Fall umwandeln wird. Es wird also, wie ich schon sagte, eine Weile dauern. Je nachdem, wie schnell Ihr Computer ist, kann
es etwas länger oder etwas kürzer dauern. Und dann ist hier alles wichtig. Also, wenn wir nun eine Art von Kachel-Sets betrachten, Kachelsatz, Unterstrich einen Ordner, dann können Sie sehen, dass es eine Kachelkarte 64. Und hier oben kann man tatsächlich sehen, was Sprite das ist. Und das sind im Grunde alle Sprites jetzt als Kachelkarte, Art von einzelnen Teilen. Und Sie können diese jetzt nehmen und mit ihnen zeichnen. Also lasst uns unser Kachelkartenfenster so positionieren wie hier. Und was können wir tun? Nun, wenn wir zum Beispiel diese auswählen, dann verwenden Sie, können Sie sehen, dies ist eine Art Auswahl hier hervorgehoben. Und es sollte mit dem Pinsel malen. Und wenn ich hierher gehe, dann kannst du sehen, was das ist? Nun, ich kann das jetzt malen. Also, wenn ich jetzt die linke Maustaste gedrückt halte und ich kann das tatsächlich malen. Und ich kann einmalen, gut die Grundfliesen hier. Also das ist eigentlich ziemlich cool,
dass, das funktioniert einfach so. Und die anderen Tasten, die wichtig sind, gibt es
natürlich eine Auswahl des Rasters, also kann ich hier im Grunde etwas auswählen. Und so könnte ich es im Grunde bewegen, glaube ich auch. Also das ist, was wir, dieser eine Auswahl entfernen genau. Also kann ich im Grunde das auswählen, ändern, das Verschieben-Werkzeug und dann kann ich das bewegen. Das ist also ziemlich cool. Ich habe auch verschiedene Arten von Malmodus. Es gibt also natürlich den einzigen Pinselmalmodus. Es gibt auch die, Dies ist die Box gefüllt Modus. Damit kann ich im Grunde eine Box zeichnen. Und das wird dann einen Kasten um ihn ziehen. Mit der ausgewählten Kachel kann
ich übrigens auch mehrere Kacheln auswählen. Also könnte ich, könnte, zum Beispiel,
sagen, so dass ich ziehen kann, und dann habe ich vier Fliesen, die hier ausgewählt werden. Und dann kann ich das als Beispiel niederlegen. Und dann kann ich diese Kachel auswählen, die Auslosung
nehmen und dann so etwas tun. Das würde funktionieren. Und ich kann die Kante nehmen, zum Beispiel, so
etwas, tut mir leid, so etwas. Stellen Sie sicher, dass Sie, wenn Sie mehrere
ausgewählt haben , wieder zum eigentlichen Pinsel wechseln. Andernfalls mit mehreren ausgewählt. Und die Box, es wird ein wenig seltsam, wie Sie sehen können. Es funktioniert immer noch. Aber ja, jetzt haben wir tatsächlich einen Fehler gemacht. Oh nein, das will ich hier nicht. Was wir tun können, ist, dass wir einfach das Radiergummiwerkzeug hier nehmen und das löschen können. Nun, da wir zwei gekachelt ausgewählt haben, ist
das Radiergummi Werkzeug auch zwei dicke oder große Fliesen. Und wenn wir nur eine ausgewählt haben und die Größe wird auf eins gesetzt. Es gibt auch ein Füllwerkzeug. Nun, das könnte auch nützlich sein. Vielleicht, wenn wir so sind, will
ich eigentlich nicht, dass das grün ist. Ich möchte eigentlich, dass dies eine Art konkret ist, oder ich möchte, dass
dies eine Art von Beton ist, den Sie gehen, und dann wird es auch füllen. Das klappt also sehr gut. Das ist also schon ziemlich cool. Jetzt. Vielleicht, oh Mann, Baby, was wir wollen, ist, dass wir eine Straße wollen, oder? Also sagen wir: Okay, lass uns tatsächlich eine Straße bauen. Mal sehen, ob wir das schaffen. Das ist übrigens, eine mittlere Maustaste und rechte Maustaste können sich bewegen. Und dann können Sie mit der linken Maustaste grundsätzlich Dinge auswählen. Ich höre, wir haben hier Asphalt auf der Straße. Und so könnten wir zum Beispiel sagen, nun, nehmen
wir diesen Asphalt und lassen Sie uns eine Straße wie in der Mitte hier machen. Eigentlich stelle ich sicher, dass wir das auch auswählen. Lass uns hier in der Mitte eine Straße machen. Das ist ziemlich cool. Und dann alles, was wir auch haben könnten, diese Feststoffe, oder wir können das auch hinzufügen. Da gehst du. Und dann können wir das tun. Und dann lassen Sie uns alles hinzufügen, ja, und dann wissen wir alle, dass wir einen Mindesteinsatz haben. Wir werden natürlich auch Control Z tun,
um dies zu tun, oder wir können natürlich übermalen oder das auf allen tun. Lassen Sie uns auch einen von denen hier reinbringen. Das ist also ziemlich cool. Jetzt können wir das überqueren. Und nun, vielleicht ist das, was wir hier haben, auch ein Nein, Vielleicht ist das, dass das nicht ganz funktioniert. Also lass uns mal sehen. Was ist mit, okay? So wie Sie sehen können, manchmal ist es etwas schwieriger, dies zu tun, aber Sie können sehen, dass dieser wirklich gut für die Ecke ist, die sie sind. Und dann kannst du auch hier eine Ecke machen und dann damit fortfahren. Entlang. Da gehst du. Es gibt also eine Menge Dinge, die Sie damit machen können. Und natürlich ist dies jetzt eine Art aktives Beispiel für einen bestimmten Kachelsatz. Aber man sieht, dass
es nach ein bisschen auch schon ein bisschen Form annimmt. Und sagen wir, eigentlich, was ich wirklich will, ist, dass ich wirklich eine Art Benzol will, dieses Grüngebiet, aber das ist irgendwie nicht sehr gut, oder? Also, jetzt ist die Bank, naja, die Mencius Art sitzt im Raum. Das ist also nicht sehr nett. Genau. Lasst uns tatsächlich Z kontrollieren, um hierher zu kommen. Und der Grund dafür ist, dass wir gerade jetzt diese Kachelkarte verwenden, die genau hier ist. Und die Idee ist, dass,
nun, das ist einfach nicht genug. Wir brauchen tatsächlich mehr. Was wir also wollen, ist, dass wir das nicht wirklich bearbeiten wollen. Was wir wollen ist, dass wir eigentlich eine andere Kachel-Karte wollen, die darunter ist. Also, was wir tun können, ist, dass wir im Grunde einfach sagen können, okay, lassen Sie uns einfach diese Kachel-Karte nehmen und dann werden wir nur
eine duplizierte Tat kontrollieren und dann die andere nennen, zum Beispiel Basis. Also jetzt und schieb das nach oben. Persönlich bevorzugt das. Und dann sagen Sie negativ, tatsächlich bewegen Sie es nach unten, weil. Oh, aber stellen Sie sicher, dass es unter dem Gitter ist. Das ist sehr wichtig. Also das hier ist unten und dann haben wir vielleicht so etwas wie die Mitte. Und dann duplizieren wir das noch einmal. Und dann haben wir etwas an der Spitze, was Ordnung eins sein wird. Richtig? Und jetzt haben wir drei verschiedene Schichten. Und jetzt, wenn wir uns die aktive Kachelkarte ansehen, können
wir tatsächlich sehen, dass wir hier verschiedene auswählen können. Also zuallererst, richtig, jetzt werden die Daten über alle gleich sein. Also lasst uns tatsächlich folgendes tun. Lassen Sie uns wirklich alles löschen, was wir können. Mach es wie ein großes. Die führende, da gehst du. So wird jetzt die Basisschicht gelöscht. Gehen wir zur obersten Schicht. Die oberste Ebene wird gelöscht. Und jetzt, wenn ich das tun würde, wird
jetzt die mittlere Schicht gelöscht. Mal sehen. Jetzt ist alles weg. So kann ich die Auswahl mit diesem Jahr ändern, oben, Mitte und Basis. Oder wenn ich zurückgehe, um die zu haben, da gehst du. Also jetzt hat die Basis etwas drin und es auch hier ändern. So oben, Basis und eine Mitte. Und jetzt, weil wir die Reihenfolge in Schicht festgelegt haben, die wir bereits im Inneren von amin zahlreiche Gelegenheiten gesehen haben, vor allem innerhalb des Skripts. Tut mir leid, der Sprite-Renderer. Ja, da gehst du. Das wissen wir gut,
das befiehlt die eigentlichen Sprites. Wenn ich nun diese Bank hinzufügen möchte, wie Sie jetzt sehen können, ist es auf
der Oberseite der Basisschicht überlagert , weil wir jetzt in der mittleren Schicht sind. Wenn wir zurück zum Basis-Layer wechseln, wie Sie sehen können, würde diese Basis-Layer überschreiben. Aber in der mittleren Schicht überschreibt
es es nicht. Und wir können einfach dieses schöne Bankjahr hinzufügen, vielleicht zwei Bänke, und dann vielleicht auch einen schönen kleinen Baum hinzufügen. So können wir zum Beispiel diesen
nehmen und dann einfach einen Baum hier und H3 hier zum Beispiel hinzufügen. Und dann lassen Sie uns das einfach beenden, nur damit es etwas schöner aussieht. Damit wir es haben, bin ich eine schön geordnete Art Grünfläche mit zwei Bänken und einem Baum hier. Und dann da drauf. Wir können auch das haben und dann haben eine schöne kleine Gegend, die sie auch sind. Da gehst du. Das hier, das hier. Und dann lassen Sie es auch mit dem oberen Teil beenden. Und jetzt haben wir zwei Bereiche. Nun, wie Sie sehen können, was haben wir getan? Nun, wir haben tatsächlich eine ganze Rolle gemacht, weil wir das alles in der mittleren Schicht gemacht haben, was natürlich nicht ganz das ist, was wir wollten. All das hätte in die Basisschicht gehen sollen. Es ist also ein echter Schmerz, dass wir das nicht wirklich ändern können. Leider, was wir tun können, ist, dass wir im Grunde können, warum wir das auswählen und dann auch die Kontrolle gedrückt halten. Also Kontrolle und dann Auswahl wird es tatsächlich irgendwie machen, so dass wir es malen können, wie Sie sehen können. Dann können wir zur Basisschicht wechseln. Wir können es auf die Basisschicht malen. Und dann auf der mittleren Schicht müssten
wir es noch einmal löschen. Es ist ein wenig ja, es ist nicht sehr gut, dass das funktioniert. Wie das funktioniert, aber das ist leider, wie wir es tun werden. Es gibt keine wirkliche Möglichkeit, die Ebenen zu ändern, die sie sind. Und auch, was ich erwähnen wollte, während ich diese Layer aufrufe, ruft
Unity diese Kachelkarten auf. Absolut verwirrende Sprache wie diese ist, denke
ich, dass das keine sehr gute Sprache ist, denn aus irgendeinem Grund, wissen
Sie, das ist ein Kachelset. Das ist also ein Titelsatz und dann ist dies auch die Kachelkarte. Das heißt also Telnet, weil ich die My zitiere, mal sehen, Sprites hier, Kachelkarte. Aber ich würde dies definitiv als Schichten bezeichnen. sind also verschiedene Schichten, die Sie übereinander legen können. Kachel-Karte, denke ich, ist nicht der richtige Begriff dort. Und ja, dann machen wir das Gleiche auch hier. Also lasst uns das hier kopieren. Und das kopiert tatsächlich den Basis-Layer. Wir wollten das eigentlich kopieren. Nun, die großen Probleme, die alle wissen, was wir
jetzt getan haben, ist, dass sie auch die Bäume dort sind. Das ist also eine Sache, die ich auch erwähnen wollte. Es kann manchmal vorkommen, dass Sie ein sind, Sie haben die falsche Ebene ausgewählt und dann müssen Sie dies wiederholen. Ich würde auf jeden Fall empfehlen, sicherzustellen, dass Sie sich auf
der richtigen Ebene befinden , so dass dies eines
der wichtigsten Dinge ist , wenn Sie damit arbeiten. Denn sonst wird es einfach zu vielen Kopfschmerzen führen. Und es kann am Anfang, weißt du, ein bisschen mühsam, ein bisschen irgendwie grob sein. Oh nein, ich bin wieder auf der falschen Schicht. Es wird nur irgendwann passieren, und so wird es auch sein. Also lassen Sie uns einfach ein paar Bäume hier hinzufügen, vielleicht einen anderen Baum, die sie sind, sie gehen. Und dann haben wir unsere Karte fertig. Es ist nicht die schönste Karte im Moment, aber natürlich können wir ein paar coole Dinge damit machen. Eines der Beispiele dafür wäre, mal sehen. Also, wenn Sie tatsächlich herunterladen und Sie gehen, um eine andere Karte zu bekommen, und ich werde Ihnen schnell zeigen, dass auch. Das heißt, also ist es ein bisschen ein kleiner Blick in eine andere Karte, die ich erstellt habe. Nur eine genau dafür. Und das geht, und das ist auch etwas, das wir auch den nächsten Vortrag verwenden werden. Und das sieht in etwa so aus. Das ist also die andere Karte, die ich gemacht habe, die, weißt
du, ziemlich cool ist. Alle Dinge in Betracht gezogen, wissen Sie, wir haben ein paar Leute, auch wenn Sie Autos, ein paar Bänke. Und dann haben wir vielleicht einige, die wir nicht wirklich eine Spitze für die Gebäude in diesem Fall haben, aber nur flach. Aber wer weiß, vielleicht ist das eine Art Klangbühne. Aber ja, das ist eines der Beispiele, die ich auch gemacht habe, das zum Download zur Verfügung steht, was wir auch in der nächsten Vorlesung verwenden werden. Also, ja, das wäre es für diesen Vortrag jetzt,
äh, mit den Kachel-Sets, gibt es wirklich keine. Es ist nur Ihre Kreativität ist im Grunde, was Sie davon abhält, etwas zu tun. An den Werkzeugen gibt es wirklich nützlich, wirklich großartig, und kann für alle möglichen anderen Dinge verwendet werden. Und ja, das heißt,
ist im Grunde für diesen Vortrag für den Moment. Ich hoffe, Sie haben das nützlich gefunden und Sie werden etwas Neues lernen. Tile-Maps, ein großartiges Sue Tool Sets und Testkarten, ein großartiges Werkzeug, um im Grunde Ihre eigenen Levels zu erstellen. Erhalten Sie Fragen, bleiben
Sie, dann natürlich, fühlen Sie sich frei zu fragen und ich werde sicher sein, zu antworten. Und ja.
90. (Grundlagen der Unity Intermediate): In Ordnung, lassen Sie uns die Einheit Zwischenabschnitt hier für den Einheitskurs fortsetzen. Und in diesem Vortrag werden wir einen kurzen Blick auf Animationen werfen und wie man Animationen macht. Also zuerst, mit unserer neuen Karte, die Sie natürlich für die Ressource bekommen können. Vor allem in dieser Vorlesung. Es sollte eine Ressource für das Paket geben, in dem sich nur der neue Kachelsatz befindet. Und natürlich setzt sich
die Fliese selbst und dann die damit verbundenen Sprites. Wenn du das willst, musst du das nicht unbedingt haben. Ihre eigenen Kacheln, die auch funktionieren würden. Oder deine alte Kachelkarte, vielleicht sogar die, die wir vorher verwenden. Es ist einfach eine Art nette Show visuell, wenn wir uns jetzt unsere Animationen ansehen. Also lassen Sie uns diese Titelkarte duplizieren und machen wir 10 Animationen. Also lassen Sie uns das in L zehn Animationen umbenennen und das auch beginnen. Und dann werden wir ein neues Sprite importieren. Das steht natürlich auch zur Verfügung. Dies wird der abenteuerliche Hell sein. Das ist also da. Und vor allem muss
das ein wenig geändert werden. Wir müssen eigentlich nicht zu viel, ich denke nur Punkt und dann keine Kompression hier. Und dann natürlich mehrere, weil diese wieder mehrfach sind. Dann gehen wir in den Sprite Editor. Lassen Sie mich das hier rüber holen. Und die Größe ist 80 mal 110. Und dann lassen Sie uns das aufschneiden und wie Sie sehen können, passt perfekt dort hinein. Und dann haben wir die Größe für jeden von denen. Und was wir tun werden, ist, dass wir im Grunde
einen kurzen kleinen Spaziergang Animation sowie eine Leerlaufanimation machen werden. Die werden also nicht zu verrückt sein. Allerdings werden sie zumindest halb funktionsfähig sein, sagen wir, und dann werden wir sehen, was das mit sich bringt. Also lassen Sie uns das anwenden. Also noch einmal, wir haben den Abenteurer und all
die besonderen Multiple Sprites darunter. Und dann brauchen wir tatsächlich bestimmte Fenster. Wir brauchen die Animation hier, Animationsfenster. Und das öffnet sich auf einem anderen Bildschirm. können wir einfach hier reinlegen. Und dann brauchen wir auch Animation und das Animator-Fenster. Und ich persönlich habe das hier auch so, dass ich im Grunde den Animator und das Animationsfenster hier unten direkt dort habe, wo die Konsole ist. Und das erste, was wir tun können, ist im Grunde, naja, wir können hier ein anderes Bild auswählen. Lassen Sie uns das hier aufstellen, damit wir sehen können, welches Bild das ist. Und die Animation wird im Grunde zwischen 02 hier wechseln. Es ist nicht die beste Leerlaufanimation für diese bestimmte Sache. Was ich denke,
dass, das klappt wirklich gut und ich mag vor allem den verrückten wackeligen Blick auf diesem Gesicht. Also, das ist eigentlich ziemlich lustig. Also, was Sie tun können, ist, was wir gelernt haben, ist, wenn Sie nur ein Bild dort machen, also ein Sprite, dann erstellt es nur ein Spielobjekt. Allerdings, wenn wir auch tun, so wählen wir zwei Sprites hier. So durch, zum Beispiel, Tschüss. Wenn Sie einen von ihnen auswählen und dann die Strg-Taste drücken und dann die andere, können
wir zwei verschiedene auswählen. Und wenn ich das in die Szenenansicht ziehe, öffnet
sich hier, wie Sie sehen können, ein neues Fenster. Es sagt erstellen neue Animation, weil in diesem Fall, es tatsächlich will, dass wir eine neue Animation erstellen. Und das ist, was wir in einer Art unserer Animationsmappe tun werden. Wir nennen das den Spieler oder nennen das Adventitia, rohes Abenteuer. Abenteuer im ventralen Leerlauf. Weil dies die Leerlaufanimation ist. Und lasst uns das retten. Und jetzt ist eine ganze Menge Sachen für uns getan worden. Wenn wir also zu unserem Animationsordner gehen, können
Sie sehen, dass der Abenteuer-Unterstrich 0, ein Animations-Controller erstellt wurde sowie der Abenteurer-Leerlaufanimations-Clip. Und der Animations-Clip ist, was für
uns sehr interessant ist und was wir in der Lage sein, im Animator zu sehen, zum Beispiel, wenn wir unser Abenteuer hier wählen, ist ein, ja, Nun, eine
Art Zusammenfassung unserer Animationen, die wir haben. Und jede dieser Kisten im Grunde. Es gibt also einige verschiedene spezielle Boxen, der Eintrag, dies ist eine Art, wo er immer eintritt. Es gibt einen beliebigen Zustand, also jeder Zustand, den die eigentliche Animation und Animation annehmen kann. Und dann gibt es auch eine zusätzliche Notiz. Und die Idee ist, dass das, was wir in
diesem Animator definieren wollen , im Grunde die Übergänge zwischen verschiedenen Zuständen sind. So können Sie sich das zum Beispiel vorstellen. Wenn ich jetzt still stehe. Im Moment steht es still. Und dann spielen wir die Animation, richtig? Und dann schwankt er, ich weiß nicht, von links nach rechts und von links, rechts. Und dann von dieser Inselnation, kann ich entweder springen oder ich kann gehen. Und dann die, wir können im Grunde sagen, okay, wir haben eine Leerlaufanimation, wir haben eine Wanderanimation, und vielleicht sogar eine Sprunganimation. Und dann wollen wir verschiedene Übergänge wie diese definieren,
rechts, mit der rechten Maustaste klicken und dann einen Übergang dort machen. Jetzt werden wir das jetzt nicht tun, weil wir tatsächlich die zweite Animation in einer kleinen Weile machen werden. Aber alle diese Knoten, also jeder dieser Knoten, jede dieser Animationen hat im Grunde eine Zeitleiste, Sie sind damit verbunden. Also, wenn ich hier auf das Abenteuer-Idol klicken würde, dann sehen Sie innerhalb des Animationsfensters, wir bekommen jetzt diese Timeline. Und diese Zeitleiste ändert sich derzeit. Eine einzige Sache. Vielleicht haben Sie vielleicht mitPremiere Pro oder einem anderen
Videobearbeitungsprogramm gearbeitet Premiere Pro oder einem anderen oder vielleicht haben Sie Bilder davon gesehen. Dies ist im Grunde, wo wir Keyframes definieren können. Und die Idee ist, dass wir etwas zu
dieser Animation hinzufügen können , die es uns erlaubt, im Grunde bestimmte Dinge zu ändern. Wenn ich also wieder unsere Abenteuerromantik auswähle, dann kannst du sehen, dass ich diesen Abenteuer-Idle-Clip jetzt ausgewählt habe. Und momentan ändert sich das Sprite. So wie Sie im Moment 000 sehen können, ist
das Sprite dies. Und wenn ich das bewege, dann ändert sich das Sprite in der nächsten Sekunde dazu. Nun, wenn ich das spielen würde, dann,
wie Sie sehen können , ist die Inselnation natürlich viel zu schnell, oder? Weil es nur zwei Frames lang ist. Und das wäre nicht zu gut. So können wir mit nur einer Maus nach unten zoomen. Und wir können uns hier mit
der mittleren Maustaste umsehen und dann können wir eines dieser Keyframes machen. Also zum Beispiel dieser, der zweite. Bild hier. Und wir können es rüber ziehen, um zum Beispiel so
etwas wie, naja, sagen wir fünf Frames zu sein . Also, wenn ich diesen Clip jetzt spielen würde, wie Sie sehen können , würde er
jetzt aufnehmen und für ungefähr einen Frame bleiben. Aber das ist natürlich auch nicht ganz das, was ich will, oder? Denn jetzt
wird dieser spezielle nur für etwa einen Frame angezeigt und dann kehrt er zum anderen zurück. Das ist vielleicht nicht das, was wir wollen. Was wir wollen, ist vielleicht, dass es für eine Weile, länger so bleibt. Und nun, wie können wir das erreichen? Nun, vielleicht zum Beispiel, nehmen
wir das und dann können wir übrigens etwas
kopieren, also Control C. Und wenn ich zum Beispiel hier gehe, kann
ich Kontrolle V übernehmen und es einfügen. Und jetzt in der Theorie, sagen
wir, ich habe es hier gesagt. Also, jetzt würde es dort für eine Reihe von Frames bleiben. Das wären also noch sechs Frames, schätze ich. Und schauen wir uns das jetzt an. Jetzt würde es so aussehen. Und das ist viel mehr wie eine Inselanimation. Jetzt ist es nicht die beste Leerlaufanimation. Wie ich schon sagte, es ist ein wenig wackelig, aber es wird vorerst ausreichen, damit wir überhaupt etwas haben. Das ist also eine nette Sache. Jetzt könntest du natürlich so viel schneller oder langsamer
machen. Du könntest das etwas mehr oder weniger machen, je nachdem, was du tun möchtest, oder? Wir könnten dieses Jahr schleppen oder das etwas langsamer oder schneller machen. Es gibt natürlich noch einmal, dass ich nur die Werkzeuge zur Verfügung stelle. Was du mit ihnen machst, ist dir überlassen. Aber was wir jetzt tun können, ist auch an anderen Immobilien. Also, wenn ich es auf die anderen Eigenschaften setze, können
Sie sehen, dass es im Grunde gibt, ich denke, alle von ihnen, oder zumindest bestimmte Komponenten sind hier verfügbar für mich zu ändern. Wie Sie sehen können, im Grunde alles, was ich innerhalb des Sprite-Renderers ändern kann. Und dann könnte ich theoretisch auch Dinge in der Transformation für eine Animation
ändern. Und das ist eine wirklich coole Sache. So können Sie bestimmte Dinge als Funktion der Zeit ändern, wenn eine Animation abgespielt wird. Jetzt ist das Ändern der Transformation manchmal ein wenig nicht zu gut. Ich wollte das nur erwähnen, weil es wackelige Effekte haben kann, besonders wenn Sie die Position mit anderen Dingen ändern. Also in der Regel sollten Sie vorsichtig sein, außer wenn Sie Art visuelle Komponente
eines bestimmten Spielobjekts von der tatsächlichen Position unterscheiden würden. Also, wenn Sie eine Art haben, ich bin ein Kind und ein übergeordnetes Spielobjekt, dann könnte es einen Weg geben, wo dies funktionieren würde. Ja, und dann schauen wir uns das andere an. Also die andere durch die Wanderanimation, die ich
wollen würde , wird auch zwei verschiedene sein. Das wird neun und zehn sein, glaube ich. Also neun und 10, Das ist die Wanderanimation, die ich einfügen möchte. Und es gibt mehrere Möglichkeiten, wie wir es tun können. Entweder können wir das auch hineinziehen oder das Y würde nicht empfehlen , dass das, was ich empfehlen würde, einfach hier zu gehen und Neuen Clip erstellen zu sagen. Und dann sagen wir auf Ventura. Gehen Sie und speichern Sie das auch. Und jetzt, wenn ich dieses Abenteuer und das Abenteuer wieder auswähle, ist ein Spaziergang hier, und dann kann ich im Grunde über unsere einzelnen Sprites ziehen. Ich könnte auch am Property Sprite-Renderer sagen und dann Sprite Plus sagen. Jetzt wird sich das Sprite ändern. Dann setze ich die Neun hier ein und dann auch die 10. Das wollen wir nicht. Wir werden es tatsächlich so behalten. Also eigentlich, ich will auch nicht, dass er steht und dann ändert es sich zu Fuß. Ich möchte, dass sie mit dem Spaziergang beginnen und dann zu diesem wechseln. Und dann wieder in die Gehposition wechseln. So etwas wie das. Also lasst uns sehen, wie das aussehen würde. Nun, das ist, das ist schon ziemlich eine Wanderanimation. Ein bisschen zu schnell, also machen wir es etwas langsamer, vielleicht so etwas. Also 15 Frames. Nun, das wäre wahrscheinlich in Ordnung. Und das würde schon recht gut funktionieren. Also lasst uns das vorerst speichern. Und dann werden wir tatsächlich etwas von einem sehr alten,
sehr alten Vortrag hier bekommen . Und das wird das Bewegungsskript sein. Also gehen wir eigentlich zu Scripts, Create New Folder, Elton Animationen. Das wird die Bewegungsskripte sein, richtig? Holen wir uns das Bewegungsskript hier rüber. Und mal sehen. Es wird nur für einen Moment neu geladen und dann würden sie gehen, Lasst uns das auch öffnen. Und lassen Sie uns das schnell auch unserem Abenteurer hinzufügen. Da gehst du. Beim Bewegungsskript dort. Lassen Sie mich das hier rüber holen und dann können wir uns das ansehen. Dies erlaubt uns einfach, unseren Charakter zu bewegen, und jetzt werden wir tatsächlich eine weitere Komponente hier hinzufügen. Also ein weiteres Feld, das dann der Animator sein wird. Das ist der Animator. Jetzt zum Glück, weil dies auf dem gleichen Spielobjekt ist, können
wir einfach sagen, dass dieser Punkt Komponente Animator erhalten. Das ist also wirklich einfach. Und dann, was wir tun werden, ist, dass wir folgendes tun werden. Also, wenn wir innerhalb unserer,
ähm, im Grunde bewegen Methode sind. Und dann später in der Umleitung möchte
ich
eine Geschwindigkeitskomponente festlegen sowie die visuellen Komponenten umkehren. Also, wenn ich jetzt schreibe, wenn ich das einfach anfangen würde, was passieren wird, ist folgendes. Es wird gehen. Wenn ja, Da gehen wir. Jetzt angefangen, er wird nur
die Leerlaufanimation haben und jetzt kann ich laufen, aber die Leerlaufanimation noch Platz, was natürlich, das ist nicht ganz, was ich will. Der Grund, warum die Leerlaufanimation wiedergegeben wird. Wenn ich zum Animator gehe, wie Sie sehen können, ist der Einstiegspunkt, wo wir anfangen. Und dann haben wir einen Übergang zum Abenteuer-Idol hier. Und dann nichts in Richtung der Wanderanimation. Wir wissen nicht, wann wir gehen sollten Animation gespielt werden sollte. Deshalb machen wir hier eigentlich gar nichts. Und nun, wie können wir das beheben? Wie können wir bestimmte Dinge spielen lassen? Nun, wir können bestimmte Dinge spielen lassen, indem wir folgendes tun. Wir können Parameter definieren, und das ist auf der linken Seite hier. Anstatt Spieler auszuwählen, können
wir Parameter auswählen. Und diese Parameter sind im Grunde, na ja, sie können von verschiedenen Arten sein. Also float und integer, ein Stier oder ein Trigger. Wir werden in diesem Fall einen Schwimmer auswählen, und dieser Schwimmer wird Geschwindigkeit sein. Das ist also die Geschwindigkeit, mit der sich dieser Charakter bewegt. Und abhängig von der Geschwindigkeit werden
wir entweder
zur Wanderanimation übergehen oder wir gehen zurück. Das ist also im Grunde die Idee dort. Also lassen Sie uns mit der rechten Maustaste auf das Abenteuer-Idol hier und machen Übergang und dann bewegen Sie es in Richtung des Abenteuers, ein Spaziergang. Und wenn wir jetzt auf diesen kleinen Pfeil klicken, können
Sie sehen, dass es ein paar Dinge hier gibt und wir können entweder sogar eine Vorschau sehen. Also sollte dieser gehen und dann wechselt er zu einer Wanderanimation. Nun, das ist nicht ganz das, was wir wollen. Wir können die Einstellungen auch hier erweitern. Und das ist eine Art, das ist eine Übergangsdauer hier. Wir betrachten also im Grunde einen Übergang von einem zum anderen. Was ich persönlich denke, ist, dass wir eigentlich keine
zusätzliche Zeit wollen , und wir wollen auch keinen Übergang hier. Wir wollen eigentlich nur, dass er sich im Grunde ändert. Und mal sehen, was dieser sagt. Das hat keine zusätzliche Zeit. Ja. Wir haben noch keine Bedingung da drin. Deshalb bekommen wir hier diese Warnung. Wir werden bald genug eine bedingte setzen. Also keine Ausstiegszeit und nein, naja, keine Ausstiegszeit und keine Dauer. Und jetzt müssen wir tatsächlich eine Bedingung angeben. Wenn wir also keine zusätzliche Zeit haben, dann müssen wir einen Zustand haben. Und die Bedingung wird sein, Geschwindigkeit wird sein,
ich meine, ich denke, nur größer als 0,01. Das ist eigentlich alles, was ich will. 0,1. Machen wir 0, 0, 1, das Ego. Das ist also alles, wirklich einer. Sobald die Geschwindigkeit mehr als eins ist, dann möchte ich auch die ILO-Animation, eine Crossover zur Walk-Animation. Und dann kann ich auch sagen, wenn wir in der Wanderanimation sind, vielleicht möchte ich irgendwann wieder zur Insel-Emission zurückkehren. Also, wenn ich im Grunde aufgehört zu bewegen, und das wird im Grunde passieren, wenn ich hier und wieder gehe, gehe
ich in die, Ich schiebe die zusätzliche Zeit und keine feste Dauer, kein Übergang für die Dauer. Eigentlich, sorry, feste Ration ist korrekt, aber keine Übergangsdauer dort. Dann noch einmal, ich bekomme die Warnung ein, ich brauche eine Bedingung und das wird einfach Geschwindigkeit ist weniger als 0,01. Und das wäre es für sie. Sobald wir also die Geschwindigkeit einstellen, können
wir im Grunde steuern, in welcher Animation unser Charakter sie findet. Nun, diese Geschwindigkeit muss nicht unbedingt perfekt mit unserer Geschwindigkeit
korrelieren, die der Spieler tatsächlich hat. So werden wir nun in der Lage sein, die Geschwindigkeit auf eine bestimmte Weise einzustellen. Also, wenn wir uns das Folgende anschauen, was wir tun können, ist, wenn wir innerhalb unserer Move-Methode sind. Das könnte also überall hineingesteckt werden. Aber wenn wir es sind, machen wir einfach folgendes. Lasst uns das eigentlich einfach machen. Also innerhalb unseres Animators, am
Anfang, Animator Punkt gesetzt Float. Die Geschwindigkeit wird 0 f sein. Das ist also so einfach wie das geht. Also haben wir einfach den Namen der tatsächlichen Variablen sowie dann was, wo immer wir sie setzen. Jetzt legen wir das am Anfang fest, und dann setzen wir das auch. Zum Beispiel, wenn wir uns in irgendeiner Richtung bewegen. Die Sache daran ist, dass wir das natürlich auf die bestimmte Richtung
setzen können, die wir uns bewegen. Also könnten wir sagen, Hey, wir wollen, dass es in welcher Richtung auch immer ist, mal so schnell wie möglich. Und dann hat es eine negative Geschwindigkeit. Wir bewegen uns in die, nach links und dann das Positive, wenn Sie
sich nach rechts bewegen und so weiter und so weiter, wir werden das nicht tun. Wir werden es gerade jetzt auf sich selbst setzen, damit es positiv ist, wenn wir uns bewegen. Und dann müssen wir es natürlich auch irgendwie zurücksetzen, damit das auch funktioniert. Also, während dieser am Anfang funktioniert, funktioniert
es irgendwie nicht später in der Zeile. Was wir wahrscheinlich wollen, ist, dass wir
wahrscheinlich wollen , dass dies innerhalb der Update-Methode aufgerufen wird. Und ja, damit das passiert. Und wenn wir uns nicht bewegen, wo wir wollen, dass das hier am Anfang gesetzt wird, damit es nichts stört. Jetzt gibt es natürlich noch
einmal mehrere Möglichkeiten, mit denen wir das tun könnten. Wir könnten zum Beispiel sagen,
gut vielleicht, wenn ich mich nicht bewegen, dann setzen wir die und setzen die Geschwindigkeit auf 0. Auch wie diese Geschwindigkeit könnte auch auf 0 gesetzt werden, so etwas. Aber das wird gut. Das wird funktionieren. Und dann wird es auch private void flip visual geben, die wir bereits implementieren werden. Das ist also die Richtung hier, keine Richtung. So möchte ich es nennen. Und lassen Sie uns jetzt nichts reinlegen, denn ich
werde Ihnen zeigen, warum wir das in einem Augenblick brauchen werden. Aber in diesem, mit diesem Setup, ohne das Flipping, das Visuelle, sollte das eigentlich schon völlig gut funktionieren. Mal sehen, ob das tatsächlich der Fall ist. Manchmal kann es auch nützlich sein, weil
wir im Moment den Animator und die Animationen auch in unserem Bewegungsskript haben. Manchmal könnte es besser sein, wenn wir diese wirklich trennen, aber es ist nicht unbedingt notwendig. Also jetzt sind wir in der Inselnation. Alles funktioniert sehr gut. Und wenn ich mich bewegen und wie Sie sehen können, haben
wir sofort zur Wanderanimation übergegangen. Wir sind hier irgendwie Moonwalking. Lassen Sie mich das einfach maximieren, damit wir sehen können, was los ist. Damit wir gehen können. Und dann, wenn ich nach links gehe, dass nein, wir sind Mondwandern. Also arbeiten wir an der Art, weißt
du, hinter uns, was natürlich nicht ganz das ist, was wir wollen. Deshalb habe ich gesagt, dass wir
den x-Wert hier spiegeln können und dann den Sprite-Renderer einfach umdrehen können. Und das ist, was wir mit dieser Flip-Methode hier tun werden. Das Flip-Visual wird einfach sagen, dass dieser Punkt Komponente Sprite-Renderer erhalten. Flip x ist gleich Richtung Punkt x ist kleiner als 0. So ist das Flip X einfach ein Bool. Und y-Richtung ist, naja, entweder eins oder 0 sein. Und wenn es so ist, ja, genau weil die Bewegung nach links, dann ist das negativ. Also dann ja, es ist unter 0. Daher wird flip x wahr sein, und ansonsten wird es falsch sein. Also, jetzt hier, drehen Sie die visuelle Richtung, die Sie gehen. Natürlich, um ehrlich zu sein, das Beste, was hier zu tun ist natürlich auch, diesen privaten Sprite-Renderer zu tun. Sprite-Renderer nach oben. Richten Sie das hier ein, weil
wir, lass es uns richtig machen, wie es gemacht werden soll. Sonst, warum überhaupt die Mühe damit? Da gehst du. Sprite Renderer dot flip x Und jetzt ist alles in Ordnung. Also mach nicht die Get-Komponente, die hier genannt wird. Wie ich schon mehrfach gesagt habe. Und jetzt sollte es das Bild umdrehen, wenn wir uns nach links bewegen. Und jetzt sollten wir eigentlich eine ziemlich gut praktikable Animation haben. So
ist die Beseitigung, wie ich schon sagte, nicht die beste, aber wenn wir nach rechts gehen, funktioniert das. Und wenn wir nach links gehen, funktioniert das auch. Und dann dreht es auch das Bild um. Und das Tolle daran ist, dass es auch dort bleibt. Das ist also eine Art und Weise, wie Sie das tun können. Wenn ich nun nach oben oder unten
gehe, dreht sich das eigentliche Bild wieder nach rechts. Aber das ist eine sehr kleine Sache, die eigentlich sehr leicht fixierbar sein sollte, oder? Und ja, das wäre es eigentlich für die Idee der Animationen. Also gibt es natürlich noch viel mehr in Animationen zu tun, oder? Wie üblich, sind dies sehr flüchtige Blicke viele Systeme, weil er so viele Systeme zu bieten hat. Es ist wirklich schwer, weil, ich meine, jedes der Systeme wahrscheinlich sein eigener Kurs sein könnte. Ich meine, die meisten von ihnen, ich denke nur noch einmal an das Partikelsystem zurück. Das ist also eine Art erster Blick auf die Animationen. Es gibt unglaubliche Dinge, die damit gemacht werden können und das Werkzeug ist unglaublich mächtig, wie Sie gesehen haben. Es gibt so viele Dinge, die Sie mit der Animation hier ändern können, sowie der Animator bietet Ihnen so viele Dinge zu tun. Und das Beste, wie ich schon sagte, dass ich dich noch einmal verlassen kann,
ist, einfach alles auszuprobieren, woran du denkst. Also jeder, lassen Sie Ihre Kreativität völlig
frei laufen und probieren Sie einfach ein paar Dinge aus und sehen Sie, ob Sie etwas zur Arbeit bringen können. Und ja, spielen Sie einfach damit herum. Das ist immer eine tolle Idee. Und das wäre es eigentlich für die Animation an dieser Stelle. Wie immer hoffe ich, dass Sie das nützlich gefunden haben und Sie etwas Neues lernen. Ich würde eine Rezension von Ihnen sehr schätzen. Und wenn sie irgendwelche Fragen bleiben, natürlich, fühlen Sie sich frei, zu fragen und ich werde sicher sein, zu antworten. Und ja.
91. (Unity Fortgeschrittene) Scriptable Objekte: In Ordnung, lassen Sie uns mit dem Zwischenabschnitt Einheit hier für den Einheitskurs fortfahren. Und in diesem Vortrag werden wir einen Blick auf skriptfähige Objekte werfen. Skriptfähige Objekte sind ein bestimmter Typ von Datencontainern. Es gibt also eine Möglichkeit, Daten zu speichern, die grundsätzlich von einer bestimmten Klasse unabhängig sind. Und was bedeutet das? Nun, wir werden uns das ansehen. Und dafür schaffen wir eine neue Szene. Natürlich werden dies L 11 skriptfähige Objekte sein. Da gehst du. Also lass uns die Szene aufmachen. Und dann werden wir auch einen neuen Skript-Ordner erstellen. Dies wird L 11 skriptfähige Objekte sein. Jetzt brauchen wir zwei Skripte für dieses eine, das wird das C-scharfe Skript sein, Spielkarte, Spielkarte. Und dann noch ein C-Sharp-Skript. Lassen Sie uns von all den schließen. Und dann machen wir noch einen. Und dies wird das Spiel Karte Skript fähig Objekt sein. Jetzt können Sie auch diese Click-Art nennen. Also denke ich, es spielen Akkorde, skriptfähige Objekte, Objekte sind tatsächlich falsch. Lassen Sie uns das tatsächlich noch einmal löschen und diese skriptfähigen Objekte machen. Weil das ein besserer Name ist. Skriptfähige Objekte wären ein wenig seltsam, sie im Plural genannt zu haben. Also Karte spielen, Karte spielen, Skript, in der Lage, auswerfen. Da gehst du. Und das wäre in Ordnung. Also lasst uns jeden von ihnen öffnen. Also die Spielkarte und die skriptfähigen Objekte. Und dann können wir denken oder an uns selbst, na ja, was könnte eine Spielkarte halb? Also in unserem Beispiel, was wir wollen, ist, dass wir eine Art Kartennamen wollen und vielleicht, Sie könnten sich vielleicht HB und Menge an Wert vorstellen. Also etwas, das einer Art Spielkarte ähnelt, mag
ich nicht Magic The Gathering oder Hearthstone oder so etwas. Und das erste, was wir tun werden, ist, dass wir,
anstatt vom motorischen Verhalten zu erben, werden
wir hier von skriptfähigen Objekten erben. Und das wird uns im Grunde erlauben, etwas wirklich Schönes und Cooles zu kreieren. Und das nächste, was wir hier wollen, ist über der öffentlichen Klasse, wir wollen eigentlich die Klammern hier und innen dort wollen wir Asset Menü erstellen, Dateiname gleich Spielkarten. Dies ist also der, im Grunde der Name des Dateinamens , den wir erstellen werden und dann der Menüname wird Palais Karte sein. Wir werden uns ansehen, was das in einer Weile tut. Lasst uns zuerst darüber nachdenken. Also die Daten, die wir gerichtliche skriptfähige Objekte anzeigen möchten, sind zum Beispiel ein Name, also Kartenname. Wir wollen, dass es eine, eine ganze Zahl, zum Beispiel, HP und eine Karte Art und Weise. Also lassen Sie uns MP tun, eigentlich MPI genannt und dann vielleicht auch das Sprite ändern. Dies wäre also ein Karten-Sprite, das
auch in dieser Art von skriptfähigen Objekten gespeichert werden könnte . Also, das ist alles gut und gut, aber was gibt uns das? Was macht das jetzt für uns? Nun, jetzt tut es das nicht. Eine ganze Menge für uns, aber was wir jetzt tun können, und das wird wie eine wirklich coole Sache sein. Wir können mit der rechten Maustaste auf unseren Ordner klicken. Und dann können wir zum Menü Erstellen gehen. Und ganz oben wirst du sehen, oh, was ist das? Spielkarte ist eine neue Sache, die wir jetzt hinzufügen können. Und dies wird ein skriptfähiges Objekt hinzufügen. Wie Sie sehen können, ist dies ein Spiel namens skriptfähige Objekte. Und wir können das jetzt ändern, was wir wollen. So können wir zum Beispiel sagen, naja, Ass, Herz Ass ist der Name der Karte. Zum Beispiel könnte man sagen, gut, das hat 10 HB und 25 Weise. Und dann können wir auch eine Karte Sprite hier hinzufügen. So können wir zum Beispiel zu unseren Gerichten gehen und dann einfach das Gericht 0 hinzufügen, denn das ist das Herz Ass. Und doch haben wir jetzt tatsächlich eine neue Karte. Also nennen wir dieses Herz-Ass auch. Dies wäre also eines der möglichen Datenobjekte, die das eigentliche Objekt aufnehmen kann. Lassen Sie uns also auch einen netten anstelle
eines Objekts bauen , mit dem wir das grundsätzlich visualisieren können. Also nehmen wir einfach den Akkord 0 hier und wir werden das die Spielkarte nennen. Und dann fügen wir ihm eine Leinwand hinzu. Also sind wir eigentlich, lassen Sie uns einfach den Text Mesh Pro hinzufügen. Und diese Leinwand wird dann diesmal tatsächlich im Weltraum sein. Ich weiß, dass das absolut verrückt ist, natürlich, immer noch mit der Hauptkamera. Und wir werden dann auch zwei
davon haben und es ein bisschen sehr viel kleiner machen. Also machen wir es für jetzt eine 100 mal 100. Gleiches mit dem Text, der etwas kleiner sein wird. Lassen Sie uns den Text hier vorerst etwas kleiner machen. Und dann reduzieren wir die Größe. Und dann können wir das herausfinden. Also lassen Sie uns das auch einfach ein wenig nach unten skalieren. Machen wir das 0.5.5. Und wir fangen an, wo wir es haben wollen, 0.5.05.05. Jetzt gehen wir hin. Also, jetzt ist der Canvas 000 in der Größe, die wir wollen. Dann können wir den Text hier aufstellen. Und dann können wir es wieder größer machen, wenigstens ein bisschen. Da gehst du. Das wäre also in Ordnung. Ich denke, wenn wir es Auto-Größe machen lassen, hat
das eigentlich nicht ganz funktioniert, wie ich es wollte, um Autogröße zu texten. Was ist die Mindestgröße dort? Das ist wahrscheinlich der Grund, warum es nicht funktioniert hat. Da gehst du. Es ist 18, natürlich, machen Sie diese 10. Dann wird es da sein. Das ist also der Name der Karte, den wir wollen. Wir wollen diese im Grunde Art von an den Seiten
der Karte so und dann wird der Name der Karte sein. Das ist in Ordnung. Eigentlich könnte das noch etwas kleiner sein. Das könnte also sogar sein, sagen wir mal eine Acht. Dann auch Zentroid. Also, das ist irgendwie nett. Und dann können wir das im Grunde kopieren, zum Beispiel hier unten, nur damit wir es haben. Wir können die HP und die Art des Wertes hier und dann hier etwas machen. Und dann natürlich, um sicherzustellen, dass wir tatsächlich umbenennen diese, so dass diese Karte Name Text, Lassen Sie uns es so nennen. Ja, das ist der Akkordtext und das sind beispielsweise die Karten-AMP-Texte. Und so wäre das, lasst uns einfach eine,
du weißt schon, etwas wie zehn hier eintragen. Und eine Zehn hier. Haben Sie einfach etwas da drin. Ja, das wäre es. Also natürlich, wenn wir im Spiel sind, würden
die Gizmos ausgeschaltet werden. Das ist also, was wir für diese Karte sehen würden. Das ist also ziemlich cool. Und jetzt im Grunde, was wir tun werden, ist, dass wir zuerst an die eigentlichen Spielakkord-Skripte gebunden werden. Also unser Skript, dass wir nicht die skriptfähigen Objekte gemacht haben, sondern das moralische Verhalten, das wir noch nicht wirklich geändert haben und wird sein, was es ist. Grundsätzlich können wir, wir werden in der Lage sein, Daten zu setzen. Sie sind so eine andere skriptfähige Objekte, eines der, die wir bereits erstellt haben, also lasst uns einfach, zum Teufel, eine andere Kollegenkarte hier
erstellen. Und das wird für den König der Herzen sein. Und der König der Herzen. Das wird wie eine Art hübscher, natürlich, vor allem, König der Herzen, der Name der Karte und dann wird das ungefähr 25 sein, ungefähr 150. Und der König der Herzen ist das 12. Jahr, also ist das ziemlich gut. Also gehen wir zurück zum Herzkönig der 12.. Ziehen wir das hier rüber. Und jetzt haben wir zwei Beispiele. Also das Herz Ass und der König der Herzen. Und jetzt müssen wir natürlich noch
die Funktionalität für das See-Herz selbst hinzufügen . Und das wird in etwa so aussehen. Das erste, was wir haben werden, ist eine private Spielkarte, skriptfähige Objekte, spielen Akkord-Skript-Objekt tut die Gerichtsdaten, natürlich, richtig, also sind dies die Daten des spezifischen Akkord, der angezeigt wird. Fügen wir einfach ein serialisiertes Feld hinzu, so dass wir es im Grunde mit, wissen
Sie, im Konstruktor setzen können . Und dann werden wir auch mit t haben, mit tmp Zeile. Wir werden eine private TMP-,
TXT-, TMP-Texte haben. Da gehst du. Es wird den Kartenname Text geben. Und dann lassen Sie uns das kopieren. Wir haben auch eine, ein HP Text zu HP Text. Und dann lasst uns auch einen leeren Text machen. Lassen Sie uns diese auch serialisieren, nur obwohl wir sehen können, was sie im Grunde vorhaben. Diese können nun natürlich auch über die Startmethode eingestellt werden. Aber wir werden das auch innerhalb des Konstruktors tun. Und dann, was wir sagen können, ist, dass im Grunde private Leere
gesetzt, setzen Karten im Grunde Karten Daten. Das ist eine Methode, die wir nennen werden. Und dann innerhalb von dort werden wir sagen, get component sprite renderer. Und wir sind dafür, dass wir das nur einmal in der Shop-Methode tun werden. Wir werden eigentlich nicht in der Lage sein müssen, das zu fangen, also wird das gut. Und ich werde sagen, Schnurname Text. Der Text ist, Text ist tatsächlich gleich den Kartendaten, lehrte die Punktkoordinate. Und dann lassen Sie uns das einfach über die HP Texte hier kopieren. Einfach gleich Kartendaten dot-dot-dot Gericht HP und MP Text ist gleich Karte mp. Jetzt ist dies natürlich toString, weil dies hier ganzzahlige Werte
sind und sie auf string gesetzt werden müssen. Und dann können wir im Grunde OnStart die festgelegte Karte auf Kartendaten aufrufen. Und wir könnten, zum Beispiel, auch in der Theorie ein do,
tun eine Update-Methode und haben einen Eingabepunkt. Keydown, keycode.edu für Update, zum Beispiel. Und dann nenne diese Methode auch sie sind. Und dann im Grunde aktualisieren, was auf die Daten, die wir dort gespeichert haben. Das sollte also eigentlich schon sehr gut funktionieren. Also mal sehen. Zunächst einmal müssen
wir natürlich die Texte hier setzen, also benennen Text, HP und MP Text. Und dann geben Sie ihm auch eines unserer skriptfähigen Objekte. Setzen wir zuerst den König der Herzen ein. Dann sollte sich das ändern. Also lasst uns einfach die Szene starten oder das Spiel weich machen. Wie Sie sehen können, der König der Herzen, der König der Herzen, hell zeigt sich mit 25 HB und eine 150 Art und Weise. Wenn wir nun das Herz-Ass ausschalten und dich unterdrückt haben, dann wird es auf unsere neue Karte aktualisiert. Natürlich könnten wir theoretisch etwas wie ein tun, wenn sich die tatsächlichen Daten ändern, dann können wir die Visuals auch aktualisieren. Aber das ist auch nicht ganz notwendig. Und ja, und jetzt können wir hier im Grunde neue Spielkarten erstellen. So können wir zum Beispiel die Königin der Clubs machen, wenn ich die Königin der Clubs finden kann. Das wird also interessant. Also glaube ich, dass das Clubs waren. So Königin der Clubs für P53, glaube ich. So. Königin der Clubs, wo ist es dort? Es ist 53. Fügen wir das da als Sprite hinzu. Und das ist die Königin der Clubs. Und das hätte vielleicht 65 HB und 140 MP. Also, das ist wie eine wirklich starke Karte. Und das Tolle ist dann, jetzt kann ich das hier einfach ausschalten. Und sobald ich starte, werden die Daten geladen. In diesem Fall ist es ein bisschen zu groß, aber das ist okay. Das ist kein Problem. Das ist etwas, das wir sehr leicht beheben können. So sind sie, eine Auto-Größe wäre wahrscheinlich besser. Also können wir es im Grunde mit einer automatischen Größe überschreiben und sagen, naja, machen wir ein Minimum von sechs und maximal 15, so etwas. Und sobald wir das tun, auch dann, wenn der eigentliche Name zu groß ist, wird
es immer noch sehr gut funktionieren. Das ist also wirklich cool. Das ist also wie eine der Dinge, die Sie mit skriptfähigen Objekten tun können. Und in der Zukunft werden
wir tatsächlich eine gute Anwendung für
skriptfähige Objekte sehen , wo wir tatsächlich mehrere Arten von Feinden damit haben. So skriptfähige Objekte wirklich schön zu speichern wie riesige Datenmengen in sozusagen. Und doch sind sie jetzt, wir können im Grunde mehrere dieser Objekte hier haben, verschiedene Arten von Daten
speichern. Und damit sind sie grundsätzlich unabhängig von jeder Klasse. Und ja, das wäre für die Vorlesung mit skriptfähigen Objekten. Wie ich schon sagte, eine richtige Anwendung, die wir sehen werden, wenn wir unser nächstes Spiel machen. Aber das wird es für diesen Vortrag sein. Ich hoffe noch einmal, dass Sie es nützlich fanden und Sie etwas Neues lernen. Wenn es irgendwelche Fragen, wie immer, zögern Sie nicht zu fragen, und ich werde sein sollte antworten. Und ja.