Willkommen zurück, Meine Lieblingsspielentwickler.
In diesem Video werden wir unser erstes Skript erstellen
und es unserem Doom Player hinzufügen.
Nicht nur das, wir werden viele Dinge lernen, wir werden lernen,
was dieses gruselige Wort bedeutet.
Wir werden etwas über Variablen lernen.
Wir werden etwas über Inputs lernen.
Wir werden etwas über Vektor 2 lernen.
Wir werden lernen, wie Start und Update getrennt funktionieren.
also ein etwas längeres Video,
Dies ist also ein etwas längeres Video, wenn Sie möchten,
aber wenn Sie ein Anfänger sind, ist es sehr wichtig, sehr wichtig,
alles zu verstehen.
Verschwenden wir also keine Zeit mehr und fangen wir an.
Oh, okay, also Zeit für ein bisschen Scripting.
Das erste, was wir tun werden, ist, dass wir ein Skript erstellen
und es dem Doom Player zuweisen.
Jetzt gibt es viele Möglichkeiten, Skripte zu erstellen, und es gibt
viele Möglichkeiten, bestimmten Objekten Skripte zuzuweisen.
Sie sind alle gleich.
Beginnen wir mit dem grundlegendsten,
und das ist einfach auf das Spielobjekt zu klicken.
Sie können genau hier sehen, dass wir die Transformation haben.
Es ist eine der Komponenten, die wir haben.
Wir können hier eine weitere Komponente hinzufügen, indem wir darauf klicken.
Jetzt können Sie sehen, dass wir viele Komponenten haben, die wir hinzufügen können,
von Audio über Affekt bis hin
zu Physik und so weiter.
Aber wir haben auch diese Möglichkeit, Skripte hinzuzufügen.
Wir können darauf klicken. Wir können es durchschauen und das Skript hinzufügen, das wir wollen.
Oder noch einfacher als das,
wir können einfach den Namen des Skripts eingeben, das wir hinzufügen möchten.
Und das Skript, das wir aufrufen oder erstellen möchten, ist der Player-Controller.
Also erstellen wir genau hier einen Layer-Controller und stellen
sicher, dass Sie den Namen als einen einzigen Satz ohne Leerzeichen erstellen.
Sie können genau hier sehen, dass wir die Option für ein neues Skript haben.
Lasst uns drauf klicken.
Sie können den Namen als Spieler-Controller sehen.
Und jetzt können wir das Skript erstellen,
aber stellen Sie sicher, dass Schuh das richtige Wort oder den richtigen Namen für das Skript herausfindet
, da es der Name der Klasse in diesem Skript sein wird.
Dies wird sehr wichtig sein, wenn Sie später Skripte erstellen.
Also erstellen wir eine Anzeige.
Warte nur ein bisschen.
Und jetzt sollten wir sehen, dass wir das Skript bereit haben.
Wenn wir genau hier darauf klicken,
sehen wir im Inspector, wie dieses Skript aussehen wird.
Und jetzt doppelklicken wir.
Und Sie können sehen, dass sich Visual Studio öffnet.
Jetzt.
Eines der Dinge, die mich viele Leute oder viele Schüler von mir immer wieder fragen.
Wenn Ihr Skript nicht mit Visual Studio geöffnet wird oder wenn Sie beispielsweise
etwas hier eingeben und Sie die Empfehlungen von Visual Studio nicht erhalten,
können Sie auf das gehen, gehen Sie zu Einstellungen,
gehen Sie zu den externen Tools,
und stellen Sie im externen Skript-Editor sicher,
dass Sie über Visual Studio Community verfügen.
Sie können unsere IDEs wie Visual Studio-Code wählen.
Aber ich persönlich mag oder verwende lieber die Visual Studio Community 2019.
Es ist viel besser und reibungsloser als das Studio.
Manchmal hat Studio einfach seine Macken, wo es nicht auftaucht,
öffnet sich nicht richtig.
Deshalb verwende ich lieber Visual Studio Community.
Das ist kostenlos.
Es funktioniert.
Lass uns weitermachen.
Jetzt.
Wir haben unser Skript genau hier geöffnet.
Wir haben die Bibliotheken, die wir benutzen können.
Wir haben den Klassennamen, den Spieler-Controller.
Es sollte immer den gleichen Namen haben wie das Skript, das wir hier erstellt haben.
So können Sie den Player-Controller unter keinen Umständen sehen, ändern Sie
den Namen des Skripts hier, ohne den Klassennamen zu ändern?
Versuch nicht mal das zu tun.
Es wird viele Probleme verursachen.
Was haben wir hier? Es ist ein Publikum,
wir werden sehen, was das bedeutet.
Es ist eine Klasse, es ist Mono-Verhalten.
Monte-Verhalten gibt uns die Möglichkeit, Dinge wie Start und Update zu verwenden.
Was ist Start? Start ist eine Methode.
Wir werden später sehen, welche Methoden es gibt.
Aber im Moment wird alles, was Sie wissen müssen, dass jeder Code, den wir in den Stern schreiben
, ausgeführt wird, sobald wir unser Spiel starten
Wenn dieses Objekt eingeschaltet ist
, werden wir natürlich später sehen, was das auch bedeutet.
Wie Sie sehen können, wird ein Update
einmal pro Frame aufgerufen.
Wenn wir zum Beispiel Dinge haben,
die wir jedes einzelne Frame-Update nennen möchten, perfekt
dafür sind, und wir werden all dies sehen, wenn wir diesen Kurs durchlaufen.
Du wirst alles verstehen, mach dir darüber keine Sorgen.
Das erste, was wir tun müssen, ist, dass wir einen Weg brauchen, unseren Spieler zu bewegen.
Wir werden dies tun, indem wir Eingaben von den Pfeiltasten oder den WASD-Tasten nehmen.
Aber bevor wir das tun,
müssen wir etwas berücksichtigen, und das
ist die Bewegungsgeschwindigkeit unseres Spielers.
Und dafür brauchen wir eine Variable.
Was ist eine Variable, wenn es um C-Sharp geht? Lass es mich erklären.
Variablen sind wie Boxen.
Also haben wir eine Schachtel,
wir geben ihr den Namen lebt,
und wir legen eine Nummer drei in diese Kiste.
Jetzt haben wir eine Variable, um Leben zu erhalten, die drei darin hat.
So erstellen wir den Code für diese Box oder wertvoll.
Wir beginnen damit, die Barrierefreiheit zu geben.
Wo kann man auf diese Variable zugreifen?
Kann entweder öffentlich oder privat sein.
Wenn es privat ist, können wir nur innerhalb der von uns erstellten Klasse darauf zugreifen
, nicht von außen.
Wenn es öffentlich ist, können wir jedes andere Skript verlassen, das wir wollen.
Wir müssen den Typ der Variablen zuweisen.
Wir haben also mehrere Typen,
wir haben Ganzzahlen, Strings und so weiter.
Wir werden nur ein bisschen sehen, welche anderen Typen wir haben.
Wir haben den Namen der Variablen.
Offensichtlich sollte jede Variable einen Namen haben.
Wie nennen wir es sonst?
Und wir haben die Daten, die sich innerhalb dieser Variablen befinden.
So erstellen wir eine Variable in C Sharp.
Und das ist die Darstellung, wenn du willst,
Es ist genau wie eine Kiste, in die wir Dinge legen und dann machen wir weiter.
Wir haben verschiedene Arten von Variablen.
Und der erste Typ ist eine Geschwindigkeit.
Eine Ganzzahl ist also eine normale Zahl, sagen wir 123456.
Ein Float ist, sagen wir 4.8.
Warum haben wir einen Float?
Denn manchmal beträgt die Geschwindigkeit von etwas oder die Geschwindigkeit eines Autos nicht nur fünf oder sechs.
Es kann 6,32 sein,
es kann 6,9 sein, es kann 6.9456 sein.
Also brauchen wir einen Float,
und so erstellen wir einen Float.
Wir fügen die Daten immer hinzu.
Also der 4.8 mit einem F am Ende.
Dann haben wir einen booleschen Wert.
Der Boolesche Wert ist normalerweise entweder wahr oder falsch.
Nehmen wir zum Beispiel an, wir möchten feststellen, ob ein Spieler tot ist oder nicht.
Da er also tot ist,
dann ist die Variable wahr.
Wenn er nicht tot ist,
ist die Variable das S falsch.
Endlich haben wir eine Zeichenfolge.
Was ist zum Beispiel eine Zeichenfolge?
Wir haben mehrere Charaktere,
nacheinander.
Ich sehe h, e , l.
Diese Zeichenfolge ist Michael.
Also nennen wir eine Variable vom Typ string mit dem Namen mein Name,
und sie repräsentiert Michael.
Stellen Sie sicher, wenn Sie eine String-Variable erstellen, die sich zwischen diesen beiden Anführungszeichen befindet.
Okay, jetzt, da all diese Variablen fertig sind,
wir weiter und erstellen unsere eigene Variable in den Skripten genau hier.
Also das erste, was wir tun werden,
da wir etwas erstellen werden, das als serialisiertes Feld bezeichnet wird.
Hab jetzt keine Angst vor diesem langen Namen.
Es wird eine ganze Zahl sein,
und es wird Bewegungsgeschwindigkeit genannt.
Dies wird bestimmt, wie schnell sich unser Spieler bewegt, während wir Ihr Verständnis implementiert haben
und warum wir etwas verwenden, das als serialisiertes Feld bezeichnet wird.
Du hast mir gerade gesagt, Michael,
dass es entweder öffentlich oder privat ist.
Was trifft sich dieses serialisierte Feld?
Nun, mach dir darüber keine Sorgen.
Später.
Ich werde auch erklären, warum wir etwas verwenden, das als serialisiertes Feld bezeichnet wird.
Aber im Moment verstehen Sie, dass es etwas ist, das wir im Inspektor sehen können.
Wenn ich das also öffentlich mache,
speichere das auf und geh zurück in unser Skript.
Sie werden sehen, dass sich das im Inspektor ändert.
Wir haben die Öffentlichkeit und die Bewegung.
Und wenn wir zum Untergangsspieler gehen,
können Sie genau hier sehen, dass wir die Bewegungsgeschwindigkeit haben und sie ändern können.
Aber wenn ich es privat mache, damit andere Skripte nicht darauf zugreifen,
werden Sie genau hier feststellen, dass wir es nicht mehr ändern können.
Aber was ist, wenn wir es vom Inspector aus ändern wollen,
aber gleichzeitig nicht möchten,
dass andere Skripte darauf zugreifen.
Nun, in diesem Fall
erstellen wir ein serialisiertes Feld.
Das sparen wir.
Wir gehen zurück und machen Inspektor.
Und Sie können jetzt sehen,
wir es nicht ändern können,
aber andere Skripte können nicht darauf zugreifen.
Wir werden uns das später ansehen, wenn wir Fortschritte machen, wenn wir andere Skripte haben.
Großartig, also haben wir jetzt die Variable der Bewegungsgeschwindigkeit.
Das nächste, was wir bekommen wollen, ist D,
Bewegung, Richtung oder der Input, den wir erhalten.
Wie bewegen wir unseren Spieler?
Nun, wir werden zwei Eingaben brauchen.
Eine, die den Spieler nach links und rechts oder in horizontaler Richtung bewegt
,
und einer, der den Spieler nach oben und unten bewegt,
was die vertikale Richtung ist.
Die Art und Weise, wie wir das tun, ist die Verwendung des Eingabesystems und wir werden
unsere Eingaben mit etwas erhalten, das als Eingabepunkt bezeichnet wird, erhalten Sie Zugriff Raw.
Jetzt könntest du verwirrt sein. Was ist das?
Wie kriegen wir das?
Nun, wann immer du vielleicht etwas gegenüberstehst.
Vielleicht eine neue Methode oder
etwas Seltsames, das wir in Einheit verwenden und du bist ein bisschen verwirrt.
Sie haben einen sehr hilfsbereiten Freund, nämlich Google.
Und wenn Sie es dann in Google nachschlagen,
können Sie sehen, dass wir eine sogenannte Unity-Dokumentation haben,
die so ein erstaunlicher Ort ist und eine tägliche Informationsquelle für Sie sein sollte.
Also wollen wir Input verwenden.
Wir wollen die Achsen bekommen,
die horizontal und vertikal sind.
Sie können direkt hier sehen,
wenn wir danach und die Dokumentationen suchen,
haben wir alle Informationen, die wir benötigen.
Zunächst können wir sehen, wie die Deklaration funktioniert.
Wir können die Beschreibung sehen, sodass sie den Wert des virtuellen Zugriffs zurückgibt
, der durch den Achsennamen identifiziert wurde.
Es erklärt Ihnen auch, wie Sie diese verschiedenen Methoden anwenden können.
Und es gibt Ihnen auch hier ein Beispiel, wie Sie es benutzen können.
Und siehe da,
sie benutzen es und das Update,
wir können sogar weitermachen und es in unserem eigenen König verwenden.
Aber im Moment werden wir nur den Eingabepunkt nachschlagen, die
Zugriffszeile erhalten, horizontal.
Sehr nett. Aber woher haben sie den horizontalen Namen bekommen?
Schauen wir es uns an.
Wenn wir zurückgehen und unser Spiel.
Wenn wir zur Datei gehen oder mir die Projekteinstellungen bearbeiten sehen lassen.
Wenn wir durch den Eingabemanager schauen,
klicken wir auf die Achse,
wir können sehen, dass wir die horizontale, vertikale Firewall zum Springen haben
,
MouseX Feuersprung usw.
Dies sind alle Eingaben, die wir verwenden können.
Und wenn wir auf die Horizontale klicken,
sehen Sie genau hier, dass wir den Namen horizontal haben,
weshalb er genau hier verwendet wird.
Während Sie hier sehen können, dass wir horizontal verwenden.
Und Sie haben auch die Vertikale und Sie können sehen, dass der negative Knopf links ist,
der positive Knopf ist richtig.
Und Sie haben auch einen negativen Knopf, was eine Alternative bedeutet,
nämlich das A und das D. Sie haben auch die Schwerkraft und so weiter,
aber von Details da drin.
Und Sie haben auch die Achse,
die x-Achse, was die Horizontale bedeutet.
Lassen Sie uns also in unseren Code weitermachen und dies umsetzen.
Also werden wir die Kälte gleich hier öffnen.
Sie haben es als Update benutzt.
Lassen Sie uns fortfahren und aktualisieren, da wir jedes Mal darauf zugreifen möchten
.
Also werden wir hier einen Eingabepunkt schreiben, Zugriff falsch bekommen.
Und wir werden die beiden Klammern hier öffnen.
Aber jetzt wollen wir horizontal schreiben.
Sagen wir, wir schreiben Eile Xanthan.
So kannst du sehen, dass ich es irgendwie vermasselt habe.
Es ist nicht das richtige Wort.
Wenn es nicht genau das gleiche Wort ist wie das hier in den Projekteinstellungen verwendete.
Das wird nicht funktionieren.
Was heißt das?
Immer wenn wir die String-Referenzen verwenden,
haben wir bereits gelernt, was Strings sind.
Wir müssen sicherstellen, dass wir in Unity einsteigen.
Doppelklicken Sie hier hinein, um es auszuwählen,
steuern Sie C, um es zu kopieren,
gehen Sie zurück und fügen Sie ein.
Dies war sichergestellt, dass wir keinen Fehler machen würden, wenn
wir eine Zeichenfolgenreferenz erstellen oder verwenden.
Dies ist sehr wichtig, denn wenn es um Fehler geht,
wird dies vom Visual Studio nicht erkannt.
Deshalb ist es unerlässlich, wenn Sie immer einen String-Verweis verwenden, um
es immer zu kopieren und einzufügen.
Dies ist eine Regel, dass Sie Ihre gesamte Entwicklung Ihres Reisespiels nutzen werden.
Jetzt, da wir die Achse horizontal rollen lassen.
Wir können auch die Vertikale hinzufügen,
aber es reicht nicht aus.
Wir brauchen eine Möglichkeit, das zu speichern, auf das wir klicken.
So wie wir das tun, ist, dass wir hier eine weitere Variable erstellen.
Dieses Mal wird es privat sein.
Es wird vom Typ Vektor 2 sein und es wird die Bewegung sein.
Und was ist ein Vektor zwei und warum verwenden wir ihn, um den Bewegungseintrag zu erhalten.
Nun, denn wenn wir hier zurückblicken und darauf warten, dass es kompiliert wird,
können Sie sehen, dass die Position ein x, y und z ist.
Nun, weil wir nicht in der VC-Dimension und dieser Dimension arbeiten,
wie auch immer Sie es nennen möchten,
wir arbeiten nur im x und y.
Wir möchten einen Vektor haben, der sowohl das x als auch das y aufnimmt.
Was wir jetzt in unserem Code tun können,
können wir hierher kommen.
Wir können Bewegungseingaben schreiben.
Wir können den Punkt x hinzufügen und er wird gleich dem Eingabepunkt sein.
Erhalten Sie den Zugriff falsch.
Und nur um sicherzustellen, dass wir alles sehen können,
schreiben wir das Debug-Punktprotokoll.
Und hier drin werden wir nur die Bewegung ausdrucken,
diesen Fuß Punkt x.
Wir werden das speichern.
Lassen Sie uns auch das Debug-Punktprotokoll und die gesamte Bewegungseingabe ausdrucken.
Also schreibe ich hier rein,
das ist der Vektor.
Um das zu speichern, gehen Sie zurück zu Unity und stellen Sie sicher, dass Sie die Konsole genau hier haben.
Wenn du nicht zu Window gehst, gehe zu General.
Und Sie können genau hier sehen, dass Sie das Konsolenfenster haben.
Also klicken wir hier an.
Sie sich keine Sorgen um diese kleinen Fehler.
Führe das Spiel aus.
Da sind wir los. Wir können also sehen, dass wir derzeit Nullen haben.
Wir können auf den Zusammenbruch klicken.
Dies wird alle Nachrichten reduzieren, die gleich sind.
Wenn wir jetzt versuchen, a oder D zu drücken,
wenn wir auf das A drücken, dann geht's los.
Sie können sehen, dass dies minus 1 wird und Vektor 2 minus 1 000 ist.
Wenn wir die Taste d drücken,
werden Sie feststellen, dass sie 1 und der Vektor zwei 110 ist.
Also los geht's.
Exzellent. Jetzt, da Sie verstehen, wie diese funktionieren, wie diese aussehen,
ist es Zeit für eine kleine Herausforderung und Ihre Herausforderung wird es sein, den y-Input zu erhalten.
Prüfen Sie also im Eingabe-Manager für Projekteinstellungen die Y-Eingabe, was soll es sein?
Was sollte die Zeichenfolge auf mich verweisen?
Rufen Sie die Eingabe und den Code mithilfe der Gap-Achsenrolle ab.
Sie können sich auch etwas ansehen, das als Zugriff ohne Zeile bezeichnet wird.
Dies ist eine gute Die zusätzliche Ressource für Sie zu tun.
Es ist sehr einfach, nur die Dokumentation zu überprüfen,
einfach ohne Rob Zugriff zu bekommen, sehen Sie, was der Unterschied ist.
Und schließlich müssen Sie diese Eingabe auf der Konsole mithilfe des Debug-Punktprotokolls anzeigen,
genau wie wir die Bewegungseingabe verwendet haben.
Also pausiere das Video jetzt und mach jede Gallone.
Okay, willkommen zurück.
Wie bist du damit zurecht gekommen?
Ich hoffe immer, dass du dein Bestes versuchst.
Also werden wir diese Zeile duplizieren.
Wie würden wir das machen? Klicken Sie einfach auf das Ende dieser Zeile.
Halten Sie die Kontrolle D.
Jetzt haben Sie genau dieselbe Zeile.
Wir werden das von x auf das y ändern
.
Und dann bekommt die input.txt Zugriff.
Rob, was sollte das sein?
Nun, wir wissen, dass dies vertikal sein sollte,
aber wenn es sich um String-Referenzen handelt,
gehen wir zur Vertikalen,
doppelklicken auf Control C, gehen zurück in das Code-Steuerelement V, speichern das.
Und lassen Sie uns das auch duplizieren,
Bewegung Input Dot y.
Und lassen Sie uns hier einfach ein paar Worte hinzufügen.
Das wird also das x sein,
das wird das y sein.
Rette all das,
geh zurück in die Einheit.
Schließen Sie das Fenster mit den Projekteinstellungen.
Führe das Spiel aus. So wie Sie jetzt sowohl das x, das
y als auch den Vektor oder alle 0 sehen können.
Und Sie können sehen, wie viele wir hier haben.
Sobald wir das w drücken,
können wir sehen, dass wir das y als eins haben,
den Vektor 2, 0, 1.
Wenn wir das S drücken, ist es minus1.
Wenn wir das a drücken,
ist x minus1, solange das y noch 0 ist,
können Sie es genau hier im Vektor 2 sehen.
Wenn wir sowohl die W- als auch die D-Taste drücken,
können Sie sehen, dass dieser Vektor 1 ist, 1,
wobei x eins ist.
Und mit allem funktioniert alles einwandfrei.
Ich hoffe es gefällt dir.
Ich hoffe, du hast verstanden, was passiert.
Wenn Sie sich nicht sicher sind, was passiert.
Ich habe versucht, das noch einmal durchzuschauen, zu verstehen,
was ein Vektor zwei bedeutet.
Wir haben auch etwas namens Vektor 3.
Wann immer wir mit VC-Dimensionen arbeiten,
wenn es sich um ein 3D-Spiel handelt.
Und damit hoffe ich, dass
es Ihnen gefällt und hoffe, dass Sie auch verstanden haben, wie Update in jedem einzelnen Frame aufgerufen wird
, in dem Sie sehen können, wie oft es aufgerufen wird.
Und nur für eine kleine Demonstration,
wenn Sie immer noch ein bisschen skeptisch gegenüber dem stehen, was ich sage,
versuchen wir es mit dem Debug-Punktprotokoll.
Und sagen wir einfach hier drin, hey,
ich bin und fange an, einmal angerufen zu werden.
Habe das wieder in unserem Spiel gespeichert, als wir laufen,
sobald dies zusammengebaut ist, führe das Spiel aus.
Du wirst sehen, hey,
heißt nur einmal.
Und diese werden jedes einzelne Frame genannt.
Und unser Spiel mit diesem sagte,
wieder hier drin, begeht alle unsere Änderungen.
Committieren.
Und wie sollen wir es hier nennen?
Ein Skript für den Player erstellt und Variablen gelernt.
Dies liegt daran, dass wir normalerweise einen Kurs erstellen, wenn Sie
ein Projekt machen und Variablen gelernt haben, ist das nicht wichtig?
Ich entferne es.
Das heißt nur, er habe ein Skript für den Layer erstellt.
Wir werden unsere Änderungen begehen.
Und wir sehen uns im nächsten Video.