Transkripte
1. INTRO-KURS SKILLSHARE: Hallo zusammen und willkommen
zum Unity Mobile Game
Development-Kurs. Wie Sie sehen können, werden wir anhand
dieses Space Shooter-Beispielspiels lernen dieses Space Shooter-Beispielspiels Es wurde mit dem
neuen Eingabesystem erstellt. Bevor Sie jedoch ins Detail gehen, beachten Sie, dass
Sie in diesem Kurs beachten Sie, dass
Sie in diesem Kurs auch einige
allgemeine Kenntnisse und Techniken erwerben
, die Sie
auf andere Arten von Handyspielen anwenden können . Wir werden z. B. lernen, wie man drei Arten von Anzeigen
implementiert. Ein Beispiel sind Reward-Ads.
Wenn ein Spieler das Spiel verliert, kann
er sich eine
Anzeige ansehen, die nicht übersprungen werden kann, und weiterspielen. Ein anderes Beispiel sind überspringbare Anzeigen , die zwischen den Ebenen erscheinen können. Und wir kontrollieren, wie oft
sie erscheinen. Wir werden auch lernen, wie Sie
Benachrichtigungen für
Android- und iOS-Geräte senden . Es gibt eine Levelauswahl mit einem einfachen Entsperrsystem. Wenn
der Spieler ein Level gewinnt, wird
das nächste freigeschaltet. Für jedes Level erfassen wir Punktzahlen und Höchstpunktzahlen. Wir lernen, wie man einen Ladebildschirm
erstellt
, den Sie natürlich in jedem Spieltyp
verwenden können. Alle Level haben scrollende Hintergründe und Spawner, die
verschiedene Arten von Feinden spawnen können. Der Spieler kann einige Power-Ups
wie Schild- und
Schießverbesserungen sammeln . Es ist möglich,
das Schieß-Upgrade zu verlieren ,
wenn du Schaden erleidest. Ohne einen Bosskampf würde es keinen Spaß machen. Also implementieren wir Boss
am Ende eines Levels. Optimierung ist ein
wichtiger Teil. Wir werden also ein wenig
über skriptfähige Objekte lernen, wie man Profiler verwendet, um mögliche Probleme zu
erkennen, und wir verwenden das neue
Objektabfragesystem von Unity. Wir lernen, wie man Spiele auf Android
- und iPhone-Handys
testet . Am Ende
füllen wir alle Formulare bei Google Play aus und durchlaufen
den Veröffentlichungsprozess. Es gibt viele
Inhalte, die ich in
dieser kurzen Einführung nicht erwähnt habe. Aber wenn Sie etwas
davon interessant finden, melden Sie
sich noch heute an und wir sehen uns im Kurs.
2. Erstelle ein Projekt und wähle Einstellungen: Hallo alle zusammen. Willkommen zum Kurs Mobile
Space Shooter. Um mit dem Kurs zu beginnen, wählen
wir die optimalen
Projekteinstellungen aus. Öffnen Sie also zuerst Ihren Unity
Hub und gehen Sie zur Instanz. Hier finden Sie alle auf Ihrem PC
installierten
Unity-Versionen. Ich werde das Gerät in der
Version 2022 für diesen Kurs verwenden. Der beste Weg, diesem Kurs zu
folgen, besteht darin, eine Version von 2022 oder neuere zu verwenden. Stellen Sie außerdem sicher, dass Sie Android- oder
iOS-Module installiert haben. Um Module für die
Unity-Version zu installieren, müssen Sie auf die
Schaltfläche Einstellungen
klicken und Module hinzufügen Wählen Sie
dann Android
oder iOS oder beides und fahren Sie mit
der Installation fort. Wie Sie sehen können, habe ich bereits Module für die Version 2022. Gehen Sie jetzt zu den Projekten.
Neue Projekte. Wählen Sie zunächst die Unity-Version aus. Dann können Sie einige
Projektvorlagen sehen. Sie können sehen, dass es mobile 2D
- und 3D-Vorlagen gibt. Diese Vorlagen enthalten
eine Reihe von Paketen, die Sie
für Handyspiele benötigen, aber oft werden Sie sie
nicht alle verwenden. Stattdessen ziehe ich es vor, einfache 2D- oder
3D-Projekte
zu erstellen und dann manuell Pakete
einzugeben, von denen
ich sicher bin, dass ich sie verwenden werde. Dies ist ein 2D-Spiel. Wählen Sie also die 2D-Basisvorlage aus
und wählen Sie einen Namen
und einen Ort. Dann können wir ein Projekt erstellen. Du solltest so
etwas sehen. Als erstes
müssen wir die Zielplattform
auf Android oder iOS umstellen . Gehen Sie also zu den Dateierstellungseinstellungen. Die Zielplattform
ist standardmäßig Windows, Mac und Linux. Dies ist ein Handyspiel, also wähle ich Android aus und
klicke auf Switch Platform. Warte einen Moment, bis
Unity die Arbeit erledigt hat. Nett. Dies ist ein grundlegendes Projekt-Setup. Im nächsten Video werden wir uns mit
einer sehr nützlichen Funktion befassen :
Device Simulator. Wir sehen uns in der nächsten Vorlesung.
3. Device: Hallo alle zusammen. nach der grundlegenden Einrichtung des Projekts Lassen Sie uns nach der grundlegenden Einrichtung des Projekts
ein weiteres cooles Feature erkunden , das uns bei der
Entwicklung eines Handyspiels helfen wird. Es ist ein Gerätesimulator. Um es zu öffnen, wählen Sie
das Spielfenster aus, erweitern Sie die Liste und hier können
Sie zum
Simulatorfenster wechseln. Sie finden
es auch, wenn Sie zu
Windows Allgemein und
Gerätesimulator gehen .
Der Simulator zeigt Ihnen, wie das Spiel auf
einem bestimmten Gerät aussehen wird , und Sie können Gameplay mit der Maus
testen. Wenn Sie die Geräteliste erweitern, werden einige
Geräte angezeigt, die Sie auswählen können. Ich empfehle Ihnen, zusätzliche Geräte zu
installieren. Es gibt Ihnen viel mehr
Optionen zur Auswahl. Natürlich können Sie
mit einigen Einstellungen spielen. Sie können die Ansicht skalieren
oder die Option „An Bildschirm anpassen“ wählen. Sie können den Bildschirm drehen. Und dieser sichere Bereich dient der
Navigation von UI-Elementen. Fühlen Sie sich frei,
das gewünschte Gerät auszuwählen. Ich werde mich für
das Samsung Galaxy S 105 G entscheiden. Jetzt, wenn alles an seinem Platz ist, im nächsten Video werden
wir
im nächsten Video Projekt-Assets importieren
und einige Sprites in Scheiben schneiden. Wir sehen uns dort.
4. Sprite Import und Sprite Editor: Hallo zusammen. Lass uns mit dem Kurs fortfahren
und einige Sprites eingeben. Die Organisation des
Arbeitsplatzes ist sehr wichtig. Lassen Sie uns also einen neuen
Ordner für Sprites erstellen. Stellen Sie sicher, dass Sie
den Asset-Ordner auswählen. Rechtsklicken Sie auf Ordner erstellen. Ich nenne es Sprites. Öffne es. Jetzt können Sie diesen
Preis aus den Ressourcen herunterladen. Verwenden Sie einige Tools, z. B. wenn zwei Extraktdateien
vorhanden sind. Wie Sie sehen können,
sind Sprites in Ordnern organisiert. Wählen Sie sie aus und ziehen Sie
sie in das Projekt. Fühlen Sie sich frei, Sprites zu erkunden. Wählen wir vorerst
das Spieler-Sprite aus. Im Inspektorfenster können
wir die Sprite-Einstellungen sehen. Lassen Sie uns diesen
Teil unten erweitern, um eine
bessere Vorschau
des ausgewählten Sprites zu erhalten. Für die meisten Sprites-Kodierungen sind
diese Standardeinstellungen gut. Wir müssen nichts
ändern. Wir können die Szenenansicht auswählen und das
Sprite im Spiel abspielen. Einige Sprites
müssen jedoch geändert werden, z. B. im Feinde-Ordner, wir haben zwei Gegner
in einem Sprite. Wir brauchen eine Möglichkeit, dieses
Sprite in zwei Teile zu zerlegen. Wählen Sie also das Sprite aus und ändern Sie den Sprite-Modus von
Single auf Multiple. Gehen Sie dann zum Sprite
Editor und übernehmen Sie die Änderungen. Im Sprite Editor. In diesem Fall könnten Sprites etwas verschwommen
erscheinen,
aber keine Sorge, das liegt daran, dass sie für die Vorschau
hochskaliert wurden, da es sich um ein Handyspiel handelt. Normalerweise sind die Abmessungen so klein wie möglich, um die
Leistung zu optimieren. Um zu schneiden, gehen Sprites zu Slice wählen Sie das Raster nach Zellengröße aus. Ich weiß, dass eine Zellengröße für
dieses Sprite 128 Pixel beträgt. Woher weiß ich, dass
in diesem Projekt
jeder Spread Dimensionen hat, die im Namen
enthalten sind, z. B. heißt
dieses Sprite
Enemies 128. Wenn Sie also Ihre eigenen Sprites erstellen
oder einige Künstler beauftragen,
stellen Sie sicher, dass Sie
die genauen Abmessungen
von Sprite und Grid kennen . Ich füge
Dimensionen gerne in Namen ein. Okay, setzen Sie
die Pixelgröße für x und y auf 128. Klicken Sie auf Slice. Sie können zwei separate Zellen sehen, denen
sich jeweils ein Feind befindet. Wenden Sie die Änderungen an und beenden Sie
den Sprite Editor. Wir können das
vorherige Objekt löschen. Wenn du jetzt das Sprite ausbaust, können
wir jeden
Feind einzeln einsetzen. Ein anderes Beispiel ist
dieser Explosionseffekt. Wir müssen es in Scheiben schneiden. Außerdem können
Sie im Inspector die volle
Größe des Sprites ablesen, was manchmal
wichtig ist. Nun wiederhole den Vorgang. Die Zellengröße ist dieselbe. Dieser Explosionseffekt
wird später für Animationen verwendet. Hier kommt deine erste
Mini-Herausforderung. Du kannst dir andere
Sprites ansehen, die geschnitten werden müssen. Slice, nur die
Sprites, auf denen
mehrere Objekte
platziert sind, werden integriert. Du brauchst die
Slice Simple Sprites nicht. Wenn Sie fertig sind, sehen
wir uns in der nächsten Vorlesung.
6. Neues Eingabesystem: Hallo alle zusammen. In diesem Video geben wir
ein neues Eingabesystem ein und
passen einige Einstellungen an. Das erste, was wir tun
müssen, ist zum Windows Package Manager
zu gehen . Standardmäßig sollten Sie alle Pakete
sehen, die sich bereits im
Projekt befinden, um
Ihnen alle verfügbaren
Pakete von Unity anzuzeigen . Gehen Sie zu Paketen und wählen Sie
Unity Registry aus. In der Unity Registry können
wir nach
dem Eingabesystem suchen , es
auswählen und
auf die Schaltfläche Installieren klicken. Um den
Installationsvorgang abzuschließen,
wird Unity neu gestartet. Nach dem Tod. Wenn Sie
im Projekt zu den Paketen gehen, können
Sie sehen, dass wir
das neue
Eingabesystem auf der Liste haben . Beenden Sie den Paketmanager um sicherzustellen, dass er
korrekt installiert ist Wir können zu
Projekteinstellungen bearbeiten gehen, den Player
auswählen und weitere Einstellungen
erweitern.
Scrollen Sie nach unten. Wir suchen nach einer
aktiven Eingabebehandlung. Sie können das alte System,
das neue System
und beide Optionen sehen . Vergewissern Sie sich, dass das neue
System oder beide ausgewählt sind. Ich werde beide auswählen. Nett. Wir müssen noch eine Sache tun, um die Berührung auf dem
Bildschirm mit der Maus zu simulieren. Wir müssen zur
Fensteranalyse gehen. Eingabe, Debugger. Gehen Sie zu den Optionen und aktivieren Sie, simulieren Sie die
Berührungseingabe mit der Maus oder dem Stift. Jetzt können wir die Maus
mit dem Simulator benutzen, und das war's für die
grundlegenden Vorbereitungen. Wir sehen uns in der nächsten Vorlesung.
7. Verbesserte Touch: Hallo zusammen. Lassen Sie uns das
neue Eingabesystem erkunden. Das neue Eingabesystem ist sehr flexibel und kann auf viele Arten
verwendet werden. Aus Unity
geht hervor,
dass die Touch-Unterstützung in die
niedrige Unterstützungsstufe
in der Touchscreen-Klasse und
die High-Level-Unterstützung in
der erweiterten Touch-Klasse unterteilt ist in der Touchscreen-Klasse und
die . Die erweiterte Touch-Klasse bietet
mehr Optionen und die Steuerung ist so konzipiert die Update-Funktion abgerufen werden kann.
Unity empfiehlt, sie zu verwenden. Für dieses Projekt werden
wir also die erweiterte
Statistikklasse verwenden, um die Eingabe zu steuern. Sobald Sie die Syntax
und Theorie dahinter kennen, wird die
Touch-Steuerung wirklich einfach. Zunächst müssen wir Enhanced Touch
aktivieren. Normalerweise machen wir das in ihrer
eigenen aktivierten Funktion. Außerdem müssen wir es in
ihrer eigenen deaktivierten Funktion deaktivieren . Dies
ist eine ziemlich einfache Syntax. Die erweiterte Berührung ermöglicht dann den
zweidimensionalen
Zugriff auf Informationen per Finger und Berührung. Wie wir also einen
Finger und eine Berührung definieren, ist
jeder Finger als
der n-te Kontakt
auf einem Touchscreen definiert . Beispielsweise berühren wir den
Touchscreen mit einem Finger, egal welcher der erste Kontakt ist. Und einige Informationen werden in Finger Zero
gespeichert. Wenn wir den Bildschirm
mit zwei Finger berühren, Informationen
für beide Finger gespeichert. Variablen Finger Null und
Finger Eins. Die Finger, die den Bildschirm
berühren werden in der
Aktivitätsfingeranordnung gespeichert. Um die Informationen zu erhalten, verwenden
wir die folgende Syntax. Berühre die aktiven Finger. Da dies ein Array ist, um die Informationen des ersten Fingers
,
der den Bildschirm berührt, abzurufen, verwenden
wir den Index Null, um
den zweiten aktiven Finger zu erhalten. Wenn es existiert, verwenden wir den
ersten Index und so weiter. Okay, es gibt
noch ein Array, das wir verwenden, und das ist das Finger-Array. Beachten Sie, dass kein
Schlüsselwort aktiv ist. Es ist die Anordnung
aller möglichen Finger. Sie können den
Bildschirm gleichzeitig berühren. Normalerweise hat dieses Array zehn
Elemente für zehn Finger, aber
je nach Hardware
und Software kann es auch überall sein . Um dieses Array verwenden zu
können, müssen wir nach einer
zusätzlichen Bedingung suchen. Wir müssen überprüfen, ob der Finger
aus diesem Array aktiv ist. Wenn das stimmt, können wir es benutzen. Im nächsten Beispiel werde
ich
den Unterschied
zwischen diesen beiden Arrays demonstrieren . Das ist wirklich wichtig. Nehmen Sie sich also Zeit
, um das zu verstehen. Nehmen wir an, wir berühren den
Bildschirm mit zwei Finger. Dies stellt die
aktive Fingeranordnung dar, und dies stellt
die Fingeranordnung dar. Jetzt brauchen wir einige Daten, vielleicht ihre Position
oder etwas anderes. Nehmen wir an, dies ist
der erste Finger , der den Bildschirm berührt hat. Es hat also den Index Null
für beide Arrays. Das heißt, dieser
Finger hat den ersten Zeigefinger. Wenn wir nun z. B. einen Finger mit dem Index
Null im aktiven Fingerarray
anheben ,
wird der
Finger, der den ersten Zeigefinger hatte der den ersten Zeigefinger hatte, der Finger
mit dem Index Null. Die Indizes der Finger, Arrays und der Indizes blieben jedoch gleich. Aber dieser Finger ist Null, ist nicht mehr aktiv. Wenn wir alle Finger
vom Bildschirm nehmen, wird alles zurückgesetzt. Abschließend ist es
wichtig, aus welchem Array und aus welchem
Index wir Daten beziehen. Schauen wir uns nun die Berührung an. Wenn Sie den Bildschirm
mit einer Fingereinheit berühren, werden einige Informationen
in der Touch-Struktur gespeichert. Die Struktur lässt sich am einfachsten anhand der Phasen
erklären. Jede Berührung hat die Phasen begonnen
und beendet. Die Anfangsphase findet
im ersten Bild statt, wenn ein
Finger den Bildschirm berührt. Die beendete Phase tritt , wenn wir den
Finger vom Bildschirm verlassen. Zwischen diesen beiden Phasen können
wir sie auch bewegte
und stationäre Phasen haben. Die Phase ist natürlich, wenn wir unseren Finger
auf dem Touchscreen bewegen. Und in der stationären Phase bewegen wir unseren Finger nicht. Es gibt eine weitere Phase, die
als storniert bezeichnet wird. Es passiert, wenn wir eine Berührung
haben und Fokus
von der Anwendung wegbewegen. bewegen wir uns weg oder verlieren
den Fokus Wenn wir die Anwendung minimieren, bewegen wir uns weg oder verlieren
den Fokus
. Diese Phasen sind sehr nützlich und wir werden
sie im Kurs verwenden. Außerdem gibt es ein
Array für aktive Berührungen, das wir verwenden können, um aktive Berührungen zu erzielen
, ähnlich dem Finger-Array. Okay, das war ein bisschen
Theorie über die
erweiterte Touch-Klasse. Lassen Sie uns es in der nächsten Lektion verwenden , um Spielerbewegungen zu erzeugen.
8. Bewege Spieler mit Touch: Hallo zusammen. In dieser Vorlesung
lernen wir, wie man den Spieler
mithilfe des neuen Eingabesystems
und der Touch-Steuerung bewegt . Gehen Sie zunächst in den
Skriptordner erstellen Sie ein C-Sharp-Skript. Ich nenne es Player
Controls. Öffne es. Der erste Schritt besteht darin,
den erweiterten
Touched Namespace für das Eingabesystem hinzuzufügen . Wie wir in der
vorherigen Vorlesung gesagt
haben, müssen wir
Enhanced Touched aktivieren. Wir machen das in ihrer
eigenen Aktivierungsfunktion. Denken Sie daran, dass diese
Funktion immer dann aufgerufen wird wenn das Objekt aktiviert ist, wir deaktivieren es
dann in ihrer
eigenen deaktivierten Funktion. Das passiert, wenn das
Objekt deaktiviert, zerstört usw. wird. Als Nächstes müssen wir
Eingaben in der Aktualisierungsfunktion erhalten. Für dieses Spiel
brauchen wir nur einen Finger. Die beste Option ist
, Eingaben
nur vom ersten Finger zu empfangen , der den Bildschirm berührt. Es spielt keine Rolle,
welcher physisch, nur dass es der erste ist. In der if-Anweisung schreiben
wir also Touch-Punktfinger mit dem Index Null. Index Null auf
den ersten Finger trifft, werden
Sie einen Fehler feststellen. Dies liegt daran, dass diese Struktur für
mehrere Namespaces verwendet werden
kann. Wir müssen also angeben
, welcher Namespace verwendet werden soll. Wir können mit der rechten Maustaste auf die
Berührung klicken und Schnellaktionen öffnen. Sie können sehen, dass wir zwei Namespaces verwenden
können, die
Unity-Engine, die berührt, und Unity-Engine, die die Berührung
verbessert. Wir müssen Enhanced Touch verwenden. Nun sollten
Sie oben im Skript sehen, dass
jedes Mal, wenn wir Touch verwenden, es aus dem erweiterten
Touch-Namespace stammt. Jetzt können wir
mit der if-Anweisung fortfahren. Wir müssen überprüfen, ob der
erste Finger aktiv ist, was bedeutet, dass er den Bildschirm
berührt. Dann können wir die Berührung verwenden, um die erste aktive Berührung aus
dem aktiven Berührungsfeld zu erhalten. Wir wissen, dass diese aktive Berührung dem
ersten Finger auf
dem Bildschirm erfolgt, da
wir aufgrund der
If-Anweisung von Active Touch eine Position erhalten müssen. Zunächst verwenden wir Vektor drei, um die
Bildschirmposition der Berührung zu speichern. Da dies eine Bildschirmposition ist, müssen
wir
sie in unsere Position umrechnen. Die Bildschirmposition ist eine
Position auf dem Bildschirm. Es unterscheidet sich von
der Weltposition. Die Weltposition ist die tatsächliche Position in
der Szene und im Spiel. Das brauchen wir.
Zur Konvertierung. Wir benutzen die Hauptkamera. Die Hauptkamera verfügt über den
Funktionsbildschirm zum Abstimmen von Punkten. Also geben wir ihm eine Bildschirmposition die in eine Weltposition
umgewandelt wurde, und speichern sie dann erneut in
der Touch-Positionsvariablen. Wir können
die Hauptkamera auch
in einer Variablen speichern , um die Leistung
zu verbessern. Lassen Sie uns eine neue
Kameravariable erstellen. Nehmen wir am Anfang die Punktdomäne
der Hauptkamera mit zwei
Kameras an. Jetzt können wir die
Hauptkameravariable im Code verwenden. Dann können wir die Position des Spielers mit
dem
neuen Vektor drei festlegen . Für x verwenden wir die
Berührungsposition x
und die Berührungsposition y
für die Y-Position, Position auf der Z-Achse
spielt keine Rolle. Es muss nur
vor der Kamera sein. Ich setze es auf
Null. Lass uns das versuchen. In Unity. Wählen Sie den Player und fügen Sie das
Player-Controller-Skript hinzu. Drücken Sie die Wiedergabetaste. Ich kann auf das Raumschiff klicken und es über den Bildschirm bewegen. Wenn ich jedoch
irgendwo auf dem Bildschirm klicke, teleportiert sich
das Raumschiff zu dieser Position. Das ist nicht das
Verhalten, das wir brauchen. Idee ist, dass der Spieler nicht auf das
Raumschiff klicken
muss, um es zu bewegen. Der Spieler sollte in der Lage sein, auf eine beliebige Stelle auf
dem Bildschirm
zu klicken und das
Raumschiff von seiner Position aus zu bewegen. Auf diese Weise hat der Spieler mehr Sichtbarkeit und
Kontrolle über den Bildschirm. Wenn ich z. B. hier klicke und
das Raumschiff ist da und ich den Finger nach unten gemäht
habe, möchte ich, dass das Raumschiff auch von seiner Position
heruntergeht. Um dieses Verhalten zu implementieren, müssen
wir
den Abstand
zwischen der Berührungsposition
und dem Raumschiff berechnen . Gehen wir zurück zum Drehbuch. Erstellen Sie einen
Vektorversatz von drei, den wir als Abstand zwischen der
Berührung und dem Raumschiff
verwenden werden . Wie Sie aus der vorherigen
Vorlesung wissen, hat Berührung Phasen. Wenn wir bei diesem Bild nur den
Bildschirm berührt haben, beginnt die
Berührungsphase. Prüfen wir also, ob die Phase
der ersten aktiven Berührung begonnen hat. Beachten Sie, dass ein Fehler vorliegt. Wir müssen auch den
Namespace für die Trennphase angeben. Wir verwenden das Eingabesystem
That Touch Pays Namespace. Dann, um die Offsetwerte zu berechnen, ein bisschen Vektormathematik. Offset entspricht der Berührungsposition minus der
Position des Raumschiffs, und das wird zu dieser Position transformiert
. Das gibt uns den
Abstand, den wir brauchen. Dann können wir überprüfen, ob die
Phase der Bewegung entspricht. Das heißt, wenn der Spieler
den Finger auf dem Bildschirm bewegt ,
müssen wir
natürlich das Raumschiff bewegen. Wir können diesen Code also
mit einer Änderung verwenden. Subtrahieren Sie den Versatz X von der X-Koordinate und den Versatz
y von der Y-Koordinate. Es gibt eine Phase
, in der der Spieler den Bildschirm
berührt und
den Finger nicht bewegt. Also, wenn die Phase stationär ist, dann mach dasselbe. Stellen Sie die Position mit Offset ein. Und das ist alles, was wir
zum Codieren brauchen. Lass es uns versuchen. Zuerst. Versuchen wir,
auf das Raumschiff zu klicken. Das funktioniert gut. Klicken Sie dann
auf eine beliebige Stelle auf dem Bildschirm und versuchen Sie, das Raumschiff zu bewegen. Sie können sehen, dass das Raumschiff der Berührung korrekt
folgt. Das wollten wir. Natürlich besteht die Möglichkeit, den Bildschirm
zu verlassen. In der nächsten Vorlesung werden
wir uns mit dieser
Situation befassen. Wir sehen uns dort.
9. Player: Hallo nochmal. Lassen Sie uns einige
Bewegungseinschränkungen für den Spieler festlegen, damit er den Bildschirm nicht
verlassen kann. Die Idee ist, ein Viewport zu verwenden. Werfen wir einen Blick auf
den mobilen Bildschirm. Der Ansichtsfensterbereich ist normalisiert und relativ
zur Kamera. Das bedeutet, dass die
Werte 0-1 gehen, z. B. sind
die Koordinaten oder die
untere linke Ecke Null-Null. Die erste Zahl steht für den x-Wert und die
zweite Zahl ist vier, der Y-Wert, die Koordinaten
der oberen rechten Ecke, R11, die unteren rechten Koordinaten sind 10
und die obere linke 01, der Mittelpunkt ist 0,50, 0,5. Wir werden diese Koordinaten verwenden und sie
in virtuellen Raum umwandeln. Dann sag dem Spieler, dass er diese Koordinaten nicht überschreiten
kann. Okay, jetzt, da wir die Idee kennen, fangen wir an, das
Player-Controller-Skript zu öffnen. Zunächst benötigen wir private
Gleitkommawerte für maximale Links-, Rechts-, Abwärts- und Aufwärtspunkte. Am Anfang. Wir können diese Werte mithilfe des Viewports der
Weltpunktfunktion
zuweisen. Der linke Oberkiefer erhält also einen
Wert von der Hauptkamera, das Viewport zum Weltpunkt. Wie gesagt, wir rechnen
Viewport in World Point um. Jetzt müssen wir die Koordinaten des
Ansichtsfensters anpassen. Also verwenden wir den neuen Vektor zwei. Da dies die maximale linke
Position für den x-Wert ist, versuchen
wir es mit 0,15. Und für das y können wir Null verwenden. Sie werden sehen, dass ein Fehler darin
besteht, dass diese Funktion Vektor drei
zurückgibt und wir ihn als Float-Wert
speichern. Wir benötigen aber nur einen
x-Wert aus dem Vektor. Also am Ende, richtig, das x für das Maximum, oder? Der Prozess ist derselbe. Ändern Sie einfach den x-Wert
, um ihn symmetrisch zu machen. Eins -0,15 ist 0,85. Für den Mixdown-Wert ist
der Vorgang ähnlich. Jetzt
ist die X-Koordinate Null und die Y-Koordinate kann
eine kleine Zahl sein, z. B. 0,05. Am Ende wählen
wir den
Y-Wert mit dem Punkt y. Der maximale APP-Wert wird 0,6 sein weil ich nicht
möchte, dass der Spieler ganz nach
oben auf dem Bildschirm wechselt. Okay, jetzt, da wir
die Restriktionskoordinaten kennen , wenden
wir sie an. Gehe zur Update-Funktion. Ich werde nur ein bisschen
herauszoomen , da dies
eine lange Codezeile sein wird. Überschreiben Sie nun in der
IF-Hauptanweisung unten die Position mit
der Transformation
, an der der neue Vektor drei liegt. Um Werte einzuschränken, verwenden wir den Mythos F, die Klammerfunktion. Zuerst schreiben wir den Wert, den
wir einschränken möchten, und das ist die
X-Position des Spielers. Dann schreiben wir den Mindestwert, in diesem Fall die
linke Seite des Bildschirms. Also die maximale linke Position, dann schreiben wir den maximalen Wert , der die rechte
Seite des Bildschirms ist, in diesem Fall max, oder? Für die Y-Koordinaten wollen
wir
diesen Positionspunkt y transformieren. Der Minimalwert ist max down und der Maximalwert ist max up. Für die Z-Achse
können wir einfach Null schreiben. Ich denke, das ist alles, was
wir zum Codieren brauchen. Lass es uns versuchen. Sie können sehen , dass der Spieler jetzt den Bildschirm nicht
verlassen kann. Vielleicht können wir die
unteren Koordinaten etwas erhöhen. Sie können auch sehen
, dass ich mich nicht
über 0,6 des Bildschirms bewegen kann . Natürlich können Sie zum Skript
gehen
und den maximalen oberen Wert erhöhen. Jetzt kann ich ganz nach oben gehen. Experimentieren Sie gerne mit den Werten und finden Sie das
Beste für Ihr Spiel. Dies funktioniert für jede
Bildschirmgröße auf jedem Gerät. Sie können es auf anderen
Geräten im Simulator ausprobieren. Toll, das war's
für diese Vorlesung. Wir sehen uns im nächsten.
10. Camera: Hallo alle zusammen. In dieser Vorlesung werden
wir unsere Kamera für
alle Arten und Größen von Bildschirmen anpassen . Zu diesem Zeitpunkt ist die
Kameragröße gut, aber auf einem anderen
Mobilgerät ist sie
möglicherweise zu
groß oder zu klein. Um dieses Problem zu lösen, verwenden
wir eine Sündermaschine
und eine virtuelle Kamera. Lassen Sie uns also das
Cinema Machine-Paket importieren. Gehen Sie zum Package Manager und
wählen Sie Unity Registry, suchen Sie den Center-Computer
und installieren Sie ihn. Lassen Sie uns nun
eine virtuelle Kamera erstellen. Sie können die
Transformationskomponente zurücksetzen und die Z-Achse
auf einen negativen Wert setzen. Auf diese Weise stellen wir sicher, dass die Objekte
vor der Kamera befinden. Beachten Sie, dass wir jetzt
die Kameragröße auf
dieser virtuellen Kamera kontrollieren . Idee ist,
zwei leere Objekte
an den Seitenrändern
des Bildschirms zu erstellen und dann sicherzustellen, dass diese
beiden Objekte
unabhängig vom Gerät
die Kanten des KMer darstellen . Sie müssen sich also immer innerhalb der Kameraansicht befinden und sich
wie Randgrenzen verhalten. Lassen Sie uns ein neues
leeres Spielobjekt erstellen. Ich nenne es einen linken Endpunkt. Wir können ihm ein Symbol geben. Setzen Sie dann die
Transformationskomponente zurück und bewegen Sie das Objekt nach links. Ich denke, minus
vier ist ein guter Wert. Geh nicht bis
zum Rand. Dann duplizieren Sie das Objekt. Dies ist der richtige Punkt für den Wert für x und muss
symmetrisch sein, also sind es vier. Jetzt brauchen wir ein neues
leeres Spielobjekt. Nennen Sie es Zielgruppe,
setzen Sie die Position zurück. Dann können wir das Skript aus
dem City Machine-Paket
zum Scene
Machine-Zielgruppenskript hinzufügen dem City Machine-Paket
zum . Sie können sehen, dass wir der Liste
Zielobjekte hinzufügen können. Wir müssen uns Ziele setzen. Einer ist ein linker Punkt und
ein anderer ist ein rechter Punkt. Großartig. Wählen Sie nun Virtual k-mer. Ziehe die Zielgruppe in
den Herbst und sieh dir die Felder an. Da wir eine Gruppe
von Objekten für das Ziel verwenden, wählen Sie Group Composer aus, wir müssen
einige Optionen ändern. Die erste ist die Größe des
Gruppenrahmens. Es definiert, wie viel
Bildschirmfläche der
Begrenzungsrahmen der Ziele
einnimmt. Wir müssen es auf eins setzen,
damit sich die Ränder
des Bildschirms genau an den
linken und rechten Punkten befinden. Stellen Sie dann die
Rahmendämpfung auf Null. Der niedrigere Wert, die
Festerkamera
passt sich zu Beginn des Levels auf die richtige
Größe an. Jetzt können Sie es
im Simulator ausprobieren, die Geräte
wechseln und
sehen, wie das Spiel aussieht. Es sollte in Ordnung sein. Es gibt jedoch
ein verstecktes Problem. Beachten Sie, dass eine
Bewegungsbeschränkung nicht mehr
richtig funktioniert. Der Grund dafür ist, dass wir in der
Startfunktion
Einschränkungen festgelegt haben, aber das Kino
hatte zu Beginn des Levels keine Zeit , die Kamera richtig
einzustellen. Also der Viewport
, von dem wir Koordinaten erhalten, Gefühl falscher Daten. Die Lösung ist ziemlich einfach. Wir können Coroutine
mit Keratinfunktion verwenden. Wir können die
Ausführung von Code verzögern. Die Syntax ist ein
bisschen anders. Wir müssen die
Zählerfunktion erstellen. In der Funktion ist der Code irgendwie in zwei Teile getrennt. Im ersten Teil tun
wir etwas oder nichts, je nachdem, was wir brauchen. In diesem Fall nichts. Dann fügen wir die Zeitverzögerung hinzu. Wir schreiben Yield, Return New
und wählen dann, wie
lang die Verzögerung sein soll. ZB können wir auf
das Ende eines Frames warten. Wir können eine bestimmte
Anzahl von Sekunden warten und so weiter. Warten wir 0,2 s.
Nach Ablauf der Zeit führen
wir den zweiten
Teil des Codes aus. In diesem Fall benötigen wir es,
um Restriktionswerte zu erhalten. Diese 0,2 s reichen aus, bis wir eine Maschine
gesehen haben, um die Kamera
einzustellen und dann
erhalten wir die richtigen Viewportdaten. Verwenden wir eigentlich ein
Gewicht für das Ende eines Frames. Für dieses Beispiel gehen wir davon aus, dass ein Bild ausreichend Zeit ist
, um die Kamera einzustellen. Das letzte, was wir brauchen, um
diese Funktion mit
Startcoroutine aufzurufen . Verwenden Sie Startcoroutine
am Anfang und rufen Sie die Funktion „Grenzen
setzen“ auf. Lass es uns versuchen. Jetzt.
Alles funktioniert gut. Beachten Sie, dass
manchmal eine Maschine mehr Zeit
benötigt, um die Kamera
einzustellen, z. B. auf all ihren Mobilgeräten. Also ist es vielleicht klüger,
mehr Zeitverzögerung zu haben. Das war's. Ich hoffe, du hast
alles verstanden und wir sehen uns
in der nächsten Vorlesung.
11. Touch-Steuerelement-Update [Nicht überspringen]: Hallo alle zusammen. Dies
ist ein kurzes Update. Es scheint, dass das Gerät ein
neues Eingabesystem ist und einige Samsung-Geräte
Kompatibilitätsprobleme haben. Keine Sorge, ich zeige Ihnen, wie
Sie sie reparieren können. Vielleicht haben
Unity und Samsung dieses Problem bereits
gelöst, wenn Sie sich das ansehen . In diesem Fall
müssen Sie keine Änderungen vornehmen. Sehen wir uns das Problem an. Aus irgendeinem Grund registrieren
Samsung-Geräte diese Codezeile nicht. Ich glaube, sie
haben Probleme mit der Fingeranordnung oder
so. Aber eigentlich registrieren sie es, aber nur, wenn sie
einen Stift verwenden Sie werden
den nackten Finger nicht registrieren, was wirklich seltsam ist. Andere Android-Geräte und iPhones haben dieses Problem nicht Lassen Sie uns also
diese Codezeile ersetzen. Wir können die Touch-Klasse verwenden
, um aktive Berührungen zu zählen. Also, richtig, berühre die
aktiven Berührungen, auf die es ankommt. Die Anzahl muss
größer als Null sein. Das bedeutet, dass wir eine oder mehrere aktive Berührungen
auf dem Bildschirm haben. Lass es uns versuchen. Hier habe ich ein Samsung-Gerät
und alles funktioniert. Der Spieler kann das
Bewegungsverhalten jedoch missbrauchen, indem er Multi-Touch
verwendet Beachten Sie, dass, wenn ich
mehr Finger benutze und den ersten Finger lebe, der
das Raumschiff bewegt, das Raumschiff in die Position
des zweiten Fingers teleportiert Position
des Um das zu verhindern, benötigen wir
eine weitere IF-Aussage. Lassen Sie uns die erste
aktive Berührung verwenden. Es hat den Index Null. Lassen Sie uns dann den Finger
und den Zeigefinger bei dieser Berührung verwenden. Der Zeigefinger dieses Fingers
muss gleich Null sein. Das heißt, wir verwenden nur den ersten Finger
, der den Bildschirm berührt. Verschieben Sie dann den Code
in die if-Anweisung. Lass es uns versuchen. Wie Sie sehen, funktioniert jetzt
alles. Ich würde vorschlagen, dass Sie
diesen Ansatz verwenden , da er auf allen Geräten
funktioniert. Ich hoffe, Unity und Samsung
werden ihre Probleme beheben. in der Zwischenzeit
sicher, dass Sie
Ihren Code auf so vielen
Telefonen wie möglich testen . Aber wir sind noch nicht fertig. Ein weiterer Fehler kann
im Unity-Editor auftreten. Der Bug, den ich Ihnen zeigen tritt
nur im Unity-Editor auf. Es wirkt sich nicht auf Ihr
veröffentlichtes Spiel auf Mobiltelefonen aus, aber es kann nervig sein, wenn
Sie Ihr Spiel in Unity testen. Natürlich habe ich die Lösung. Lassen Sie mich Ihnen zunächst den Bug zeigen. Ich kann das Schiff normal steuern während meine Maus auf dem Bildschirm ist. Aber wenn ich außerhalb
des Bildschirms klicke, erhalte
ich diese Fehlermeldung. Das gleiche passiert, wenn Sie
die linke Maustaste gedrückt halten und
die Maus aus dem Bildschirm ziehen . Im Grunde passiert es
jedes Mal, wenn Sie außerhalb
des Mobilbildschirms
drücken. Wenn du dein
Spiel auf dem Handy
erstellst, kannst du nicht
außerhalb des Bildschirms drücken. Der Bildschirm ist das einzige
, was Sie verwenden können. Ich weiß also nicht, warum der Unity-Editor Bildschirmpositionen
außerhalb des Bildschirms
registriert, aber ich weiß, wie ich das beheben kann
, damit Sie dieser Fehler
nicht nervt Sie können feststellen, dass die Werte
für die Bildschirmposition r unendlich für x und negativ
unendlich für die Y-Achse Wir können diese Informationen verwenden. Gehen Sie
hier unter der
Vektor-Thre-Touch-Position zum
Player-Controller-Skript . Lassen Sie uns Hash schreiben,
wenn Unity Editor, und dann Hash schreiben. Und wenn jetzt alles, was
wir
zwischen diesen Zeilen haben , nur im
Unity-Editor
kompiliert wird . Es wird nicht kompiliert, wenn du dein Spiel für Telefone entwickelst. Hier können wir überprüfen, ob die Berührungsposition auf x gleich Unendlich
ist. Wenn das stimmt, kehren Sie zurück und
führen Sie den folgenden Code nicht aus. also im Unity-Editor Wenn wir also im Unity-Editor außerhalb
des Bildschirms drücken, stoppt
der Code hier und
das verhindert Fehler. Lass es uns versuchen. Ich ziehe die Maus aus dem Bildschirm und nichts passiert. Ich kann überall klicken und
habe keine Fehler. Nett. Ich hoffe, Unity wird diese
Fehler in neueren Versionen lösen, und das ist alles für dieses Video. Wir sehen uns im nächsten.
12. Tipp-Anzahl: Hallo alle zusammen. In dieser Vorlesung lernen
wir, wie
man Schritte zählt. Diese Vorlesung ist optional. Wir werden in
diesem Space Short-Projekt keine Schritte verwenden, aber vielleicht ist es nützlich
für eure Spiele und Projekte. Sie werden Ihr Wissen
über Touch-Steuerungen erweitern. Wenn Sie die Dokumentation öffnen, befindet sich
der Link in den Ressourcen. Dann sehen
Sie unter der Touch-Klasse alle Eigenschaften
, die wir verwenden können. Einige von ihnen haben wir
bereits gesehen und verwendet, z. B. Phasen und Bildschirmposition um zu zählen, wie viele
Typen der Spieler gemacht hat Wir benötigen die Eigenschaft Tape Count. Öffnen wir das
Player-Controller-Skript. Nehmen wir zum Beispiel an, wir
müssen ein Double-Tap registrieren. Wir brauchen eine IF-Aussage. Dann verwenden wir die Touch-Klasse, in unserem Fall my
touch eine Variable. Also meine Berührung, dieser Typ zählt. Wenn es zwei ist, können wir etwas tun. Und das war's. So einfach ist das. Lass es uns versuchen. Ich werde ein Doppeltippen
mit einem Doppelklick simulieren. Sie können in der Konsole sehen
, dass wir ein Debug-Protokoll haben. Nett. Natürlich können Sie
die Anzahl der Bänder ändern, z. B. können
wir nach einem Band suchen. Das ist alles für diese Vorlesung. Ich hoffe, Sie haben mehr über
Touch-Steuerungen gelernt und sehen
uns im nächsten.
13. Virtueller Joystick: Hallo zusammen. In dieser Vorlesung werden wir
einen virtuellen Joystick hinzufügen , mit dem wir das Raumschiff bewegen
können. Wie Sie sehen können, kann ich
das Raumschiff bewegen , indem ich
diesen virtuellen Joystick bewege. Beachten Sie, dass dies optional ist. Wir werden diesen
Ansatz während des Kurses nicht anwenden. Ich werde
für den Rest des Kurses die Touch-Steuerung verwenden. können Sie
dem Kurs trotzdem folgen Mit dieser
Joystick-Option können Sie
dem Kurs trotzdem folgen. Der Hauptgrund für
diesen Vortrag ist jedoch,
Ihnen zu zeigen , wie einfach es ist, einen virtuellen Joystick zu
implementieren. Vielleicht wirst du es in deinen
zukünftigen Spielen und Projekten verwenden. Okay, lass uns anfangen. Wie gesagt, wir werden
ein neues Eingabesystem verwenden. Ich werde den Importvorgang wiederholen falls Sie diesen Teil übersprungen haben. Zuerst müssen wir
zum Package Manager gehen. Stellen Sie sicher, dass Sie
Unity Registry auswählen, dann nach
dem Eingabesystem suchen, es
auswählen und auf
die Schaltfläche Installieren klicken. Das habe ich schon gemacht. Klicken Sie dann mit
der rechten Maustaste auf das Projektfenster , um eine Eingabeaktion zu erstellen. Ich nenne es Kontrollen. Klicken Sie auf die Schaltfläche Bearbeiten. Dadurch wird ein neuer Tab geöffnet. Klicken Sie auf die Plus-Schaltfläche, um eine neue Aktionskarte zu
erstellen. Diese Aktionskarte
ist für den Spieler bestimmt, also nenne sie Spieler. Dann haben wir Aktionen. Aktionen können z. B. Schießen, Bewegung usw. sein. Jede Aktion hat eine
oder mehrere Bindungen. Bindungen sind wie Trigger. Wir haben festgelegt, welche Taste gedrückt muss, um die Aktion zu aktivieren. Ich werde diese Aktion einfach löschen
, um Ihnen den Vorgang zu zeigen. Um eine neue Aktion zu erstellen, klicken Sie auf diese Plus-Schaltfläche. Diese Aktion dient
der Bewegung, also nenne sie Bewegungen. Sie können die
Aktionseigenschaften hier sehen. Wir müssen
den Aktionstyp ändern. Für den Joystick. Wir brauchen keine Schaltfläche, wir müssen einen Wert verwenden. Ebenfalls. Wir müssen den
Kontrolltyp auf einen
beliebigen Wert setzen oder einen Vektor dafür verwenden. Wähle dann die
Bindung und öffne,
öffne und das Gamepad und
wähle ein Leben aus, das auf dem Spiel steht. Jetzt, wo wir fertig sind, ist
es wichtig, das Asset zu
retten. Wenn Sie Änderungen vornehmen,
denken Sie daran, sie zu speichern. Wählen Sie dann den Spieler aus. Wir müssen eine
Player-Eingabekomponente hinzufügen. Dann ziehen wir die Asset
Controls, die wir erstellt haben. Lassen Sie uns nun die
Benutzeroberfläche für den Joystick erstellen. Wir brauchen ein Bild. Ich nenne es einen linken Stick. Gehe zur Szenenansicht. Wählen Sie das Bild aus. Ich werde nur ein bisschen
hineinzoomen. Wenn Sie einen Joystick
in der unteren linken Ecke haben möchten, müssen wir Anchor, Preset und Pivotpoint in
die untere linke Ecke ändern , die Umschalttaste und die Alt-Taste
gedrückt halten und
die untere linke Ecke auswählen. Wir können die
Position ein bisschen ändern. Dann fügen wir die eigene
Screen-Stick-Komponente hinzu. Für das Kontrolltier. Wähle das gleiche Tempo wie bei
unserer Steuerung, und das ist der linke Stick. Lass uns das testen. Sie können sehen, dass sich das
Bild wie ein Joystick verhält, aber es passiert
nichts. Der Spieler bewegt sich nicht. Bevor wir uns damit befassen, passen
wir den Joystick ein wenig an und bewegen ihn weiter in die Ecke. Dann ändern wir das Bild. dem Link in den Ressourcen Weitere kostenlose virtuelle
Joystick-Bilder
finden Sie unter dem Link in den Ressourcen. Wir können
die Skala auch etwas erhöhen. Das sieht besser aus. Beachten Sie, dass es die
Bewegungsvariable gibt. Es bestimmt, wie weit wir den Joystick
von seiner Mitte entfernen. Erhöhen wir es auf 100. Das ist viel besser. Um die Benutzeroberfläche für alle Geräte kompatibel
und skalierbar zu machen, müssen
wir außerdem Canvas auswählen. Ändern Sie dann den Skalierungsmodus
, um mit der Bildschirmgröße zu skalieren. Stellen Sie dann eine Referenzauflösung ein. Passen wir Breite
und Höhe gleich an. Stellen Sie das also auf 0,5. Jetzt müssen wir nur noch den Joystick
mit der Bewegung des Spielers
verbinden. Wählen wir den Spieler aus. Ich habe das
Player-Controller-Skript. Lass es uns öffnen. Damit der Joystick funktioniert. Zuerst müssen wir
eine Referenz für die Eingabeaktion erstellen. Zurück in Unity. Erweitern Sie den Steuersatz. Sie können die Aktion sehen, sie bewegen und in das leere Feld
ziehen. Geh zurück zum Drehbuch. Wir benötigen einen
Schwimmer mit variabler Geschwindigkeit. Dann verwenden wir im Update den
Vektor für die Richtung. Wir erhalten die Richtungswerte aus der Eingabeaktionsreferenz. Verwenden Sie also move action, um
die Aktion zu verwenden, die den Wert gelesen hat. Sticks auf Gamepads haben
Vektor-2-Werte. Das bedeutet, dass wir den Wertevektor zwei
lesen. Um den Spieler tatsächlich zu bewegen, verwende Transform That Translate. Wir multiplizieren den
Bewegungsrichtungsvektor mit der Geschwindigkeitsvariablen und multiplizieren
dann
alles mit der Zeit, Delta-Zeit für eine reibungslose Bewegung. Das ist alles, was wir brauchen, um
Unity zu beschönigen. Vergiss nicht, die Geschwindigkeit einzustellen. Lass es uns versuchen. Jetzt kannst du sehen, wie sich der Spieler bewegt, während ich den
Joystick bewege. Nett. Das ist alles für dieses Tutorial und wir sehen uns im nächsten.
14. Enemy: Hallo zusammen. In dieser Vorlesung lernen
wir, wie
man sich
mithilfe des Vererbungskonzepts Feinde erschafft . Die bewährte Methode zur Verwendung Vererbung ist, wenn
Sie eine Gruppe von Objekten haben, die viele gemeinsame Funktionen haben, z. B. eine Gruppe von Feinden. Das Konzept ist sehr einfach. Wir erstellen eine übergeordnete Klasse, die auch als Basisklasse
bekannt ist. Dann erstellen wir Kinderklassen. Untergeordnete Klassen erben Variablen und Funktionen
von der übergeordneten Klasse. Darüber hinaus können untergeordnete Orte ihre eigenen Variablen
und Funktionen
haben. Lassen Sie mich Ihnen ein Beispiel zeigen. Um den Überblick zu behalten,
wählen Sie zunächst den Skriptordner aus und erstellen Sie einen neuen
für feindliche Skripte. Dann erstellen wir das
neue C-Sharp-Skript. Nenn es NME. Es
wird unsere Basisklasse sein. Öffne es. Okay. Alle Feinde mussten eine
Gesundheit haben ,
die allen gemeinsam ist. Erstellen Sie also eine Public
Float-Gesundheitsvariable. Jetzt können wir
eine untergeordnete Klasse erstellen, z. B. Meteor. Öffne es, um es zu einer Kinderklasse zu machen
, und ersetze das motorische Verhalten
durch das gegnerische Verhalten. Lassen Sie den
untergeordneten Ort vorerst so, keine Variablen oder Funktionen
außer Start und Update. In Unity können wir
ein neues leeres Spielobjekt erstellen ,
das Meteor-Skript. Und wir können die
Gesundheitsvariable sehen. Die Gesundheitsvariable
wird von
der gegnerischen Klasse vererbt und wir können sie in der Meteor-Klasse
verwenden. Gehen wir zur feindlichen Klasse. Normalerweise können wir
geschützte Variablen
anstelle von öffentlichen verwenden . Geschützte Variablen
liegen zwischen privat und öffentlich. Sie sind nur für die
Eltern- und Kinderklassen sichtbar. Andere Orte können sie direkt sehen oder
ändern. bedeutet auch, dass wir
sie
standardmäßig nicht im Inspektor sehen können . Dafür verwenden wir ein
serialisiertes Feld. Nett. Schauen wir uns die
Struktur etwas genauer an. Wir haben eine Elternklasse, feindliche
Child-Meteor-Klasse, und wir können z. B. eine Raumschiff-Kinderklasse
erstellen. Also
müssen sowohl der Meteor als auch das Raumschiff gesund sein. Sie müssen einen starren Körper haben, wahrscheinlich im Animator für
Animationen und so weiter. All das, was üblich ist,
geht in die Elternklasse. Außerdem
können alle Gegner Schaden erleiden. So können wir
die Funktion „Schaden nehmen“
in der übergeordneten Klasse erstellen . Untergeordnete Klassen erben
diese Variablen und Funktionen. Wie gesagt, zusätzlich können
wir spezielle Funktionen
nur für Kinderklassen haben. Die Meteor-Klasse kann z. B. eine
Rotationsfunktion haben und das Raumschiff
kann eine Soll-Funktion haben. Und das ist die grundlegende
Logik der Vererbung. Gehen wir nun zum
feindlichen Skript und erstellen wir die Funktion „
Schaden nehmen“. Stellt sicher, dass das öffentlich
ist, da wir diese Funktion in
anderen Klassen
nennen werden. Ebenfalls. Es muss ein durch
Float beschädigter Parameter benötigt werden. In dieser Funktion
verringern wir die Lebenspunkte mit
dem Schadenswert. Dann können wir eine
Schadensanimation hinzufügen. Nach der Verschuldung können wir überprüfen, ob der Gesundheitszustand kleiner
oder gleich Null ist. Dann können wir vielleicht
eine Destroy-Animation abspielen. Später werden wir den
eigentlichen Code für Schulden schreiben. Jetzt zeige ich
Ihnen einen
fortgeschrittenen Trick mit
virtuellen Funktionen. Virtuelle Funktionen funktionieren sehr gut mit Vererbungsmustern. Also erstellen wir eine virtuelle
Funktion in einer übergeordneten Klasse. Alle untergeordneten Klassen können
diese virtuelle Funktion verwenden, sie
aber auch überschreiben. Das bedeutet, etwas
Code und Funktionen hinzuzufügen. Sagen wir die Syntax. Wir erstellen eine öffentliche
virtuelle Void-Funktion. Beachten Sie das Schlüsselwort virtuell. Nennen wir es Hurt Sequence. Und wir können diese Sequenz auch
erstellen. Ersetzen Sie nun Kommentare
durch Funktionen. Wenn der Feind das Bild aufnimmt, die Herdensequenz statt. Diese Reihenfolge tritt ein, wenn die Gesundheit kleiner
oder gleich Null ist. können wir
virtuelle Funktionen um einige Funktionen erweitern Bedarf können wir
virtuelle Funktionen um einige Funktionen erweitern. In diesem Fall brauchen wir es nicht. Gehen wir zum Meteor-Skript. Da diese Klasse eine untergeordnete Klasse
ist, können
wir
virtuelle Funktionen überschreiben. Beachten Sie das Keyword Override. Standardmäßig wird Code aus der
Basisklasse aufgerufen. Also, wenn Sie hier in
der virtuellen Funktion etwas haben ,
das aufgerufen wird, aber denken Sie daran, dass wir es nicht aufrufen
müssen, es ist eine Option. Also können wir
diese Codezeile einfach löschen. Wir können für diese Kinderklasse etwas anderes und Einzigartiges machen. Auf diese Weise kann jede
Kinderklasse
unterschiedliche Verletzungen erleiden und dass
Sequenzen und Verhalten, z. B. ein Feindtyp, in dieser Reihenfolge
explodieren können. Ein anderer Feindtyp kann z. B. explodieren und auch mehr Gegner
spawnen. Die Möglichkeiten sind endlos. Okay, das ist alles Theorie was
wir wissen müssen.
Durch den Kurs. Wir werden dem Feind der Basisklasse mehr Dinge
hinzufügen. In der nächsten Vorlesung werden
wir dieses Wissen anwenden
und uns den ersten Feind machen. Also wir sehen uns dort.
15. Meteor Prefab: Hallo zusammen. In dieser Vorlesung werden
wir Materialpräferenzen erstellen , die den Spieler zerstören können. Zunächst können wir
die Zählerobjekte aus
der vorherigen Vorlesung löschen . Dann können wir zu feindlichen Sprites gehen und 1 m in die Szene ziehen. Wir können es umbenennen um sicherzustellen, dass Feinde vor dem
Hintergrund
sichtbar sind , und die Reihenfolge in einer Ebene
erhöhen. Beachten Sie, dass der
Spieler zu groß ist. Es wäre zu schwer, meteorgleichen Projektilen auszuweichen
. Wir können die
Skala vielleicht auf 0,6 ändern. Großartig. Wählen Sie nun unreif aus, um
dieses Objekt dem Einfluss
der Physik-Engine und der Kräfte
an der 2D-Komponente des starren Körpers zu unterwerfen der Physik-Engine und der Kräfte . Wir werden sehen, dass Sie
diese Komponente im Skript verwenden. Beachten Sie, dass es einige
Einstellungen wie die Schwerkraft gibt. Wenn wir die Wiedergabetaste drücken, fällt
das Objekt. Um tatsächlich
mit anderen Objekten zu kollidieren, benötigen
wir einen Collider, in diesem Fall den
Circle Collider 2D. Lassen Sie uns die Ansicht vergrößern, um besser zu sehen. Ich werde den
Radius ein bisschen perfekt verkleinern. Wir müssen dem Player auch
einen Rigid Body und
Collider-Komponenten hinzufügen . Ed, starrer Körper 2D. Für den Spieler können wir die Schwerkraft auf Null
setzen. Der Spieler hat ein
komplexeres Sprite. Also können wir den
Polygon Collider 2D hinzufügen. Um die Leistung zu erhöhen, können
wir auf der Schaltfläche Collider
bearbeiten einige Linien
aus dem Collider entfernen . Halten Sie nun die Strg-Taste gedrückt und klicken Sie auf die Linie, wenn Sie
mit der rechten Maustaste darauf klicken, um sie zu entfernen. Wir können auch einige Eckpunkte verschieben. Ich werde ein bisschen beschleunigen. Sie können den
Collider nach Ihren Wünschen bearbeiten. Es muss nicht dasselbe
sein wie meins. Wir können den Bearbeitungsmodus verlassen. Wählen Sie nun den Meteor aus. Um zu vermeiden, dass
der Hintergrund ausgewählt wird, können
wir die Auswahl deaktivieren und das Messgerät in die Mitte
bewegen. Jetzt können wir die Kollision
im Spielmodus probieren. Wie Sie sehen können, kollidieren Objekte. Der nächste Schritt besteht darin,
die Option East Trigger
auf dem Meteor Collider zu aktivieren . Jetzt kollidieren die Objekte
nicht, aber eine Kollision wird erkannt und wir können sie im Skript verwenden. Als nächstes ändern Sie ihren starren
Körpertyp zwei kinematische. Jetzt
können andere Objekte und Kräfte dieses Objekt nicht beeinflussen,
was bedeutet, dass nichts diesen Meteor
drücken oder ziehen kann. Wir können die Bewegung
nur über das Skript steuern. Denken Sie auch an jedes
Objekt, das
einen Collider hat und das Sie
bewegen, zerstören oder verändern möchten. Es muss eine
RigidBody2D-Komponente haben. Wir können das
Meteor-Skript hinzufügen und es im
Inspektor nach oben verschieben . Öffne es. Bevor wir hier mit dem Programmieren beginnen, gehen
wir zur Klasse
Parent Enemy. Alle Gegner werden eine 2D-Komponente mit
starrem Körper haben. Wir können also eine
geschützte Variable erstellen, RB. In Unity können Sie
die Starrkörperkomponente
in das leere Feld ziehen . Gehen Sie jetzt zurück zum
Meteor-Skript. Ich möchte Materialien mit
unterschiedlichen zufälligen Endgeschwindigkeiten erstellen . Erstellen Sie also
to-Float-Variablen , die wir im Inspector
sehen können. Eine ist die Mindestgeschwindigkeit und die
andere ist die Höchstgeschwindigkeit. Und wir benötigen auch eine private Cloud-Geschwindigkeit
in der Startfunktion, wir können die Geschwindigkeit einstellen. Die Geschwindigkeit erhält den Wert,
wobei dieser Bereich zufällig ausgewählt wird. Der Wert geht also von der
Mindestgeschwindigkeit zur Höchstgeschwindigkeit, die wir im Inspektor festgelegt haben. Jetzt müssen wir dem Reifen
Geschwindigkeit verleihen. Also verwenden wir den starren Körper RB
, diese Geschwindigkeit und setzen
sie auf den Vektor nach unten, was einen negativen Wert bedeutet. Auf der Y-Achse ist es minus eins. Das Messgerät bewegt sich nach unten und wir müssen
nur die
Richtung mit der Geschwindigkeit multiplizieren. Stellen Sie in Unity Mindest
- und Höchstwerte ein. Lass es uns testen. Nett. Lassen Sie uns nun eine Kollision
zwischen dem Meteor
und dem Raumschiff erkennen . Wir verwenden die On Trigger
Enter to d-Funktion. Diese Funktion wird
aufgerufen, wenn etwas in den Trigger eindringt, den
wir auf dem Meteor haben. Sie können sehen, dass
die Funktion
einen Collider-2D-Parameter hat . Benennen wir es in
Other Collider um. Später werden wir
ein beschädigtes System haben und wir
würden den Spieler beschädigen. Aber lassen Sie uns vorerst einfach den Spieler
zerstören. Wir verwenden die Funktion
destroy und wollen einen anderen
Collider zerstören, dieses Spielobjekt. Das ist also das Objekt, mit dem
Unreife kollidiert ist. Lass es uns sehen. Nett. Der Meteor kann jedoch andere Objekte
berühren. Also wollen wir spezifizieren, nur
um den Spieler zu zerstören. Es gibt viele
Möglichkeiten, dies zu tun. Wir verwenden Tags, wählen den Player aus und
gehen zur Drop-down-Liste. Wählen Sie den Tag-Player aus. Natürlich können Sie hier ein neues Tag
erstellen. Klicken Sie einfach auf den Plus-Button. Ich werde es jetzt nicht tun. Stellen Sie einfach sicher, dass
der Tech Player oder was auch immer Sie verwenden ausgewählt ist. Zuerst wollen wir überprüfen,
ob das Objekt
den Player mit der
Vergleichsfunktion hat . Wenn das stimmt, dann zerstört. Großartig. Jetzt müssen wir aus dem Detonator ein Prefab
erstellen, das wie eine Kopie des Objekts mit
all seinen Komponenten ist. Lassen Sie uns zunächst einen
neuen Ordner erstellen, prefabs. Ziehen Sie dann die
Zählerobjekte per Drag & Drop aus der Hierarchie. Jetzt können wir ganz einfach
Kopien dieses
Objekts in der Szene erstellen . Dieses Fertighaus werden wir in Zukunft für
den Schraubenschlüssel verwenden. Wenn du zu den feindlichen Sprites gehst, wirst
du zwei weitere Meteore sehen. Deine Mini-Herausforderung besteht darin, aus diesen Sprites
Prefabs zu erstellen . Die Lösung ist sehr einfach. Sie können den Vorgang wiederholen, um
sich an alles zu erinnern, was
wir getan haben, aber es gibt eine
einfache Möglichkeit, dies zu tun. Wir können das Prefab
aus der Hierarchie auswählen, das Sprite
ersetzen, es umbenennen und das Prefab in
den Ordner Prefabs ziehen. Wir wollen ein
neues originelles Fertighaus schaffen. Machen Sie dann dasselbe, um ein drittes Prefab zu
erstellen. Und das ist alles
für diese Vorlesung. Wir sehen uns beim nächsten.
16. Collision: Hallo alle zusammen. Bevor wir einen vier
Meter langen Spammer bauen, zeige
ich Ihnen einen nützlichen Trick über Kollisionen
zwischen Objekten. Wir werden die
Kollisionsmatrix
anhand der Kollisionsmetriken untersuchen und entscheiden, zwischen welchen Schichten die Kollision erkannt wird. Also müssen wir zuerst mehr Ebenen
erstellen. Wähle den Spieler aus und gehe im Inspektor
in die obere rechte Ecke. Merken Sie sich hier unsere
Ebenen für Kollisionen. Wir haben bereits einige
Standardebenen, aber lassen Sie uns neue erstellen. Gehen Sie, um Ebenen hinzuzufügen. Lassen Sie uns den Layer-Player erstellen. Wir können auch
eine für Feinde erstellen. Wählen Sie nun den Spieler aus und
weisen Sie die Ebene zu, die wir erstellt haben. Als Nächstes können wir das
Meteor-Prefab aus der Hierarchie auswählen. Das Material sollte sich
auf der Ebene „Feind“ befinden. Bei Prefabs ist es wichtig, Änderungen
zu überschreiben, wenn Sie sie auf
die anderen Instanzen
desselben Prefabs anwenden möchten . Wenn Sie nun zum
Ordner Prefabs gehen und Meteor Three
auswählen, können Sie sehen, dass
er sich aufgrund
der von uns angewendeten Überschreibung bereits auf der Ebene Feind befindet. Wähle nun die anderen 2 m aus und
ändere den Feind der zweiten Ebene. Da wir die Änderungen
direkt an den Assets vorgenommen
haben, müssen wir nichts
überschreiben. Sie nehmen Überschreibungen nur vor, wenn Änderungen an Prefabs
in der Hierarchie vornehmen. Gehen Sie nun zu
Projekteinstellungen bearbeiten und wählen Sie Physics 2D. Gehe zur Ebenenkollisionsmatrix. Hier können Sie alle Kollisionsebenen
und
die Beziehungen zwischen ihnen sehen . Standardmäßig ist eine Kollision
zwischen allen Ebenen aktiviert. Sie können auch die Ebenen sehen, die wir
erstellt haben , um die Kollision
zwischen den Ebenen zu deaktivieren Deaktivieren Sie
einfach das Kontrollkästchen. In diesem Fall haben wir
die Kollision zwischen der Standard- und
der
NME-Ebene deaktiviert die Kollision zwischen der Standard- und
der
NME-Ebene sodass wir die
Kollision
weiter deaktivieren können , bis wir
zum Ebenenplayer gelangen. Wir brauchen eine Kollision zwischen
dem Spieler und den Feinden. Lassen Sie das also angekreuzt. Als Nächstes. Wir brauchen keine
Kollision zwischen Feinden. Für die Ebene hat der Spieler auch andere Kollisionen
deaktiviert. Nur um dir zu zeigen, wenn du deaktiviert bist, Kollisionen zwischen dem Feind
und dem Spieler, werden wir
den Meteor
durchqueren und Kollisionen werden
nicht erkannt. Stellen Sie also sicher, dass die
Kollision aktiviert ist. Dies ist eine gute Möglichkeit
, um zu kontrollieren was kollidiert und was nicht. Sie sollten
dies auf jeden Fall in Ihren Projekten verwenden. Später im Kurs werden
wir weitere Ebenen hinzufügen
und diese Matrix modifizieren. Das ist alles für diese Vorlesung. Wir sehen uns im nächsten.
17. Meteor Spawner: Hallo zusammen. In dieser Vorlesung werden wir einen Spammer für Meteore
erstellen. Wir stellen auch sicher, dass sich
Meteore außerhalb
des Bildschirms und innerhalb der linken
und rechten Randgrenzen befinden. Lassen Sie uns zunächst ein
neues leeres GameObject erstellen. Dieser da wird
Meteors Partner sein. Wir können die
Transformationskomponente zurücksetzen. Dann müssen wir
ein neues C-Sharp-Skript erstellen. Nennen Sie es Matures Pounder, das Script zum
Spielobjekt und öffnen Sie es. Lassen Sie uns nun
einige Variablen erstellen. Wir brauchen eine Reihe
von Spielobjekten. Dieses Array wird
die Meteor Prefabs enthalten. Dann brauchen wir die
Spawn-Zeitvariable. Diese Variable bestimmt
, wann Meteore explodieren. Wir brauchen einen Timer, um die Zeit zu
verfolgen. Und die Integer-Variable I
ist ein Index für das Array. Als nächstes benötigen wir einen Verweis
auf die Hauptkamera. Natürlich benötigen
wir die Variablen Maxilla links und max rechts
für die Bildschirmränder. Und in diesem Fall benötigen
wir auch eine
Y-Positionsvariable, die sich außerhalb des Bildschirms befindet, um
sicherzustellen, dass die Messspanne an
der richtigen Position ist. In der Startfunktion richten
wir eine Referenz
für die Hauptkamera auf die gleiche Weise
ein wie im Player-Controller-Skript. Wir können auch zum
Player-Controller-Skript gehen. Hier können wir die Funktion „
Grenzen setzen“ kopieren. Fügen wir es in
das Spawner-Skript ein. Wir können die Markierungen down
und max upper löschen. Wir verwenden die Variablen maxilla left
und max right. Fühlen Sie sich frei, diese
Zahlen bei Bedarf zu optimieren. Wir müssen eine Variable hinzufügen, und das ist der Grund, warum Position. Diese Position muss
außerhalb des Bildschirms liegen. also für den y-Wert etwas, Verwenden Sie also für den y-Wert etwas, das größer als eins ist. Ich werde 1.1 verwenden. Rufen Sie als Nächstes diese Funktion
am Anfang mit Startcoroutine auf. Lassen Sie uns nun die
Hauptlogik des Spawners, die
berechnete Zeit und die Meteore erstellen . Standardmäßig ist der Timer Null, aber wir können uns vergewissern
und ihn auf Null setzen. Dann erhöhen wir den
Timer um Time.DeltaTime. time.deltaTime ist die
Zeit zwischen zwei Frames. Wenn wir Frames aktualisieren, erhöht sich
die Zeit. Dann überprüfen wir, ob dieser Timer länger als unsere Zeit
ist. Wenn das stimmt, müssen
wir eines
der drei Meter langen Fertighaus ausgeben. Wir setzen den Index I auf den
zufälligen Bereich
, der von Null bis
zu einem Meter dieser Länge reicht. In diesem Fall
wird der Index die Nummer 01 oder zwei sein. Wenn wir nun
eine Indexnummer haben, können
wir ein vorgefertigtes Messgerät aus dem Array erzeugen, um Objekte zu erstellen. Zur Laufzeit verwenden wir die Funktion
Instanziate. Zuerst schreiben wir das
Objekt, das wir zum Spawn benötigen. In diesem Fall ist das ein vorgefertigter Meteor aus
dem Array mit dem Index i. Dann wählen wir
diese Grenzposition. Wir brauchen einen neuen Vektor drei. Für den x-Wert verwenden
wir diesen Bereich zufällig. Es geht von Maxilla
links nach Max, rechts. Dadurch werden Meteore
innerhalb der Bildschirmränder sichtbar. Für den y-Wert verwenden
wir die y-Position. Denken Sie daran, dass sich der Wert über
dem oberen Bildschirmrand befindet. für die Z-Achse Wenn Sie für die Z-Achse eine
Zahl verwenden, die das Objekt vor
die Kamera stellt. Ich denke, dass unsere
Kamera minus zehn ist, also können wir minus fünf gehen, z. B. müssen wir
als Nächstes die Drehung des
Objekts
festlegen , um
die Standardrotation zu wählen, wir können einfach
Quaternion verwenden, diese Identität. Aber damit es besser aussieht, verwenden
wir die zufällige Rotation. Stellen Sie die Drehung mithilfe von
Quaternionen ein, bei denen die Euler-, X- und Y-Werte Null sein müssen. Und für die Drehung auf der Z-Achse verwenden
wir einen
Zufallswert im Bereich von 0-360. Dann müssen wir
den Timer auf Null zurücksetzen. Großartig. Gehen wir zu Unity. Wir können die Spawnzeit wählen,
z. B. Ich setze sie auf alle 2 s. Dann können wir
Meteor-Prefabs zum Array hinzufügen. Ich habe den Inspektor geliebt und
gehe zum Ordner Prefabs, wähle Meteore aus und
ziehe sie in das Array. Stellen Sie sicher, dass Sie
Prefabs aus den Assets verwenden. Verwenden Sie keine Prefabs
aus der Hierarchie. Lass es uns versuchen. Toll, alles funktioniert. Wir müssen uns jedoch um ein Problem
kümmern. Ich werde die Spawnzeit erhöhen und das Spiel ein bisschen spielen. Sie können in der Hierarchie sehen , dass wir viele Objekte haben. Das sind Meter, die wir bei ihrem
Sturz ins Unendliche
vermieden haben . Um das zu lösen,
gehen wir zum Demeter-Skript. Wir werden die Funktion
auf wurde unsichtbar verwenden. Diese Funktion wird
aufgerufen, wenn das Objekt für die Kamera nicht mehr
sichtbar ist. Mit anderen Worten, wenn das
Objekt den Bildschirm verlässt, müssen wir nur
die Zerstörungsfunktion aufrufen und
dieses Spielobjekt zerstören. Lass es uns testen. Jetzt können Sie sehen,
dass Meteore
zerstört werden , wenn sie vom Bildschirm
verschwinden. Nett. Um diese Grenze
noch besser zu machen, können
wir die Größe der Meteore nach dem
Zufallsprinzip bestimmen und darauf reagieren. im Spawner-Skript das Objekt, Speichern
wir im Spawner-Skript das Objekt, das
gefunden wurde , in der
Objektvariablen des Spiels. Dann können wir
eine Zufallsvariable für
die Größe von Meteoren erstellen . Ich werde einen wirklich kleinen Bereich festlegen. Sie können den
Unterschied erhöhen, wenn Sie möchten. Dann ändern wir die lokale
Skala des Meteors. für x und y Verwenden Sie für x und y die variable Größe. Toll, das ist alles,
was wir hier programmieren müssen. Wir sehen uns in der nächsten Vorlesung.
18. Object: Hallo zusammen. Bevor wir dem Spieler die
Fähigkeit zum Schießen hinzufügen, habe ich beschlossen,
diesen Vortrag über die Rotation von
Meteoren zusammenzufassen . Das ist optional,
aber ich denke, dass die Medien Roseville
besser aussehen, wenn sie rotieren. Das Ziel ist es, Meteore auf z zu
drehen, x steht im Skript. Lassen Sie uns dieses Prefab aus
der Hierarchie löschen und das
Demeter-Skript öffnen. Zuerst benötigen wir Float
Variable, Rotate, Speed. Dann müssen
wir in der Aktualisierungsfunktion das
Objekt in jedem Frame drehen. Wir verwenden die Funktion Transform
Rotate. Für die X- und Y-Achse. Wir brauchen die Rotation nicht. Und für die Z-Achse verwenden Sie die Rotationsgeschwindigkeit und multiplizieren Sie
sie mit der Zeit, der Deltazeit. Wir verwenden time.DeltaTime
, damit die Rotation schön und glatt
aussieht. Das ist alles, was wir brauchen
, um in Unity zu codieren. Wählen Sie ein Meteor Prefabs aus
und stellen Sie eine Drehzahl ein. Lass es uns versuchen. Nett. Ich finde, das
sieht viel besser aus. Das ist alles für diese Vorlesung. Wir sehen uns im nächsten.
19. Player: Hallo, nochmal. Lassen Sie uns dem Spieler
die Schießfähigkeit hinzufügen. In dieser Vorlesung werden wir die
Grundlagen des Schießens von
einem Schießpunkt aus erstellen . Upgrades und das Sammeln mehr Punkten werden
später im Kurs durchgeführt. Zuerst brauchen wir eine Position,
von der aus wir schießen werden. Klicken Sie also mit der rechten Maustaste auf den Spieler und erstellen Sie ein leeres Spielobjekt. Dieses Objekt ist ein
untergeordnetes Objekt des Spielers. Ich nenne es Basic
Shooting Point. Wir müssen uns bewegen, um
ein wenig
über das Raumschiff zu schießen . Erstellen Sie dann ein neues
C-Sharp-Skript. Ich nenne es Spielerschießen. Öffne es. Wie immer. Lassen Sie uns zunächst die
Variablen erstellen, die wir benötigen. Wir benötigen eine Spielobjektvariable für das Laserkugel-Prefab. Wir brauchen einen Transformationspunkt,
von dem aus wir schießen. Dann benötigen wir die Variable für das
Aufnahmeintervall. Lassen Sie uns außerdem eine
Float-Variable erstellen , damit wir das Intervall
zurücksetzen können. Dieser Wert für das Schussintervall wird
im Inspektor in Einheit angegeben. Und dann können
wir in der Startfunktion diesen Wert in
der Interval-Reset-Variablen speichern. Als Nächstes gibt es viele Möglichkeiten
, Timer zu erstellen. Wir haben bereits einen
für diesen Pounder erstellt, aber für diesen Fall erstellen
wir einen Timer, indem wir den Wert
verringern. jedem Bild verringern wir Aufnahmeintervall
um Time.DeltaTime. Wenn dieses Schussintervall kleiner oder gleich Null
ist, können wir
21 Laserkugeln zeigen. Bevor wir eine
Funktion für den Kurzschluss erstellen, setzen wir das Intervall einfach zurück,
indem wir es auf den Standardwert setzen. Als Nächstes erstellen wir eine Funktion, die sich über Objekte erstreckt, die wir
instanziieren, wie Sie sich erinnern, zuerst schreiben wir das
Prefab, das wir
hämmern müssen , und es ist eine Laserkugel. Wir müssen es für die
Grundposition ausgeben, an der wir stehen sollten. Wir können die Standardrotation verwenden
und den
Quaternionpunkt e. Die Entität verwenden. Rufen Sie dann die Funktion
auf, wenn das Intervall kleiner
oder gleich Null ist. Wählen Sie in Unity den
Player aus und fügen Sie das Skript hinzu. Sie sehen, dass
wir
einige Referenzen einrichten müssen . Vorerst. Wir haben keinen
Laserboy bei Prefab, aber wir haben einen Schießpunkt. Ziehen Sie die Bemerkung, die wir
zu Beginn der Vorlesung angesprochen haben, nach hinten. Wir können das
Schussintervall auch auf 0,3 s einstellen. Lassen Sie uns
nun ein
vorgefertigtes Lasergeschoss erstellen. Gehe zum Sprites Player. Und hier kannst du
das Projektil-Sprite sehen. Ziehen wir es in die Szene. Benennen Sie es um. Es ist ein bisschen zu groß. Stellen Sie die Skala also auf 0,5. Fügen Sie dann die 2D-Komponente für den starren
Körper hinzu. Wählen Sie den kinematischen Körpertyp. Als nächstes brauchen wir einen Collider. Ich werde Capsule Collider 2D verwenden. Lassen Sie uns den Collider ein wenig anpassen. Es muss kleiner sein. Aktivieren Sie dann die Option Ist
Trigger. Lassen Sie uns nun eine neue
Kollisionsebene für Projektile erstellen. Gehe zu Ebene hinzufügen. Ich nenne es Projektil's des
Spielers. Wählen Sie das Objekt aus und wählen Sie die Ebene des
Spielerprojektils aus. Denken Sie daran, dass wir beim
Erstellen einer neuen Ebene die Kollisionsmatrix
für eine bessere Kollisionskontrolle ändern müssen . Ich möchte, dass das Projektil nur mit Feinden
kollidiert, also habe ich andere Kollisionen deaktiviert. Schließlich können wir ein
Skript für die Laserkugel erstellen. Das Skript zum Objekt. Öffne es. Lassen Sie uns Variablen erstellen. Zuerst brauchen wir die
Geschwindigkeit der Kugel. Dann brauchen wir die
Schadensvariable. Diese Variable bestimmt wie viel Schaden die
Kugel anrichten wird. Wir benötigen auch die 2D-Variable
Starrkörper. In der Startfunktion stellen
wir die Geschwindigkeit ein, um diese zu transformieren , multipliziert mit der Geschwindigkeit. Transformieren Sie diese
Richtung nach oben und sie wird durch die
grüne Achse in der Szene dargestellt. Dadurch bewegt sich die
Kugel nach oben. Wir benötigen die
Aktualisierungsfunktion nicht, um eine Kollision mit der Kugel zu erkennen wir bei Trigger Enter to D verwenden, dann müssen wir aufgrund der Kollisionsmatrix nicht überprüfen, was mit
der Kugel
kollidiert ist. Wir wissen, dass nur Feinde mit der Kugel
kollidieren. Aus der Kollision erhalten
wir also die feindliche Komponente. Denken Sie daran, dass die feindliche Klasse eine übergeordnete Klasse für alle
Arten von Feinden ist. Jeder Feindtyp als
feindliches Skript
ist also eine übergeordnete Klasse. Das feindliche Drehbuch, wir haben die Funktion „Technisch beschädigt“, die die Funktion „Schaden
nehmen“ dem Feind Schaden zufügt. Wenn wir nun die Komponente haben, können
wir die Funktion
Feind aufrufen, die das Bild aufnimmt. Die Funktion benötigt
ein Argument und das ist der Schaden, den wir dem Feind zufügen
werden. Dann zerstöre die Kugel. Es gibt jedoch Fälle, in denen
Kugeln Feinde verfehlen, dann müssen wir diese Kugeln
zerstören. Genau wie bei Meteoren funktionieren Videos,
die nicht unsichtbar werden,
wenn die Kugel vom Bildschirm zerstört
wird. Gehen Sie nun zu Unity und verbinden Sie die
Starrkörperkomponente. Stellen Sie Geschwindigkeit und Schaden ein. Ich setze das Bild auf eins. Ziehen Sie nun das
Aufzählungszeichen in den Ordner Prefabs. Lösche diesen hier aus
dem oberen Bereich. Wählen Sie den Player aus und ziehen Sie das Bullet-Prefab
aus den Assets. Lass es uns versuchen. Wie Sie sehen können, wird eine
Kollision erkannt, aber wir zerstören keine Meteore. Eine einfache Erklärung dafür. Wählen Sie eines der wichtigsten Prefabs aus. Sie können sehen, dass 0,1 Lebenspunkte
ausreichen sollten, um es zu zerstören. Gehen wir zum Messgerät oder zum Drehbuch. Wir suchen nach der
Todessequenzfunktion. Denken Sie daran, dass diese Funktion
in der Funktion „Panzer
beschädigt“ aufgerufen wird, wenn die
Lebenspunkte Null oder weniger sind. Und wir nennen die Funktion „Dicker
Schaden , wenn ein Feind
mit einer Kugel kollidiert. Also ist alles richtig
verbunden, aber diese Sequenz
macht nichts. Sie ist leer. Wir müssen nur den
Meteor in der Todessequenz zerstören. Wählen Sie in Unity
alle Meteor-Prefabs aus. Wenn du willst, dass der Meteor
mit einer Kugel zerstört wird und Gesundheit auf eins
gesetzt wird, wähle
ich zwei, was bedeutet, dass zwei Kugeln ihn
zerstören. Lass es uns versuchen. Toll, alles funktioniert. Wir sehen uns in der nächsten Vorlesung.
20. PlayerStats und Damage System: Hallo alle zusammen. Lassen Sie uns ein Gesundheits- und
Schadenssystem für den Spieler erstellen. Während des Kurses werden wir das System
mit Animationen,
Game-Manager, Logik
und anderen Dingen
bedienen . Die Kernfunktionalität
wird jedoch in dieser Vorlesung behandelt. Zuerst benötigen wir ein
neues C-Sharp-Skript. Ich nenne es die vorherigen Staaten. Das Drehbuch für den Spieler. Öffne es. Lassen Sie uns
einige Variablen erstellen. Wir brauchen einen Float, der die
Gesundheitsvariable verspottet. Dies ist die maximale
Lebenspunkte für den Spieler, die wir
im Inspektor festgelegt haben. Dann benötigen wir eine
private Variable,
Gesundheit, die
die aktuelle Gesundheit
des Spielers in
der Startfunktion darstellt des Spielers in
der Startfunktion Stellen
wir die aktuelle
Gesundheit und die maximale Gesundheit ein. Wir benötigen die
Update-Funktion nicht. Lassen Sie uns nun eine Funktion erstellen
, damit der Spieler das Bild
aufnehmen kann. Ich nenne es
Spieler, der Schaden nimmt und es braucht einen
Parameter, Schaden. Wie Sie sehen können,
ähnelt
das Schadenssystem dem
gegnerischen Schadenssystem. Hier verringern wir diese
Lebenspunkte um die Höhe des Schadens. Prüfen Sie dann, ob die Gesundheit
kleiner oder gleich Null ist. Wenn das stimmt, können wir den Spieler zerstören. In der Zukunft. Hier wird es viel
mehr Logik geben,
Animationen, die Explosionen umfassen, die
Todesszene
zeigen und so weiter. Gehe jetzt zu Unity. Ich werde die maximale Lebenspunktzahl auf 23 festlegen. Gehe zum feindlichen Drehbuch. Alle Gegner verursachen Schaden. Es ist also sinnvoll,
eine beschädigte Variable
in der übergeordneten Klasse zu erstellen . Wählen Sie in Unity
ein Meteor-Prefabs aus
und stellen Sie fest, dass es im Inspektor eine
Schadensvariable gibt. Ich setze den Schaden auf eins. Öffnen Sie dann das Materialskript. Wenn Sie sich erinnern, wenn ein Meteor mit dem Spieler
kollidiert, zerstören
wir den Spieler sofort. Wir können
diese Codezeile kommentieren. Die Idee ist, dem Spieler Schaden zuzufügen. Jetzt können wir die Komponente „
Spielerstatistiken“ abrufen. Aus den Spielerstatistiken rufen wir die Funktion Player take the
image auf. Die Funktion verwendet
die Schadensvariable , die wir in
den feindlichen Tonen erzeugt haben. Zerstören wir auch den Meteor. Jetzt können wir es versuchen. Der Spieler sollte
nach Treffern aus drei Metern zerstört werden, da die Lebenspunkte drei und der
Schaden 112,3 beträgt, funktioniert es. Natürlich wäre es schön zu
sehen, wie viel Gesundheit
der Spieler hat. In den nächsten Vorlesungen werden
wir also eine
Gesundheitsleiste für den Spieler erstellen.
21. UI: Hallo alle zusammen. In dieser Vorlesung lernen wir die Grundlagen der Benutzeroberfläche
kennen. Das Richtige zu haben ist ein Canvas
einzurichten, wie man seine Elemente richtig positioniert um einen
Helfer und Hauptmenüs zu erstellen, es ist notwendig,
grundlegende Dinge zu wissen. Zuerst klicken wir hier mit der rechten Maustaste
auf das Höhere. Und hier können Sie
alle UI-Elemente sehen. Am gebräuchlichsten sind unser
Bild, Text und Button. Lassen Sie uns ein Bild erstellen. Dadurch werden automatisch ein
Leinwandbild und ein Ereignissystem erstellt . Bevor wir
mit dem Bild arbeiten, wählen
wir das Ereignissystem aus. Da wir
ein neues Eingabesystem verwenden, müssen
wir dieses Modul ersetzen. Dies wird in Zukunft die
Interaktion mit Schaltflächen
und anderen
interagierbaren Elementen ermöglichen . Doppelklicken Sie nun auf die
Leinwand, um die volle Größe zu sehen. Standardmäßig
hat der Canvas-Bildschirm dieselbe Bildschirmgröße. Wählen wir unser Bild aus. Ändern Sie die Position auf Null-Null. Jetzt befindet sich das Bild in der
Mitte des Bildschirms. Wenn Sie zum Simulator gehen, sollten
Sie das Bild sehen. Das erste, was wir ändern
müssen, ist, die
Benutzeroberflächenelemente
je nach Gerät zu skalieren. Das bedeutet, dass auf kleineren Geräten Benutzeroberflächenelemente immer
kleiner und
größer sein müssen , z.
B. Ich werde zu
einem größeren Gerät wechseln. Beachten Sie, dass
die Größe des Bildes dieselbe ist. Dies ist nicht das, was wir brauchen, um die Größe zu ändern, wählen Sie Canvas. Sie sollten die
Canvas-Skalarkomponente sehen. Ändern Sie dann die Skala so, dass sie mit der Bildschirmgröße
skaliert. Beachten Sie, dass das Bild größer ist. Der nächste Schritt ist die Auswahl
einer Referenzauflösung. Da dieses Spiel für die
Portraitperspektive gedacht ist, stellen
wir die Auflösung
auf ein Verhältnis von neun zu 16 ein. Und wir wollen gleiche
Bildbreite und -höhe. Stellen Sie das Bild also auf 0,5. Wenn Sie nun die Geräte wechseln, sollte
sich
die Größe korrekt ändern. Vielleicht ist es auf diesem Quadrat schwer zu
erkennen, aber so wie sich
die echten Sprites verändern, das
wäre sichtbarer. Lassen Sie uns nun zu dem häufigsten Fehler übergehen ,
den Menschen
meiner Meinung nach machen. Nehmen wir an, wir müssen
eine Integritätsbalkenbreite erstellen , dieses Bild. Die Gesundheitsleiste
muss sich in der oberen Ecke befinden. Wählen wir das Bild aus und verschieben es in die
obere linke Ecke. Das sieht man
im Simulator, die Position ist gut. Wählen wir jedoch
ein kleineres Gerät. Jetzt können Sie sehen, dass das
Bild vom Bildschirm ist. Warum passiert das? Die Antwort lautet Ankerposition. Wählen Sie das Bild aus und
öffnen Sie die Anchor Presets. Standardmäßig
befindet sich die Ankerposition in der Mitte des Bildschirms. Sie können die
Ankerposition auf der Leinwand sehen. Wie funktionieren Anker? Eigentlich sind sie
wirklich einfach. Der Abstand zwischen
der Ankerposition und dem Objekt ist
immer gleich. Dieser Abstand wird also für jedes Gerät
angewendet. Bei kleineren Geräten ist dieser
Abstand zu groß, sodass das Bild vom Bildschirm stammt. Ein anderes Beispiel,
nehmen wir an, das ist unser Testgerät
und die Entfernung. Wenn wir ein größeres Gerät wählen, wäre
das Bild nicht
in der Ecke. Es wird näher an der
Mitte sein, dann sollte es sein. Die Lösung besteht darin,
eine andere Ankerposition zu wählen. In unserem Fall
muss sich der Anker in der
oberen linken Ecke befinden. Jetzt verwenden wir diesen Abstand vom oberen linken
Anker zum Bild. Das funktioniert für jedes Gerät. Wählen wir nun das
Anker-Preset oben links aus. Wir können auch die Umschalttaste gedrückt halten, um den Drehpunkt
auf diese Ecke zu
setzen. Wechseln Sie nun die Geräte
im Simulator und stellen Sie sicher, dass sich das Bild
an der richtigen Position befindet. Okay, wir müssen jetzt die UI-Elemente
für alle Geräte korrekt platzieren, was bedeutet, dass wir bereit sind, eine Health Bar
zu erstellen. Wir sehen uns in der nächsten Vorlesung.
22. Health: In dieser Vorlesung werden wir
einen Helfer für den Spieler erstellen. Um bei Null anzufangen. Löschen wir das Bild
aus der vorherigen Vorlesung. Lassen Sie uns nun ein neues Bild erstellen. Ich nenne es Health Bar Shape. Wir haben ein Sprite für dieses Bild und ziehen es in
das Quellbildfeld. Wenn wir hineinzoomen, können
wir sehen, dass die Form
deformiert aussieht. Klicken Sie also auf die Schaltfläche
Native Größe festlegen. Jetzt hat das Bild identische
Abmessungen wie das Sprite. Wenn wir jedoch versuchen, die Höhe und Breite zu
ändern, verformt sich
die Form. Um das Problem zu beheben, wählen Sie den
Sprite Sprite Editor aus. Wir werden die Technik mit den neun
Folien anwenden. Es heißt neun
Folien, weil wir das Sprite
in neun Teile
unterteilen. Suchen Sie nach dem grünen Quadrat, dann können Sie
die grüne Linie nach unten ziehen und
sicherstellen, dass sie sich
unter den Ecken befindet. Das Ziel ist es,
Ecken von Seiten zu trennen. Stellen Sie bei dieser Linie sicher,
dass sie sich über den Ecken befindet. Dann haben wir eine linke
und eine rechte Ausrichtung. Sie können sehen, dass das Sprite in neun Teile unterteilt
ist. Die Ecken dehnen sich in
der Form nicht , nur die
Seiten dehnen sich aus. Änderungen anwenden. Wählen Sie dann das Bild aus und
ändern Sie den Typ in Slice. Sie können den Unterschied sehen,
wenn wir die Abmessungen ändern, die Form verformt sich nicht. Nett. wir mit der rechten Maustaste auf die Leinwand und erstellen Sie ein neues
leeres Spielobjekt. Ich nenne es Bar. Der Balken wird der Form des Gesundheitsbalkens ein übergeordnetes Objekt
sein. Wählen wir die Form aus. Gehe zu Anchor Presets
und dehne es aus. Halten Sie die Alt-Taste gedrückt und klicken Sie auf
die Strecktaste. Wenn wir die Abmessungen
der Health Bar ändern, die ein übergeordnetes Objekt ist, wird
die Form angepasst. Lassen Sie uns ein neues
untergeordnetes Bildobjekt erstellen. Ich nenne es
Gesundheitshintergrund. Ich werde das Quadrat von Sprite verwenden. Lass uns die Farbe ändern. Dann gehe zu Anchor
Presets und dehne es aus. Verschieben Sie es in
der Hierarchie um eine Stelle nach oben , sodass die
Form vorne sichtbar ist. Wenn wir die Ansicht vergrößern,
weil wir runde Kanten haben, ist
das Hintergrundbild außerhalb der Kanten
sichtbar. Wenn Sie eine andere Farbe wählen, wäre diese besser sichtbar. Um das Problem zu beheben,
ändern wir einfach die Abmessungen. Dann. Wir können ein
Kinderbild des Hintergrunds erstellen. Ich nenne es Gesundheitsfeld. Wir können auch den quadratischen
Sprite verwenden und ihn dehnen. Ändern Sie jetzt die Farbe. Ich wähle Gelb, ändere
dann das Bild
und wähle das Feld aus. Wir können einige Einstellungen sehen. Die Idee ist,
diese Füllmenge zu ändern , wenn
wir unsere Gesundheit ändern. Lassen Sie uns zunächst
die Füllmethode
von Radio auf Horizontal ändern . Dadurch erhalten wir das
gewünschte Verhalten. Beachten Sie, dass die
Füllmenge die Werte 0-1 hat. Lassen Sie uns die Ansicht verkleinern,
den Helfer auswählen und
die Anker in die
obere linke Ecke ändern . Halte die Maustaste gedrückt, um auch die Position
festzulegen. Passen Sie die Position ein wenig an. Vielleicht können wir die Farbe der
Form ändern , um die Kanten dicker zu machen. Lassen Sie uns die Größe etwas erhöhen. Also, das sieht gut aus. Mal sehen, wie es
im Simulator aussieht. Großartig. Gehen wir zum
Spielerstatistiken-Skript. Um Zugriff auf UI-Elemente
zu erhalten, müssen
wir zunächst den UI-Namespace einbeziehen. Dann können wir
eine Bildvariable erstellen. Ich nenne es Help Fill. Idee ist,
die Füllmenge jedes Mal zu ändern , wenn
der Spieler Schaden erleidet. Es ist auch eine gute Idee,
den Füllbetrag festzulegen , wenn
das Spiel beginnt. In der Startfunktion haben
wir also geholfen, diese
Füllmenge zu füllen, die der Gesundheit entspricht. Aber wie gesagt, der Wert muss 0-1 sein. Also teilen wir die Gesundheit
durch die maximale Gesundheit auf. Wir können diesen
Code kopieren und in den Player einfügen, die
Bildfunktion verwenden, und das ist alles, was
wir zum Codieren benötigen. In Unity. Ziehen Sie das
Gesundheitsfeld-Bild in den Bildschlitz. Lass es uns versuchen. Wie Sie sehen können, sind
wir bei voller Gesundheit. Lass uns Schaden nehmen. Nett. Die Health Bar reagiert. Ich werde
der Gesundheitsleiste weitere Elemente hinzufügen ,
damit sie besser aussieht. Das ist nicht unbedingt erforderlich. Also werde ich ein
Kinderbild der Form erstellen. Benutze das symbolbasierte
Sprite und ändere die Farbe. Der Anker muss in der
Mitte links angezeigt werden, um auch die Position festzulegen und die
Größe des Bildes ein wenig zu ändern. Es geht nach links. Ich nenne diese Ikone halt sie. Erstellen Sie dann ein
Kinderbild des Inhabers. Verwenden Sie das Hilfesymbol
Sprite und ändern Sie die Größe. Anker-Presets beziehen
sich auf das übergeordnete Element. Das muss also in der Mitte
sein, so
wie es ist. Jetzt. Wir können die Gesundheitsleiste auswählen und an der
richtigen Position platzieren. Fein. Vielleicht
sollten die Kanten etwas dicker sein. Wir können die Größe etwas erhöhen. Du kannst mit den
Einstellungen spielen, wie du willst, jedes Spiel ist anders. Das ist alles. Und wir sehen uns in der nächsten Vorlesung.
23. Sicherer Area: Hallo zusammen. In dieser Vorlesung untersuchen
wir ein kostenloses
Asset, das uns dabei hilft Ihre Elemente
für alle Geräte
anzupassen, z. B. hat
jedes Gerät einen sicheren Bereich, in dem die Elemente
garantiert richtig angezeigt werden. Sie können auf die Schaltfläche für den
sicheren Bereich klicken , um den sicheren Bereich
für dieses Gerät zu sehen. Jedes Gerät hat ein
anderes Design und eine andere Sicherheitszone. Lass uns das Gerät wechseln. ZB zeigt es April XR. Beachten Sie, dass die Leiste aufgrund der
unterschiedlichen Designs nicht vollständig sichtbar
ist. Idee ist also,
die Fersenleiste und
andere Benutzeroberflächenelemente für jedes Gerät im
sicheren Bereich zu platzieren . Zum Glück gibt es im Unity
Asset Store ein Asset namens Asset. Sie können den Google Safe Area Helper verwenden. Es sollte die erste Option sein. So sieht es
aus. Es ist kostenlos. Klicken Sie also auf Zu meinem Vermögen hinzufügen. Natürlich müssen Sie sich mit Ihrer Unity-ID
anmelden. Wenn du es nicht getan hättest. Danach klicken Sie auf In
Unity öffnen oder was auch immer eine Option ist. In Unity sollte der
Paketmanager geöffnet werden. Sie können sehen, dass der
Paketmanager die Option hat, meine Assets auf der Liste
sollten der Safe Area Helper sein. Dann müssen Sie es herunterladen. Das habe ich schon getan. Also habe ich einen Download-Button. Nachdem Sie die Assets heruntergeladen haben, klicken Sie auf die Schaltfläche Importieren. Wir brauchen die Demo-Szene nicht. Wenn Sie dieses Beispiel sehen möchten, es
gerne einbeziehen, aber wir benötigen nur dieses
Safe-Area-Skript. Im Projekt. Du solltest das Drehbuch sehen. Klicken Sie nun mit der rechten Maustaste auf die Leinwand und erstellen Sie ein leeres Spielobjekt. Nennen wir es eine sichere Gegend. Dann müssen wir
es über den Bildschirm strecken. Das sichere Bereichsobjekt
muss
der Health Bar und
anderen Benutzeroberflächenelementen, die
wir steuern müssen, übergeordnet der Health Bar und sein. Fügen Sie dann das Safe-Area-Skript hinzu. Stellen Sie sicher, dass conform
x und y aktiviert sind. Wenn wir nun auf Play drücken, befindet
sich die Gesundheitsleiste im sicheren Bereich. Wir können es auf anderen Geräten testen. Toll, es funktioniert perfekt. Wenn wir also z. B.
die ****-Leiste in der
oberen rechten Ecke haben die ****-Leiste in der
oberen rechten Ecke , ist sie
ohne dieses Asset überhaupt
nicht sichtbar. Aber mit dem Asset
sieht es genauso aus wie es sollte. Das ist alles für diese Vorlesung. Wir sehen uns im nächsten.
24. Explosion: In dieser Vorlesung lernen wir, wie man Animationen erstellt, z. B. wenn Objekte zerstört werden, verwenden
wir Explosionsanimationen.
Um organisiert zu bleiben. Lassen Sie uns einen neuen
Ordner für Animationen erstellen. Zuerst müssen wir die
Sprites finden, die wir verwenden werden. Im Feinde-Ordner. Wir können Explosions-Sprites sehen. Lassen Sie uns den
ersten in der Szene verwenden und ihn in Explosion
umbenennen. Wir können es in der Szene
aufgrund der
Reihenfolge in der Ebene nicht sehen , wir müssen es vergrößern. Ich möchte, dass diese Explosion vor allem
sichtbar ist. Ich denke, der
Spieler hat
zehn bestellt und ein transparenter
Hintergrund ist 12. Es ist gut, diese Dinge
aufzuschreiben. Also müssen wir noch
höher gehen. Stellen wir es auf 20. In größeren und
komplexeren Spielen empfehle
ich, mehr Sortierebenen zu erstellen und zu
verwenden. Öffnen wir nun einige
Animations-Tabs. Gehen Sie zu Window Animation und
öffnen Sie die Registerkarte Animation. Öffnen wir auch
den Animator-Tab. In der nächsten Vorlesung verwenden wir den
Animator-Tab für Animationsübergänge
. Stellen Sie dann sicher, dass Sie das
Objekt auswählen, das Sie animieren möchten. Um eine Animation zu erstellen, klicken Sie
auf die Schaltfläche Erstellen. Wählen Sie den
Animationsordner aus, den wir erstellt haben. Ich werde diese
Animationsexplosion als Beispiel bezeichnen. Wenn Sie sich das Objekt
ansehen, haben wir
jetzt die
Animator-Komponente, die über einen Controller verfügt. Das sind notwendige
Komponenten für Animationen. Gehen Sie zum Ordner Animations. Hier sehen Sie
den Controller und das von uns erstellte
Animationsbeispiel. Wählen Sie als Nächstes das
Explosionsobjekt aus und ziehen Sie alle Explosions-Sprites
in die Timeline. Mal sehen, wie es aussieht. Animation, aber es ist immer noch schnell. Wir müssen es verlangsamen. Wählen Sie die Explosion aus,
erweitern Sie die Optionen und wählen Sie Samplerate anzeigen. Jetzt können Sie die Bilder pro
Sekunde für diese Animation festlegen. Standardmäßig ist es 60, setzen
wir es auf 12. Es sieht viel besser aus. Sie können jedoch sehen,
dass sich die Animation wiederholt. Wir müssen zum Ordner
Animations gehen und unsere
Explosionsbeispielanimation
auswählen. Wir müssen Loop Time deaktivieren. Nett. Es ist eine gute Idee,
das Objekt zu zerstören , nachdem die
Animation abgeschlossen ist. Lassen Sie uns also ein neues C Sharps erstellen. Ich nenne es Explosion. Das Skript zum
Objekt. Öffne es. Wir benötigen die
Update-Funktion nicht. Am Anfang. Zerstören wir das Objekt mit einer Verzögerung von 2 s. Testen
wir es. Die Animation läuft
einmal und nach 2 s ist
das Objekt zerstört und wir können es in der Hierarchie sehen. Jetzt können wir ein Prefab erstellen. Löscht das Objekt
aus der Szene. Die Idee ist,
dieses Prefab zu spawnen, wenn Meteore oder der Spieler zerstört
werden. Da alle Gegner Wert auf diese Explosion legen, gehe
zum Feindskript. Lassen Sie uns eine
Spielobjektvariable erstellen. Gehen Sie jetzt zum Meter of Script. in dieser Sequenz, bevor
wir den Meteor zerstört haben Lassen Sie uns in dieser Sequenz, bevor
wir den Meteor zerstört haben, die
Explosion vorbauen. Wir können die Position und
Drehung des Mittelohrs verwenden. Lass es uns auch spawnen. Wenn das Messgerät
mit dem Spieler kollidiert. Gehe dann zum
Spielerstatistiken-Skript. Wir brauchen diese
vorgefertigte Grenzexplosion , wenn der Spieler stirbt. Das ist alles, was wir zum Codieren brauchen. Lassen Sie uns die Dinge in Unity verbinden. Wählen Sie den Player aus und
gehen Sie zum Ordner Prefabs. Ziehe das Explosions-Prefab
in den leeren Slot. Mach dasselbe für 3
m. Lass es uns versuchen. Wirf damit einen Meteor-
und Explosions-Spam. Das Gleiche passiert, wenn wir das Raumschiff
zerstören. Großartig. In der nächsten Vorlesung erstellen
wir Animationen für das Raumschiff und die
Übergänge zwischen ihnen.
25. Damage und Übergang: Hallo zusammen. In dieser Vorlesung erstellen
wir diese
blinkende Animation wenn der Spieler das Bild aufnimmt. Gehen Sie zunächst zum Ordner
Animations und erstellen Sie einen neuen Ordner
für den Player. Animationen. Wählen Sie den Spieler aus. Erstellen Sie dann eine Animation
und stellen Sie sicher, dass sie sich
im richtigen Ordner befindet. Die Animation
wird Idle genannt. Das Sprite, das wir brauchen, befindet sich
im Sprites-Ordner. Normalerweise bewegt
sich bei Animationen im Leerlauf das animierte Objekt etwas In diesem Fall verwenden
wir
jedoch nur
ein Standard-Sprite. Die Animation im Leerlauf wird
ein ästhetisches Sprite sein. Wähle also den Spieler aus, spielt den Sprite
zu Beginn. Und ich werde dasselbe
Sprite bei 1 s auf der Timeline platzieren. Lassen Sie uns nun
eine weitere Animation erstellen. Ich nenne es Schaden. Dann benutze den weißen Sprite. Ich werde die
Samplerate auf 30 ändern. Verwenden Sie dann erneut dasselbe Sprite platzieren Sie es
auf der Timeline bei 0,06. Da die Samplerate beträgt, wird die Dauer etwas länger
sein. Sie können den
Abstand zwischen den Frames vergrößern, um die
Dauer bei Bedarf zu erhöhen. Jetzt können Sie die Animation sehen, nur ein weißes Sprite. Um eine Vorschau der Animation anzuzeigen, können
Sie normalerweise die Schaltflächen Vorschau
und Wiedergabe verwenden. Als Nächstes müssen wir das
Looping für die
Schadensanimation deaktivieren . Dann gehe zum Animator und
wähle den Spieler aus. Jetzt kannst du den Status „Leerlauf“
und „Schaden“ sehen. Wir müssen die
Übergänge zwischen ihnen schaffen. Der Status Orange ist
die Standardanimation. der rechten Maustaste auf den
Ruhezustand und erstellen Sie einen
Übergang in den beschädigten Zustand. Machen Sie dasselbe in
entgegengesetzter Richtung. Klicken Sie auf den
Übergangspfeil, um einige Einstellungen zu sehen. Um von
einem Zustand in einen anderen überzugehen, verwenden
wir die Austrittszeit oder -bedingungen. Für diesen Übergang
werden wir Bedingungen verwenden. Wir müssen also Parameter erstellen und die Registerkarte Parameter
öffnen. Dann können wir vier Typen hinzufügen. In diesem Fall benötigen wir einen Auslöser. Nennen wir es Schaden. Wir werden diesen
Trigger über ein Skript aktivieren. Jetzt können wir die Exit-Zeit deaktivieren. Wir brauchen einen sofortigen Übergang. Setze das also auf
Null oder Bedingung. Lass uns den Auslöser benutzen. Wir haben gemacht. Beachten Sie, dass Sie mehr Parameter haben und
diese als Bedingungen verwenden können. Jetzt müssen beide Bedingungen erfüllt
sein, damit der
Übergang stattfinden kann. Natürlich brauchen wir
nur den Auslöser. Löschen Sie also dieses Beispiel und wählen Sie
dann den Übergang
von damage zu Idle. Hier verwenden wir die Ausgangszeit
anstelle von Bedingungen. Wenn wir die Ausgangszeit auf eins setzen, bedeutet
das, dass der Übergang
erfolgt, wenn die Schadensanimation
abgeschlossen ist. Wenn Sie z. B. die Austrittszeit auf 0,5
setzen, erfolgt der Übergang, wenn 50 Prozent der
Animation abgeschlossen sind. Setze das auf eins. Die Übergangsdauer muss Null
sein, zum Beispiel ändern. Jetzt, wo wir die
Einstellungen im Skript abgeschlossen
haben, müssen wir
den Schadensauslöser aktivieren , wenn
ein Spieler das Bild aufnimmt. Öffne das Spielerstatistikskript. Zuerst müssen wir
eine Animator-Komponente in
der Tech Damage-Funktion erstellen eine Animator-Komponente in , um den Trigger
zu aktivieren Wir verwenden einen beliebigen Datensatz-Trigger. In Klammern schreiben wir
den Namen des Parameters. Achte darauf, dass du
es richtig buchstabierst. Lass es uns versuchen. Vergessen Sie nicht, den Animator
zuzuweisen. Wir nehmen das Bild auf und wir können die Schadensanimation
sehen. Wenn Sie sie jedoch in einem sehr kurzen
Zeitraum
mehrmals
einnehmen , können
wir
das im Moment simulieren. In einer Situation, in der
mehrere Kugeln das Raumschiff
trafen, ging
die Animation jedoch mehrere Kugeln das Raumschiff
trafen, ging in den Spam-Modus über. Das Raumschiff würde
die
ganze Zeit in der Schadensanimation sein. Also verhindern wir das
im Script bei einer Bolt-Variablen und
setzen den Wert auf true. Dann überprüfen wir zuerst
, ob diese Variable wahr ist. Dann aktiviere die Animation. Und hier müssen wir auch eine Anti-Spam-Funktion
hinzufügen. Lassen Sie uns einen
Enumerator gegen Spam erstellen. Hier setzen wir die
Ballvariable auf false ,
damit wir
die Animation aktivieren können. Dann warten wir eine
gewisse Zeit. Ich setze die
Wartezeit auf 0,15. Dann setzen Sie die Kugelvariable zurück. Um diese Funktion aufzurufen, verwenden
wir Startcoroutine. Wenn der Spieler das Bild nun
mehrmals in einem
Intervall von 0,15
aufnimmt , wird
die Animation nur einmal
aufgerufen. Sie können das
Intervall verlängern, wenn Sie möchten. Und das war's für diese Vorlesung, wir haben Animationsübergänge.
26. Feind schießen: Hallo alle zusammen. In dieser Vorlesung
erschaffen wir einen schießenden Feind. Dies ist eine großartige Gelegenheit
, das Wissen aus
früheren Vorlesungen wie Bewegung,
Schießen und Animationen umzusetzen . Aber wir werden auch
ein paar neue Sachen lernen. Es wird also eine etwas
längere Vorlesung sein. Lass uns anfangen. Feinde zu erschießen, benutzen
wir zunächst ein lila Raumschiff. Ändere den Namen und
setze die Ebene dann auf Feind. Erhöhen Sie die Reihenfolge in
der Sortierebene. Denkt daran, dass alle Gegner auf Befehl fünf
gehen. Dann fügen wir Komponenten hinzu, starren Körper 2D, und
setzen ihn auf kinematisch. Anstatt den
Polygon Collider 2D zu verwenden, werden
wir zwei Book
Collider verwenden und sie dann zusammenführen. Fügen Sie also einen Box Collider 2D hinzu. Klicken Sie auf die Schaltfläche
Collider bearbeiten. Lass uns die Form ändern. Fügen Sie dann einen weiteren
Box Collider 2D hinzu. Ändern Sie erneut die Form. Das ist nicht besonders präzise, aber es ist leistungseffizient und es wird einwandfrei funktionieren. Um Collider zusammenzuführen,
verwenden wir den Composite Collider 2D Select, der von Composite
für jeden Collider verwendet wird. Beachten Sie, dass wir einen Collider
haben. Es gibt keine Linien
, die sich schneiden. Wählen Sie dann die
Option Ist Trigger im Composite Collider. Lassen Sie uns nun
Schießpunkte erstellen. Ich nenne das linke Kanaan. Bewegen Sie das Objekt in die
Aufnahmeposition. Dann duplizieren Sie es und
benennen Sie es um, um Canaan zu schreiben. Lege es auf die andere Seite. Lassen Sie uns ein Skript erstellen. Ich nenne es Purple Enemy. Wählen Sie den Feind aus
und fügen Sie das Skript hinzu. Öffne es. Zuerst. Diese Klasse muss eine
Kinderklasse der gegnerischen Klasse sein. Nur zur Erinnerung, die feindliche
Klasse hat einige Variablen und Funktionen, die von allen untergeordneten Klassen
vererbt werden, einschließlich der
lila gegnerischen Klasse. Im lila Feindeskript. Lassen Sie uns
zusätzliche Variablen erstellen. Zuerst benötigen wir einen
Schwebemotor mit variabler Geschwindigkeit. Dann brauchen wir Soll, Dimer und Schießintervall. Lassen Sie uns die
Transformationsvariablen
für die Aufnahmepositionen erstellen . Erstellen Sie dann eine
Spielobjektvariable für das Bullet-Prefab. Lassen Sie uns alle Variablen angeben, die wir
benötigen, um den Feind zu bewegen. Verwenden wir die
Starrkörpervariable, die wir von
der Elternklasse geerbt haben. Stellen Sie den Geschwindigkeitsvektor auf
unten multipliziert mit der Geschwindigkeit ein. Um zu schießen, müssen wir in der Aktualisierungsfunktion
einen Timer erstellen . Zuerst erhöhen wir den Soll-Timer mit jedem Frame um Time.DeltaTime. Dann prüfen wir, ob dieser Timer
größer oder gleich
dem Aufnahmeintervall ist . Wenn das stimmt, können wir schießen. Natürlich verwenden wir die Funktion
Instantiate. Instanziieren Sie das Bullet Prefab
im linken Can und positionieren Sie es mithilfe der
Quaternion-Identität für die Rotation. Dann können wir diesen Code
kopieren und einfügen. Ersetze einfach das linke Kanaan
durch das rechte Kanaan. Nach dem Tod müssen wir
nur zurücksetzen, sollte der Timer auf Null gehen. Jetzt kann
sich der Feind bewegen und schießen. Lassen Sie uns als Nächstes klären, wann der Feind
mit dem Spieler kollidiert. Da wir einen Trigger verwenden, benötigen
wir den On Trigger
Enter für die Funktion. Zuerst überprüfen wir mit
der
Vergleichsfunktion, ob das Objekt beim
Spieler ist . Dann können
wir über die Spielerzustände die Funktion „Spieler
nehmen Schaden nehmen“ aufrufen. Verwenden Sie die Schadensvariable, die
von der übergeordneten Klasse vererbt wird. Dann instanziieren wir
das Explosions-Prefab. Nach der Verschuldung. Wir vernichten den Feind. Alles, was wir im Drehbuch
gemacht haben,
ist also aus früheren Vorlesungen bekannt. Deshalb gehe ich ein
bisschen schneller. Lassen Sie uns nun
virtuelle Funktionen
außer Kraft und diese Sequenz später, wir werden
der Herdensequenz zunächst eine Animation hinzufügen.
In der Todessequenz, die aufgerufen wird, wenn
die
Gesundheit des Feindes unter Null liegt, instanziieren wir das
Explosions-Prefab. Dann zerstöre den Feind. Natürlich
dürfen Feinde nicht mit
dem Spieler kollidieren oder der Spieler zerstört den Feind
nicht. Das bedeutet, dass der Feind vom Bildschirm
verschwindet, um Objekte zu zerstören
, die vom Bildschirm verschwinden Wir verwenden die Funktion „
Unsichtbar geworden“. Speichern wir das und gehen wir zur Einheit über. In Unity
müssen wir Variablen setzen. Ich setze Gesundheit auf drei. Dann brauchen wir einen starren Körper. Bei Kollisionen
kann es sich um einen Schaden handeln. Verwenden Sie dann das
Explosionsfertigteil, das wir hergestellt haben. Stellen Sie die Geschwindigkeit z. B. auf fünf und das
Schussintervall auf eins, was 1 s bedeutet.
Verbinden wir einen linken und einen
rechten Schießpunkt. Dann müssen wir
ein Bullet Prefab erstellen. Gehen wir also zu Sprites. Wir haben dieses Bullet Sprite. Benennen Sie es um. Es ist zu groß. Lassen Sie uns also die Skala verringern. Ich finde das gut. Lassen Sie uns die
Reihenfolge in der Ebene ändern. Dann erstellen wir eine neue
Ebene für Kollisionen. Ich nenne es
feindliche Projektile. Setzt die Ebene auf
feindliche Projektile. Gehen wir zur
Kollisionsmatrix. Feindliche Projektile
müssen
mit dem Spieler kollidieren und
andere Kollisionen ignorieren. Fügen wir nun einen Rigid Body 2D hinzu und ändern den
Typ auf kinematisch. Fügen Sie dann Circle Collider 2D hinzu. Wir können
den Radius etwas verkleinern. Wir müssen ein Skript
namens Purple Bullet erstellen. Das Drehbuch zur Kugel. Öffne es. Wir brauchen Schadens- und
Geschwindigkeitsvariablen. Wir benötigen auch eine 2D-Variable für starre
Körper. in der Startfunktion Rufen
wir in der Startfunktion die 2D-Komponente des starren
Körpers ab. Die Kugel muss runter. Stellen Sie also den Geschwindigkeitsvektor auf
unten multipliziert mit der Geschwindigkeit ein. Wir benötigen die
Update-Funktion nicht. Lass uns dem Spieler Schaden zufügen, wenn
er mit einer Kugel kollidiert. Wir verwenden den On Trigger
Enter für die Funktion. Ich denke, dass ich in Unity vergessen habe, den
Collider als Trigger einzustellen. Das machen wir später. Hier
suchen wir wie gewohnt nach dem Spieler, rufen
dann die Funktion „Schaden
nehmen“ auf und zerstören
dann die Kugel. Wir verwenden auch die Funktion „Unsichtbar
geworden , um die Kugel zu zerstören, wenn
sie vom Bildschirm verschwindet. Das ist alles für das
Bullet-Skript. In Unity kannst du Schaden und
Geschwindigkeit festlegen und auch die Option
Ist Trigger aktivieren. Wir können ein vorgefertigtes Geschoss erstellen. Lösche einen aus der Szene. Wählen Sie nun den Feind aus und
verwenden Sie das vorgefertigte Geschoss. Lass es uns versuchen. Modiere den Feind
und drücke die Wiedergabetaste. Es funktioniert gut. Jetzt müssen wir
Animationen für den Feind erstellen. Wir benötigen dieses
Animationsfenster. Wähle den Feind aus und
erstelle eine Animation. Ich nenne es Enemy Idle. Benutze das lila feindliche Sprite. Lass uns eine weitere Animation erstellen
und sie Feindschaden nennen. Benutze den weißen Sprite. Stellen Sie die Samples auf 30 und verwenden Sie erneut das weiße Sprite. Gehe zum Ordner Animationen, wähle gegnerischen Schaden aus
und deaktiviere die Loop-Time. Gehen Sie jetzt zum Animator-Tab. Dies ist eine gute Praxis für Animationsübergänge, die wir in früheren Vorlesungen
behandelt haben . Lassen Sie uns zwei Übergänge erstellen. Erstellen Sie dann einen
Parameterschaden. Wähle den Übergang
vom Idol zum Schaden. Die Verwendung des Parameters
ist eine Bedingung. Die Dauer muss
Null sein und die Ausgangszeit
für einen weiteren Übergang deaktivieren Lassen Sie die Zeit stehen und
ändern Sie einfach die Dauer
des Übergangs auf Null. Gehe zum lila Feindesskript. Gehen wir eigentlich
zum feindlichen Drehbuch. Normalerweise
benutzen alle Gegner einen Animator. Lassen Sie uns also eine
Animator-Komponente erstellen. Gehen Sie dann zurück in
die Herdensequenz und aktivieren Sie den Übergang
mit dem Auslöser. Wählen Sie in Unity NME aus. Wir müssen den Animator beauftragen. Scrollen Sie nach unten und Sie werden es sehen. Erweitern Sie dies und
verwenden Sie den Animator. Lass es uns versuchen. Es funktioniert gut. Wir können auch eine
Anti-Spam-Funktion für den Feind erstellen, genau wie wir es für den Spieler getan haben. Aber ich werde Ihnen einen
anderen Ansatz zeigen. Im Emitter-Tab unter Ebenen sehen
Sie die Basisebene, sein Index ist Null und wir
werden ihn im Skript verwenden. Wählen Sie dann den
gegnerischen Schadensstatus aus. Im Inspektor
sollten Sie das Tag-Feld sehen. Verwenden Sie das IMG-Tag. Zurück zum Drehbuch. Zunächst prüfen wir, ob die
Animation bereits läuft. Wir verwenden die Funktion, aktuellen Animatorstatus
anhand des Index
der Basisebene
abrufen . Dann überprüfe, ob diese
Animation ein Tag hat. In diesem Fall das mg. Wenn das stimmt, bedeutet das, dass die Animation
gerade läuft. Also kehre einfach zurück,
aktiviere es nicht noch einmal. Das ist ein etwas anderer
Ansatz für dieselbe Sache. Das ist alles, was wir zum Codieren brauchen. Es gibt nur
noch eine Sache zu tun. Wir müssen ein
lilafarbenes Feind-Fertighaus erstellen. Und jetzt sind wir fertig. Wir haben einen schießenden Feind. Wir sehen uns in der nächsten Vorlesung.
27. Grüner Feind: Hallo zusammen, Willkommen
zur Enemy Challenge. Deine Herausforderung besteht darin,
ein zweites feindliches Raumschiff zu bauen. Das Raumschiff muss ein
ähnliches Verhalten wie Meter haben, nur ein bisschen schneller und
breiter sein, um die Animation zu beschädigen. Dies ist eine gute
Übung, um sich an
alles zu erinnern , was wir in
den vorherigen Vorlesungen gelernt haben. Okay, ich wähle das
Green Enemy Prefab aus. Du kannst sehen, dass er auf der Ebene Feind sein muss
. Die Sortierreihenfolge
muss fünf sein. Wenn Sie sicherstellen
möchten, dass sich Raumschiffe
vor Meteoren befinden, können
Sie die Anzahl der Meteore auf vier erhöhen oder
verringern. Sie können sehen, wir haben das
Green Enemy-Skript. Wir haben einen kinematischen, starren Körper. Wir sind hier für Collider
und einen Composite-Collider. Und wir haben einen Schätzer
für Animationen. Öffnen Sie jetzt das Script. Zuerst. Der Feind
muss eine Elternklasse sein. Wir verwenden eine variable
Geschwindigkeit, wie üblich. Wir stellen die Geschwindigkeit in
der Startfunktion ein. Für Kollisionen. Wir verwenden den On Trigger Enter
für die Funktion, dann verwenden wir den Hurt
und das sind Sequenzen. Im Grunde ist es ein
Copy-Paste-Code aus der vorherigen Vorlesung. Ich habe gerade die
Schießerei gelöscht. Am Ende haben wir in Unity
die eigene Funktion, die
unsichtbar geworden Unity
die eigene Funktion, die
unsichtbar Schauen wir uns die Animationsübergänge an. Wir haben zwei Animationen
und Übergänge, genau wie in der vorherigen Vorlesung, die
Einstellungen sind dieselben. Nun, da wir
zwei Gegnertypen haben, lasst uns in der nächsten Vorlesung einen feindlichen
Schraubenschlüssel erstellen. Wir sehen uns dort.
28. Feinder Spawner: Hallo zusammen. Wenn
wir nun irgendwelche Fertighäuser haben, erstellen
wir einen Schraubenschlüssel. Lassen Sie uns zunächst
ein leeres Spielobjekt erstellen. Setzen Sie die Transformationskomponente zurück. Als Nächstes erstellen wir das
feindliche Spawner-Skript. Das Skript zum Objekt. Öffne es. Da es sich um einen Spammer handelt, können
wir einen Code
des Meteors-Partners verwenden. Denken Sie daran, dass wir zunächst sicherstellen
müssen, dass sich
Objekte
außerhalb des Bildschirms erstrecken. Also geh zum Zähler-Partner. Lassen Sie uns diesen Teil kopieren,
den wir für Spawnpositionen verwenden. Sie müssen auch die Funktion „Grenzen setzen“ kopieren und einfügen
. Nett. Um das Skript zu organisieren, verwenden
wir den Attributheader
und nennen ihn enemy prefab. Lassen Sie uns eine Reihe von
Spielobjekten für feindliche Fertighäuser verwenden. Dann brauchen wir einen
Float Enemy Timer. Verwenden Sie dann das Attribut Space , um Platz
zwischen Variablen zu schaffen. Wir brauchen eine Float-Variable,
feindliche Spam-Zeit. Dann erstellen wir eine Funktion
, die Feinde spawnt. Lassen Sie uns zunächst den
Timer um die Zeit, die Delta-Zeit, erhöhen. Wenn dieser Timer größer oder
gleich der
Interreaktionszeit ist , müssen wir Feinde spawnen. Da wir zwei Gegner haben, wählen
wir nach dem Zufallsprinzip einen aus. Verwende zufällig den Bereich zwischen
Null und feindlicher Länge. Dadurch wird sichergestellt
, dass der Code
mit einer beliebigen
Anzahl feindlicher Prefabs funktioniert . Dann instanziiere den Feind
mithilfe des Random-Pick-Index. Für die Position verwenden wir die neue X-Koordinate des
Vektors 34. Verwenden Sie zufällige Positionen, die zwischen den Positionen
Maxilla links und Max.
Rechts angeordnet sind. für die Y-Koordinate Verwenden
wir für die Y-Koordinate meine Position. Und für die Z-Achse können
wir Null verwenden. Dies ist das gleiche
Verfahren wie zuvor. Für die Rotation können wir
Quaternion dieser Identität verwenden. Nach der Verschuldung setzen wir den Timer zurück. Rufen Sie diese Funktion im Update auf. Das ist alles, was wir zum Codieren brauchen. Gehen wir zu Unity. Lassen Sie uns feindliche Fertighäuser zuweisen. Dann können wir alle 2 s
einen Feind ausgeben. Lass es uns versuchen. Wir können den lila Feind sehen. Und wir können den grünen Feind sehen. Nett. Das ist alles. Wir sehen uns in der nächsten Vorlesung.
29. Win: Hallo zusammen. In dieser Vorlesung
erstellen wir eine Win-Condition. Die Idee ist, dass
der Spieler
eine bestimmte Zeit überlebt und
nach dem Tod das Spiel endet. Lassen Sie uns zunächst
ein neues Spielobjekt erstellen. Dann können wir ein Skript erstellen. Ich nenne es eine Gewinnbedingung. Das Skript zum
Objekt und öffne es. Wir brauchen einen Float-Dimer. Dann brauchen wir einen Float, der
möglich ist, wenn die Zeit variabel ist. Wir benötigen auch eine Reihe von Spielobjekten, die
wir für
Spawner in der Update-Funktion verwenden werden . Und lassen Sie uns den Timer für jedes Bild
um Time.DeltaTime erhöhen . Prüfen Sie dann, ob dieser Timer
größer oder gleich der
möglichen Uhrzeit ist . Wenn das stimmt, bedeutet
das, dass der
Spieler überlebt hat und wir Spawner deaktivieren können. Wir verwenden den for Loop Counter. Es ist Null. Wir gehen den Loop durch,
während I kleiner als
die Länge des Gründers ist , und
erhöhen ihn mit jedem Schritt um eins. In der Schleife deaktivieren wir
diesen Partner mit Index i. so genauer diese Schleife
erklärt wird, nehmen wir an, wir haben zwei
Spammer im Array. Die Indizes sind 0,1. Die Länge des Arrays beträgt zwei. Zähler I wird also am Anfang
Null sein. Dann prüfen wir, ob Null kleiner
als die Länge des
Arrays ist , die zwei ist. In unserem Beispiel ist das wahr. Also deaktivieren wir den
Spammer mit dem Index Null. Dann ist die Erhöhung von I um
11 weniger als zwei. Wir deaktivieren diesen
Partner mit Index eins, erhöhen I um eins. Jetzt sind zwei nicht weniger als zwei. Wir verlassen den Loop. Nachdem wir die Spammer deaktiviert haben, sind
einige der Gegner
immer noch auf dem Bildschirm da diese Gegner den Spieler
immer noch zerstören können. Ich nenne das ein
mögliches Wann. Wir müssen eine Funktion erstellen , die überprüft, ob der Spieler
am Leben ist , nachdem alle Gegner vom Bildschirm entfernt oder zerstört wurden Dann könnten wir einen
Gewinn- oder Verlustbildschirm anzeigen. All das werden wir
über den Game Manager machen. Ich schreibe diesen Code in Kommentare,
um Sie und mich daran zu erinnern was in
einem anderen Skript getan werden muss , und rufe ihn
dann hier auf. In der nächsten Vorlesung werden
wir einen
Panel-Controller entwickeln, Bildschirme verwaltet, die gewinnen oder verlieren. Gehen Sie vorerst zu Unity. Nehmen wir an, das ist möglich,
wenn die Zeit 10 s beträgt, dann müssen wir dem Array
Spammer hinzufügen. Wir haben Feinde und
Meteore, Pounder. Ich werde
das Höhere hier einfach ein bisschen organisieren. Lass es uns testen. Überlebe 10 s und dann
sollten die Feinde aufhören, Geld auszugeben. Ich werde versuchen, nicht zu sterben. Raster. Sie können sehen, dass die
Begrenzung gestoppt wurde. Der nächste Schritt besteht darin,
ein Win-und-Lose-Panel zu erstellen, was wir in der nächsten Vorlesung tun. Wir sehen uns dort.
30. UI - Text Mesh Pro: Hallo zusammen. Lassen Sie uns
Win-und-Lose-Bildschirme und ein Skript erstellen, das Funktionen zum Aktivieren
dieser Bildschirme enthält. Lassen Sie uns zunächst ein neues Bild erstellen. Ich nenne es ein Panel. Beachten Sie, dass dieses Bild nicht
in den sicheren Bereich gelangt. Als Nächstes können wir das
Quadrat als Quellbild verwenden. Dann müssen wir es dehnen. Dann ändere die Farbe. Ich werde Blake benutzen. Und machen wir es
ein bisschen transparent. Dann erstellen wir ein neues Bild. Es muss ein untergeordnetes
Objekt des Panels sein. Ich nenne es einen Win-Screen. Für das Quellbild verwenden
wir dieses
große Panel-Sprite. Beachten Sie, dass ich bereits neun Scheiben
gemacht habe. den neun Folien finden Sie in
der Health Bar-Vorlesung Weitere Informationen zu den neun Folien finden Sie in
der Health Bar-Vorlesung. Verwenden wir das Sprite und stellen Sie
sicher, dass der
Bildtyp in Scheiben geschnitten ist. Dann können wir
die Abmessungen ändern. Das Bild muss sich in
der Mitte des Bildschirms befinden. Mal sehen, wie es
im Simulator aussieht. Das ist gut. Sie können es nach Belieben
ändern. Lassen Sie uns nun Text
zum Venenbildschirm hinzufügen. Wählen Sie den Text Mesh Pro aus. Dies ist das erste
Mal, dass wir Text verwenden, also müssen wir
Text Mesh Pro importieren. Benennen wir es in when texts um. Dann passen wir
das richtige Wann an. Dies ist nicht das endgültige
Aussehen der Windschutzscheibe, dies ist nur eine Skizze
und ein Platzhalter. Im Moment geht es um
Funktionalität. Und später werden wir weitere Texte mit
drei Schaltflächen und
anderen UI-Elementen
hinzufügen . Dann lassen Sie uns die Windschutzscheibe duplizieren. Das nannte ich Loose Screen. Ändern Sie den Text auf Fehlgeschlagen. Okay, jetzt haben wir die grundlegenden Bildschirme zum
Gewinnen und Verlieren. Wählen wir das Panel und fügen nun die
Canvas-Gruppenkomponente hinzu. Die Canvas-Gruppe hat einige coole
Optionen, die wir kontrollieren können. Beispielsweise können wir
die Alpha-Einstellungen für
alle Objekte in der Gruppe ändern . Diese Bildschirme werden Schaltflächen haben. Um also Druck auf sie
auszuüben und mit ihnen zu interagieren, müssen
wir interaktive
En-Block-Raycasts aktivieren. Wir können das Alpha auf Null setzen. Dann deaktivieren wir auch die Bildschirme zum
Gewinnen und Verlieren. Lassen Sie uns ein neues
leeres Spielobjekt erstellen. Ich nenne es einen
Panel-Controller. Dann erstellen wir einen
Ordner für UI-Skripts. Erstellen Sie ein neues Script. Panel-Controller. Das Skript zum
Objekt und öffne es. Zuerst benötigen wir die
Canvas-Gruppenvariable. Dann müssen wir
Objektvariablen spielen. Eine für die Windschutzscheibe und
eine für den Louis-Bildschirm. Wir benötigen die
Update-Funktion nicht. Lassen Sie uns eine Funktion erstellen,
die die Windschutzscheibe aktiviert. Zuerst setzen wir den
Alphawert auf eins. Dann aktivieren wir die Windschutzscheibe. Lassen Sie uns auch eine Funktion erstellen , die den Bildschirm aktiviert. Es ist ein ähnliches Verfahren. Vorerst. Das ist alles, was wir
brauchen, um in Unity zu codieren. Lassen Sie uns Komponenten und
Objekte mit dem Skript verbinden. Wir benötigen die
Canvas-Gruppenkomponente aus dem Panel-Objekt und verbinden
dann die Bildschirme. Nun stellt sich die Frage
, wann und wie
Funktionen aufgerufen werden, die diese Bildschirme
aktivieren. Vielleicht denkst du, lass uns den Panel-Controller anschließen
und wann der Zustand. Tun Sie das nicht, anstatt eine direkte
Verbindung zwischen ihnen
herzustellen, erstellen
wir einen Game-Manager. Das ist eine Art
Vorbereitungsvorlesung. Im nächsten Video verbinden
wir das alles über den Game Manager. Wir sehen uns dort.
31. Game: Hallo zusammen. In dieser Vorlesung erstellen
wir einen Game Manager. Auch hier ist Manager ein Skript, das wichtige Aspekte
des Spiels
steuert , und es wird in
vielen anderen Skripten verwendet , um das Spiel korrekt
auszuführen. Lassen Sie uns zunächst
das Höhere hier ein wenig organisieren. Lass uns ein neues
leeres Spielobjekt erstellen. Ich werde die IT-Manager anrufen, da wir verschiedene
Manager im Spiel haben werden. Erstellen Sie als Nächstes erneut ein
neues leeres Spielobjekt. Ich nenne es End Game Manager. Dieser Manager ist, wie sein Name schon sagt, für
die Steuerung der
Funktionen verantwortlich , wenn das Level
endet oder der Spieler stirbt. Lassen Sie uns auch einen
Manager-Ordner für Skripte erstellen. Erstelle ein neues Script und nenne es End Game Manager. Das Skript zum
Objekt, und öffnen Sie es. Da dieser Game-Manager in vielen Skripten verwendet
wird, müssen
wir eine statische
Instanz dieser Klasse erstellen. Also haben wir public static geschrieben, den Namen der Klasse, die ein In-Game-Manager ist. Dann wählen wir einen Namen
für diese Instanz, ich nenne ihn End Manager. Dies ist nur eine leere Variable. Jetzt müssen wir der Weckfunktion, die
vor
der Startfunktion aufgerufen wird
, einen Wert zuweisen . Wir setzen die Instanz und den
Manager auf diese Klasse. Jetzt enthält alles, was diese
Klasse enthält, Variablen ,
Funktionen usw. Wir können es mit der
Endmanager-Instanz verwenden. Beachten Sie, dass das Schlüsselwort static uns einfachen
Zugriff auf andere Skripte
ermöglicht. Was bedeutet einfacher Zugang? Ich zeige Ihnen ein
sehr einfaches Beispiel. Lassen Sie uns ein Game-Over mit öffentlicher
Ballvariable erstellen. Gehen wir nun zum
Spielerstatistiken-Skript. Wenn der Gesundheitswert des Spielers kleiner oder gleich Null
ist, bedeutet
das, dass
das Spiel vorbei ist. Also können wir einfach
End Game Manager,
that End Manager, that
GameOver schreiben that End Manager, that und die
Variable auf true setzen. Beachten Sie, dass es
keine direkte Verbindung zwischen den Spielerstaaten
und den GameManager-Skripten gibt. Ich muss die
Get-Komponente nicht verwenden oder
irgendetwas in Unity verbinden. Das wird so funktionieren wie es ist. Jetzt. Lassen Sie uns
dem Endgame-Manager Funktionen hinzufügen. Wir müssen funktionieren,
wenn Spiel und Spiel verlieren, und
sicherstellen, dass sie öffentlich sind. Also können wir sie
in anderen Skripten aufrufen. Falls wir sie brauchen. In der Spielfunktion müssen
wir den Bildschirm aktivieren, das nächste Level
freischalten, die Punktzahl
speichern und so weiter. Lassen Sie uns vorerst einfach den Bildschirm
aktivieren. Gehen wir zum
Panel-Controller-Skript. Denken Sie daran, dass wir im
Panel-Controller-Skript Funktionen
erstellt haben ,
die Bildschirme aktivieren. Wir brauchen also eine Möglichkeit, sie
im Gamemanager-Skript zu verwenden. Jetzt zeige ich Ihnen die
Struktur, die wir bauen. Sie wissen, dass wir in
der Szene den
End Game Manager und den
Panel-Controller haben . Der Controller verfügt über
einige Funktionen , die Benutzeroberflächenelemente steuern. Wir haben auch das Objekt „
Venenzustand“ in der Szene. Im Win-Condition-Skript müssen
wir Funktionen aufrufen,
die UI-Elemente aktivieren. Wir haben auch einen
Spieler in der Szene, und wir müssen auch
UI-Elemente aus dem Testskript des
Spielers aktivieren . Wir könnten den
Player-Controller direkt mit
diesen Objekten im Unity Inspector verbinden oder die getc-Komponente verwenden. Aber das wollen wir vermeiden. Das ist nicht praktikabel. Und als Spielkosten wird
es immer mehr
Objekte geben und alles wird direkt mit
allem verbunden
sein. Es ist ein Chaos. Wir müssen nur
die Controller,
in unserem Fall den Panel-Controller,
mit dem Game-Manager verbinden . Und da der Manager statisch ist, hat
er einfachen
Zugriff auf alle Skripte. Beachten Sie den Vorteil, dass
alles über
einen Kanal läuft und das
ist der Game Manager. Der Trick besteht darin, den Manager
und die Controller effizient zu verbinden. Anstatt dass der Manager
nach dem Controller sucht, registriert
sich der Controller beim Manager. also im Manager-Skript Lassen Sie uns also im Manager-Skript die
Panel-Controller-Variable erstellen. Dann können wir eine
öffentliche Funktion für die
Registrierung erstellen und den
Panel-Controller registrieren. Es wird ein Parameter benötigt, Panel-Controller in der Funktion stellen Sie die
Panel-Controller-Variable auf PC ein. Gehen Sie nun zum
Panel-Controller-Skript. Die Startfunktion rufen wir
die Registrierungsfunktion auf, die wir erstellt haben. An die Funktion
werden wir diese Klasse übergeben. Beachten Sie, wie einfach das ist, da der Manager eine statische Klasse ist. Jetzt können
wir im Manager die
Panel-Controller-Variable verwenden, können
wir im Manager die
Panel-Controller-Variable verwenden um UI-Elemente zu aktivieren. Lassen Sie uns nun die
Ergebnisspielfunktion erstellen. Wenn das Game Over falsch ist, können wir das Gewinnspiel
oder
das Lewis-Spiel aufrufen. Gehen Sie jetzt zum Venenzustand über. Wenn die Zeit abgelaufen ist, deaktivieren
wir diese
Pounder und könnten direkt die
Ergebnisspielfunktion aufrufen. Das würde korrekt funktionieren. Es gibt hier keinen Fehler, aber wir haben ein kleines Problem. Wenn wir die Funktion „Spiel
lösen“ aufrufen, besteht die Möglichkeit, dass sich
immer noch einige Gegner
auf dem Bildschirm befinden . Diese Feinde könnten den Spieler
zerstören. Wir müssen also eine gewisse Verzögerung
zwischen der Aktivierung
dieser Partner und dem
Rückruf der Ergebnisspielfunktion an das
Manager-Skript
einführen zwischen der Aktivierung
dieser Partner und Rückruf der Ergebnisspielfunktion . Oder wir verzögern, wir verwenden Routinefunktionen. Lassen Sie uns die
Sequenzfunktion Eye
Enumerator Resolve erstellen . Wir können z.B.
2 s warten . Dann
rufen wir das Ergebnisspiel auf. Erstellen Sie nun eine öffentliche
Start-Resolve-Sequenzfunktion. Hier verwenden wir start correlating, um die Eye
Enumerator-Funktion
aufzurufen. Dies ist die Funktion
, die wir im
Windbedingungsskript
aufrufen werden . Beachten Sie, dass
der Timer diesen Code bei
jedem Frame
ständig ausführt, sobald die Zeit erreicht ist, zu der diese
Bedingung erfüllt ist. Also deaktivieren wir dieses
Spielobjekt einfach nach dem ersten Lauf. Toll, lass es uns versuchen. Wir müssen 10
s überleben . Dann werden die
Spinalnerven aktiviert. Und danach
haben wir zwei zusätzliche Sekunden, bis
der Bildschirm „Gewinn oder Verlust“ erscheint. Das hängt davon ab. Haben wir
diese zwei zusätzlichen Sekunden überlebt? Wie Sie sehen können, funktioniert es. Gehen wir nun zum
Spielerstatistiken-Skript. Nachdem der Spieler zerstört wurde, müssen
wir auch die
Startergebnissequenz aufrufen. Um mehrere Aufrufe
von verschiedenen Skripten zu vermeiden. Bevor wir den Vorhang öffnen, stoppen
wir die Strömung. Wenn es bereits aktiv ist,
verwenden Sie Stop Carotis. Wir müssen eine Zeichenfolge übergeben, aber wir können den Namen n verwenden, Resolve, Sequenz
wählen. Versuchen wir, den Spieler zu zerstören. Und wir sollten
einen losen Bildschirm sehen. Toll, das ist alles
für diese Vorlesung. Wir sehen uns im nächsten.
32. Singleton-Muster: Hallo zusammen. Lassen Sie uns das End
Game Manager-Skript
mit dem Singleton-Muster aktualisieren . Ein einzelnes Begriffsmuster
bedeutet, dass es sich im gesamten Spiel
nur um ein Objekt desselben
Typs handeln kann . Das bedeutet, dass wir
im gesamten Spiel
nur einen Endgame-Manager haben sollten . Dies ist sehr nützlich
für statische Klassen da wir auf die Leistung
achten müssen. Zu diesem Zeitpunkt
haben wir eine Szene. Nennen wir es Level eins. Dupliziere es jetzt und
nenne es Level zwei. Wenn wir von einer
Szene zur anderen wechseln, werden
alle Objekte aus der vorherigen
Zeichenfolge zerstört. Zum Beispiel gehen wir von Level
eins zu Level zwei. Alle Objekte von Level eins
sind zerstört und vereint, obwohl es neue Objekte sind,
die sich in einer Ebene verhalten, um all
diese Dinge miteinander zu verbinden. Wir kriegen ein Spiel. Wenn ein Spieler das
Spiel mehrmals spielt, kann
er es auf
verschiedenen Levels starten. Die Idee ist, den Manager irgendwie von
dem Level fernzuhalten, auf
dem die Spieler angefangen haben. Standardmäßig haben wir in
jeder Szene
einige Objekte und jede Sünde hat das Endgame-Manager-Objekt. Gehen wir also zum Ende des
Gamemanager-Skripts in der Weckfunktion. Zuerst prüfen wir, ob
die Instanz null ist. Dann setzen Sie die Instanz
auf diese Klasse. Dann verwenden wir die Onload-Funktion don't
destroy. Wir wollen
dieses Spielobjekt nicht zerstören. Nur um es dir zu zeigen, ich
werde das Spiel ausführen. Klicken Sie auf die Pause-Schaltfläche
und Sie können sehen, dass der Endgame-Manager in
einer anderen Szene namens
Don't Destroy Onload platziert
ist . Nehmen wir an, wir beginnen mit dem Spiel. Auf der ersten Ebene. Wir gehen zum Level, bis auf
alle Objekte außer dem Endgame Manager, der
wegen der Don't
Destroy Onload-Funktion zerstört
wird . Dieser Manager wird
auf die zweite Ebene gehen. Aber jetzt haben wir
zwei Spielmanager, einen aus dem ersten
Level und an einem anderen Tag war
es standardmäßig
im zweiten Level, wir müssen einen aus
dem zweiten Level des Skripts zerstören . Verwenden Sie else, was bedeutet, dass die
Endmanager-Instanz nicht Null ist. Dann zerstöre dieses Spielobjekt. Der GameManager von
Level zwei führt also
die Awake-Funktion aus
und die Instanz von End Manager wird nicht
Null sein, da sie sie von dem Manager
erkennt
, der aus Level eins kam. In unserem Beispiel, dem Manager von Level zwei, führen
wir diesen Teil des
Codes aus und zerstören sich selbst. Und das war's. Wir haben
ein Singleton-Muster erstellt. In den nächsten Vorlesungen werden
wir lernen, wie
man zwischen ihnen wechselt, denn wir sehen uns dort.
33. Levels/Szenen ändern: Hallo alle zusammen. Sehen wir uns an, wie wir uns
ändern können, seit wir
Schaltflächen zum Organisieren
der Hierarchie verwenden , seit wir
Schaltflächen zum Organisieren
der Hierarchie Erstellen
wir ein neues
leeres Spielobjekt. Nennen wir es Controller. Wir können den
Panel-Controller darunter platzieren. Lassen Sie uns nun ein neues Objekt erstellen und es Button-Controller nennen. Erstellen Sie dann ein neues
C-Sharp-Skript. Ich nenne es auch einen Button Controller beim
Script zum Objekt. Und öffne es. Zunächst zur Änderung,
da wir diesen
Ding-Management-Namespace
verwenden müssen , können
wir Standardfunktionen löschen. Lassen Sie uns nun ein Loadlevel-Rühring für öffentliche
Funktionen erstellen. Es benötigt einen Zeichenkettenparameter. Ich nenne es einen Levelnamen. Um eine weitere Szene zu laden, verwenden
wir den Scene Manager
, der die Szene lädt. Und dann
fügen wir die Zeichenfolge ein, die der
Name des Levels sein wird. Wir können auch neue Szenen
mit Ganzzahlen laden und den Index erstellen. Lassen Sie uns also eine öffentliche Int-Funktion auf
Load Level erstellen , die einen Index auf
Parameterebene verwendet. Stellen Sie sicher, dass die Funktionen öffentlich
sind. Hier. Wir verwenden auch Scene
Manager, der geladen wird, aber wir zahlen für den
Integer-Level-Index. Wo finde ich
Build-Indizes für Levels? Gehen Sie zur Unity-Datei
und erstellen Sie die Einstellungen. Hier findest du, da das im Spiel
enthalten sein wird, ist
unser Level eins enthalten. Und hier können Sie sehen, dass der
Build-Index Null ist. Wir können zum Ordner Szenen gehen und dem Gürtel eine zweite Ebene hinzufügen. Sie können sehen, dass
sein Index eins ist. Um also die Ebene für den Index zu laden, würden
wir eine
dieser Zahlen übergeben. Großartig. Lassen Sie uns nun Schaltflächen erstellen, damit wir die von uns
erstellten Funktionen aufrufen können. Wählen wir zunächst
das Panel aus und erhöhen Sie Alpha, damit wir
sehen können, was wir tun. Klicken Sie dann mit der rechten Maustaste auf die
Windschutzscheibe und erstellen Sie eine Schaltfläche. Ich nenne es Home-Button. Wir können den Text löschen. Lassen Sie uns das
Quellbild für die Schaltfläche ändern. Benutze das Home-Icon-Sprite. Klicken Sie auf die Schaltfläche
Native Größe festlegen. Und lassen Sie uns
die Ankervoreinstellung ändern. Wählen Sie unten die Mitte. Wir können es ein bisschen nach unten verschieben. Das sieht vorerst gut aus. Sie können sehen, dass die
Schaltfläche ein OnClick-Ereignis hat. Dies wird aufgerufen, wenn wir auf die Schaltfläche
klicken. Lassen Sie uns ein neues Ereignis hinzufügen. Die Idee ist, Funktionen
von der Tastensteuerung aus aufzurufen. Ziehen wir also den
Button-Controller. Dann wählen wir eine Funktion aus, aus dem
Button-Controller-Skript aufgerufen werden soll. Lassen Sie uns das Ladeniveau
der Zeichenkettenfunktion verwenden. Jetzt können wir den Namen der Szene schreiben,
die wir laden möchten. Später. Diese Schaltfläche führt
zur Hauptebenenauswahl, die wir jetzt nicht haben. Verwenden Sie also Stufe zwei. Sie könnten
die Funktion auch alleine verwenden, level int und
den Build-Index schreiben. In diesem Projekt werden
wir jedoch hauptsächlich
die Zeichenkettenoption verwenden. Wir verwenden ein Loading
mit der Rechnung, dem Index, nur um das Level
neu zu starten. Ich wollte
dir nur beide Optionen zeigen. Als Nächstes aktivieren wir einen
Verlierer-Bildschirm und erstellen zwei Schaltflächen. Zuerst werden wir auch Home-Button sein. Ändere die Position. Duplizieren Sie es und rufen Sie
diese Schaltfläche erneut auf. Ändere das Symbol. Jetzt können wir das
onclick-Ereignis zu den Schaltflächen hinzufügen, zur Home-Schaltfläche. Fügen wir eine Ladestufe
der Zeichenkettenfunktion hinzu. Lassen Sie es vorerst leer. Das werden wir später ändern. Verwenden Sie dieselbe Funktion
für die Wiederholungstaste. Hier können Sie den
Namen der aktuellen Szene schreiben, aber Sie
möchten nicht für
jede Wiederholungsschaltfläche
in jedem Level Zeichenketten schreiben . Das ist eine Menge Arbeit. Gehen wir also zum
Button-Controller-Skript. Erstellen Sie eine öffentliche
Neustartfunktionsebene. Wir verwenden den Scene Manager
, der die Szene lädt. Und dann verwenden wir, um
den Index der
aktuell aktiven Sünde zu erstellen . Also richtig, Scene Manager
, die aktiv werden, sehen, Klammern, dieser erstellte Index. Dadurch wird jedes Level neu gestartet,
in dem sich der Spieler befindet. also für die Wiederholungstaste Verwenden Sie also für die Wiederholungstaste die
Neustartfunktionsebene. Wir sind noch nicht fertig, aber lassen Sie uns versuchen, mögliche Fehler zu
erkennen, die Bildschirme zu
deaktivieren und
den Alphawert auf Null zu ändern. Lass uns versuchen zu gewinnen. Ich werde die Zeit ein bisschen beschleunigen. Sie können die Windschutzscheibe
und den Knopf sehen. Drücken Sie darauf und wir
sollten in Level zwei sein. Es funktioniert gut. Lass uns den Spielmodus verlassen
und ihn erneut starten. Versuchen wir nun, den Spieler zu
zerstören. Wir bekommen den Lewis-Bildschirm. Lass uns das Level neu starten. Ich werde auf die
Pause-Schaltfläche klicken, um Ihnen ein Problem zu zeigen. Ihr könnt sehen, dass die
Variable Game Over
immer noch gültig ist , auch wenn wir ihr Level
neu gestartet haben. Das liegt daran, dass der
Endgame-Manager ein
ästhetischer Singleton ist und alle
Variablen ihre Werte beibehalten haben. Wenn wir jetzt also
weiterspielen und zum Ende
des Levels kommen, wird immer noch
der falsche Bildschirm angezeigt. Zum Glück gibt es dafür eine
einfache Lösung. Gehe zu den Spielerstatistiken. In der Startfunktion setzen
wir den Wert auf false. Jetzt wird die Variable jedes Mal,
wenn wir Stufen
zugelassen haben , auf false gesetzt. Im
Windverhältnis-Skript können wir noch eine Sache machen. In der Aktualisierungsfunktion können
wir überprüfen, ob die
Gameover-Variable wahr ist. Dann kehre einfach zurück und
führe den folgenden Code nicht aus. Das bedeutet, dass der Timer
stoppt , wenn der Spieler zerstört
wird. Lass es uns jetzt versuchen. Hat den Spieler zerstört. Starte das Level neu. Ich habe versucht, es
nach dem Neustart zu gewinnen. Und wir bekommen die Windschutzscheibe. Jetzt funktioniert alles. Natürlich wollen wir keinen sofortigen Übergang
zwischen den Ebenen. Wir brauchen einen
Fading-Effekt , den wir
in der nächsten Vorlesung erzeugen. Wir sehen uns dort.
34. Verblassen zwischen den Szenen: Hallo zusammen. Lassen Sie uns zwischen den
Ladevorgängen einen schönen Fade-Effekt erzeugen. Da werde ich
diesen Effekt auf
einer separaten Leinwand erzeugen und auch das Singleton-Muster
lesen. Lassen Sie uns also eine neue Leinwand erstellen
und sie Canvas-Fader nennen. Ändern Sie es, um es
an die Bildschirmgröße anzupassen. Wir können auch die
Referenz, die Auflösung, ändern. Dann lassen Sie uns ein Bild erstellen. Ich nenne es Hintergrund
oder das Quellbild. Wir können das Quadrat verwenden, es
dann dehnen und die Farbe auf
Schwarz
ändern , um sicherzustellen
, dass dieses schwarze Bild vor anderen Elementen
auf
einer anderen Leinwand sichtbar
ist . Wir müssen die
Sortierreihenfolge dieser Leinwand erhöhen. Wählen Sie dann das Bild aus und fügen Sie
die Canvas-Gruppenkomponente hinzu. Idee ist,
den Alpha-Wert zu ändern , um den Fade-Effekt zu
erzeugen. Natürlich haben wir hier keine Schaltflächen und andere
interaktive Elemente. Wir können also
die Optionen Interactable und
Re-Cast deaktivieren , um den Alpha-Wert zu
ändern Wir könnten Animationen verwenden, aber für mobile Geräte ist das
Animieren von Benutzeroberflächenelementen teuer und nicht
gut für die Leistung. Die bessere Option ist also,
Skripte zu verwenden und den
Wert durch Code zu ändern. Lassen Sie uns ein neues
C-Sharp-Skript erstellen. Ich nenne es Fade Canvas. Fügen Sie das Script zum
Canvas-Fader hinzu und öffnen Sie es. Zuerst. Lassen Sie uns eine öffentliche statische
bezahlte Canvas-Instance erstellen. Dann erstellen wir ein
Singleton-Muster, genau wie wir es für
den GameManager getan haben. Dies ist eine gute Praxis
, um einige Dinge zu wiederholen. Jetzt brauchen wir Variablen. Erste Minute, eine Leinwandgruppe. Dann brauchen wir einen Float, eine
Änderung, einen Wert. Schwebe, warte, Zeit. Und mutig, Fade hat angefangen. Das sind alle Variablen, die wir brauchen. Wir können die
Aktualisierungsfunktion löschen. Um einen Fade-Effekt zu erzeugen. Wir werden Coroutinen verwenden. Lassen Sie uns die Einblendfunktion des
Eye-Enumerators erstellen. Diese Funktion macht den
schwarzen Bildschirm transparent. Lassen Sie uns zunächst den
Fade-Start auf Force einstellen. Diese Variable gilt nur wenn wir den Fade-Out-Effekt verwenden. Dann verwenden wir den While-Loop. Der Alphawert
ist zwar größer als Null, wir müssen ihn verringern. Lassen Sie uns also
den Alphawert
mit der Variablen Änderungswert verringern . Dann müssen wir
die Geschwindigkeit des Wandels festlegen. Verwenden wir nach jeder Änderung die Funktion wait 4 s und
die Variable wait time. Wir können diese
Funktion am Anfang aufrufen. Schauen wir uns an, was wir in Unity gemacht haben. Verwenden Sie die Canvas-Gruppe aus
dem Hintergrundbild. Die Änderungswertvariable
muss eine kleine Zahl sein. Ich setze es auf 0,04. Warte, die Zeit kann 0,01 sein. Lass es uns versuchen. Sie können sehen, dass wir einen
schönen Fading-Effekt haben. Wenn Sie
es länger machen möchten, können wir den Änderungswert
verringern
oder mit der Zeit erhöhen. Sie werden sehen, dass der Effekt
länger anhält, vielleicht zu lange. Also werde ich es kürzer machen. Zurück zum Drehbuch. Lassen Sie uns nun
den gegenteiligen Effekt erzielen. Das Bild sollte von
transparent nach schwarz wechseln. Erstellen Sie eine neue
Eye-Enumerator-Funktion, Fade-Out-Zeichenfolge, die einen Zeichenkettenparameter
benötigt. Jetzt wird der Glaube, der
variabel begonnen hat, wahr werden. Nun, obwohl der
Alphawert kleiner als eins ist, müssen
wir ihn erhöhen. Dann verwenden wir auch wait 4 s. Wir verlassen
die Steigung, wenn das Alpha
eins ist und das Bild schwarz ist. Dann müssen wir die Lautstärke erhöhen. Lassen Sie uns diesen
Szenenmanagement-Namespace einbeziehen. Dann können wir
eine Ladeszene verwenden und den Namen
der Zeichenkettenebene bezahlen. Danach starten wir erneut
den Fading-Effekt in der neuen Szene und das Hintergrundbild
wird wieder transparent. Wir können eine Wartezeit
zwischen dem Laden
und dem Fading-Effekt hinzufügen . Denken Sie daran, dass es
sich bei diesem Objekt um ein ästhetisches Einzelstück handelt, sodass es
beim Szenenwechsel nicht zerstört wird. Um sicherzustellen, dass wir nicht mehrere Anrufe
erhalten, können
wir überprüfen, ob Fade gestartet ist. Wenn das stimmt, dann verwende Yield Break. Lassen Sie uns nun eine öffentliche
Funktion bather load string erstellen. Hier starten wir
den Fade-Out-Effekt. Gehen Sie dann zu dem Tastencontroller , den wir in der
vorherigen Vorlesung erstellt haben. Denken Sie daran, dass
diese Funktion aufgerufen wird, wenn wir die Tasten drücken , um ein neues Level zu laden. Anstatt zu schweben,
da direkt, verwenden
wir die Funktion
aus dem Faith Canvas. In Unity. Vergewissern Sie sich einfach, dass Ihre Home-Taste
die Funktion der
Badezimmersteuerung verwendet . Das haben wir in der
vorherigen Vorlesung gemacht. Bevor wir es versuchen, duplizieren
wir dieses Level eins. Wir haben also die gleichen Komponenten. Lösche das alte Level, um das
Duplikat in Level zwei umzubenennen. Später, wenn wir
alle notwendigen Objekte erstellen , die in jeder Szene enthalten sein
müssen, haben wir eine Vorlage, Sünde und die Fertigerzeugnisse, aus denen
alle Sünden geschaffen werden können. Für. Jetzt kopieren wir
Szenen und fügen sie ein, um sie zu testen. Lass es uns versuchen. Wir sollten den Fading-Effekt sehen. Versuche dieses Level zu bestehen. Dann sollten wir den
Fade-Out-Effekt sehen und dann einblenden. Schon wieder. Es funktioniert. Jetzt habe ich
eine einminütige Herausforderung für dich. Versuchen Sie, eine
Fadeout-Funktion zu erstellen, die einen Int-Parameter
anstelle einer Zeichenfolge verwendet. Die Lösung ist ziemlich einfach. Wir können einfach den Code kopieren,
einfügen und festlegen dass die Ladeszene den Levelindex
annimmt. Wir müssen auch
eine öffentliche Funktion erstellen , um
die Integer-Version aufzurufen. Das Button-Controller-Skript. Wir verwenden diese Funktion
, um das Level neu zu starten. Auch hier, anstatt es direkt
aufzurufen, verwenden
wir die Funktion
vom Fader aus. Wir verwenden diese
Funktion nirgends, aber lassen Sie uns sie ändern. Vielleicht verwendest du es
irgendwo in deinem Spiel. Es muss die
Integer-Version aus dem Fader verwenden. Versuchen wir, das Level neu zu starten. Wir können die Auswirkungen sehen. Das ist alles für diese Lektion. In der nächsten Vorlesung erstellen
wir einen Ladebildschirm.
35. Ladebildschirm: Hallo zusammen. In dieser Vorlesung erstellen
wir einen Ladebildschirm. wir mit der rechten Maustaste
auf den Canvas-Fader und erstellen Sie ein Bild. Ich nenne es einen
Ladehintergrund. Wir müssen es dehnen und dann die Farbe ändern. Jetzt müssen wir die ****-Leiste
finden ,
da wir einige Elemente kopieren und
einfügen werden. Die Health Bar und machen Sie sie dort zu
einem untergeordneten Objekt der
Canvas-Seite. Lassen Sie uns einige
zusätzliche Elemente löschen. Wir brauchen den Symbolhalter nicht. Jetzt können wir
die Ladeleiste in der
Mitte des Bildschirms platzieren . Lassen Sie uns die Größe etwas erhöhen. Es muss ein untergeordnetes Objekt
des Ladehintergrunds sein. Das sieht gut aus. Gehen wir zum Fader-Skript. Lassen Sie uns zunächst
den UI-Namespace einbeziehen. Dann benötigen wir eine
Spielobjektvariable als Ladebildschirm
bezeichnet wird. Dann brauchen wir ein Bild,
die Ladeleiste. Suchen Sie nun die Fade-Out-Funktion. Wir können diesen
Code auskommentieren, da wir die asynchrone Zusammenarbeit
verwenden werden , um Levels zu laden. Der asynchrone Vorgang gibt
uns die Möglichkeit, den Ladestand als Hintergrundprozess festzulegen sodass wir
den Fortschritt weiter verfolgen können. Durch die asynchrone Zusammenarbeit erhalten
wir Zugriff auf den
Fortschritt, der 0-1 geht. Wenn das Level vollständig geladen ist, ist
der Fortschritt nicht
wirklich eins, sondern 0,9. Dieser Unterschied von 0,1 ist der Bull-Variablen
vorbehalten , also
erlauben Sie die Aktivierung von Sin. Wir können diese Variable kontrollieren. Und wenn wir ihn auf False setzen, nächste Level vollständig im Hintergrund
geladen ist darf der Fortschrittswert
0,9 nicht überschreiten,
auch wenn
das , und wir können nicht
zum nächsten Level gehen. Wenn wir diese Variable auf
true setzen und das Level vollständig geladen
ist, ist
der Wert eins und wir können zu einem neuen Level wechseln. Eine weitere wichtige
Variable ist fertig. Diese Variable ist wahr, wenn
der Fortschrittsbalken eins ist,
was bedeutet, dass die Ebene voll
geladen zulässige Sinaktivierung
und ihre Kraft nicht aktiviert sind. In jedem anderen Fall. Wir werden diese Variablen verwenden
, um eine Ladeleiste zu erstellen. Zuerst erstellen wir eine asynchrone
Operationsvariable, deren Wert wir über
Scene Manager
abrufen, der seen Async
zugelassen hat. Dadurch wird eine neue
Szene im Hintergrund geladen. Dann setzen wir die
Sin-Aktivierung auf Falsch. Wir haben also die Kontrolle. Wir müssen
den Ladebildschirm aktivieren. Und wir können die Füllmenge der
Ladeleiste auf Null setzen. Jetzt verwenden wir eine While-Schleife. Solange der asynchrone Vorgang ausgeführt
ist, entspricht dies Falsch, was bedeutet, dass die
Ebene nicht vollständig
geladen ist oder die Aktivierung auf „Falsch“ gesetzt
ist. Wir legen den vollen Betrag für den
asynchronen Fortschritt der Zusammenarbeit fest. Da der Wert auf 0,9 geht, müssen
wir ihn durch 0,9 teilen. Hier müssen wir keine
Warte 4 s verwenden. Wir können einfach
Null zwischen diesen
Codezeilen zurückgeben . Wir können überprüfen, ob der
Fortschritt 0,9 beträgt. Das bedeutet wiederum, dass das Level im Hintergrund vollständig geladen
ist. Dann erlauben wir die Aktivierung der Sünde. In diesem Moment wird die Variable wahr
und wir verlassen die while-Schleife. Wir können diese Codezeile löschen. Jetzt können wir den Code kopieren. Fügen Sie den Code in eine andere
Ausblendfunktion ein. Nur um den
Levelnamen durch den Levelindex zu ersetzen. Wir müssen noch eine Sache
in der Einblendfunktion tun, wir müssen
den Ladebildschirm deaktivieren. Gehen Sie jetzt zurück zu Unity. Bevor wir
Objekte mit dem Skript verbinden, sollten wir sie umbenennen, damit wir sie nicht mit
der tatsächlich gehaltenen Leiste
verwechseln. Verwenden Sie dann den Ladehintergrund als Ladebildschirmobjekt. Für das Bild der Ladeleiste. Lass uns eine Ladung verwenden. Lass es uns versuchen. Wenn dieses Level. Dann geh zum nächsten. Beachten Sie, dass, da
das Level zu
klein ist und wir auf dem PC testen, das Laden zum Einfügen
erfolgt und wir können es sehen. Auf einem mobilen Gerät würden
Sie den Fortschritt jedoch in
der Ladeleiste sehen. Noch ein Trick: Wenn der Fader Canvas
Ihre Ansicht in der Szene verdeckt, können
Sie ihn
mit diesem Button ausblenden. Und das ist alles für diese Vorlesung. Wir sehen uns im nächsten.
36. Upgrade/Fix Fade Effekt: Hallo zusammen. Das ist Mario aus der Zukunft. Später im Kurs fiel
mir ein Fehler
im Fading-System auf. Es ist sehr spezifisch,
aber wir müssen
es angehen und es mit nur
zwei Codezeilen beheben. Wenn Sie
in Unity oder im
Code etwas sehen , das wir noch
nicht gemacht haben. Mach dir keine Sorgen. Das liegt daran, dass ich dieses Video nach
einigen Folgen
aufgenommen habe und beschlossen habe, es
hier im Kurs zu platzieren. Ich werde dir schnell den Bug zeigen. Hier habe ich Protokolle zum Debuggen platziert, eines für das Ausblenden und eines
für den Fade-Out-Effekt. Wählen Sie den Canvas Fader aus. Jetzt werde ich einfach
den Fade-Effekt verlängern. Es wird einfacher sein, den Fehler zu
replizieren. Ich werde es auch verwenden, da das, was wir
in Zukunft
machen, einfacher zu verstehen sein wird. Ich habe ein Etikett mit
Oszillationen gesehen. Diese Taste startet
den Fade-Out-Effekt und führt zu einem neuen Level. Zuerst kann man sehen, dass
alles funktioniert. Aber es gibt einen Fall, wenn ich die Taste
drücke und
die Fade-Out-Funktion aktiviere , während
das Fade-In noch läuft, dann kämpfen zwei While-Loops gegeneinander. Lassen Sie uns die Taste drücken, solange der Fading-Effekt noch aktiv
ist Sie können ihn in der Konsole sehen. Gleichzeitig verringern und
erhöhen
wir den Alphawert. Aus diesem Grund können wir
zum nächsten Level übergehen , da der
Bildschirm niemals schwarz wird. Wir können es auf verschiedene Arten beheben. Mein Weg ist, zur Fade-In-Funktion zu
gehen. In der Warteschleife können
wir überprüfen, ob die von der Fed
gestartete Variable wahr ist. Das heißt, wir haben
den Fade-Out aktiviert, dann den Loop unterbrochen und
den Loop verlassen. Das ist alles, was wir tun müssen. Wenn ich jetzt die Taste drücke, stoppt
der Fading-Effekt und der Fade-Out-Effekt
wird übernommen. Wenn Sie ein anderes
Verhalten wünschen, muss z. B. dieser Fading-Effekt beendet sein. Dann können Sie
die Ausblendfunktion
für den Alphawert einchecken . Wenn es nicht Null ist, unterbrechen
Sie
diese Funktion und beenden Sie sie. Jetzt können wir die
Taste drücken, aber es
wird nichts passieren, bis
das Ausblenden abgeschlossen ist. Es liegt an dir, die
beste Option für dein Spiel zu wählen. Danke fürs Zuschauen und wir
sehen uns in der nächsten Vorlesung.
37. Font: Hallo zusammen. In dieser Vorlesung gehen
wir durch den
Prozess der Erstellung von Font-Assets für unsere
Texte Mesh Proud Text. Ich werde den Schriftartenordner
vom anderen Bildschirm ziehen. Den Link zur
Download-Seite finden Sie
im Ressourcenordner. Sie können dieselbe
oder eine andere Schriftart verwenden, die Sie möchten. Klicken wir nun mit der rechten Maustaste auf die
Leinwand und erstellen Sie einen Text. Ich werde es schnell umbenennen. Sie können sehen, dass dies die Standardschrift
ist. Wir können versuchen, es direkt zu
ändern, aber es wird nichts passieren. Wir müssen ein
Schrift-Asset erstellen, um die Schrift zu ersetzen. Gehen Sie zu Windows, Text Mesh Pro
und öffnen Sie den Font-Asset-Creator. als Quell-Schriftdatei Verwenden Sie als Quell-Schriftdatei die gewünschte Schriftart. Sie können einige Einstellungen sehen, wir können die Standardeinstellungen beibehalten. Die vielleicht wichtigste
Einstellung ist der Rendermodus. Für diese Schrift ist die
Standardeinstellung gut. Wenn Sie pixelige Schriften verwenden, ist
Arrest oder Mode besser. Es hängt also von den Schriftansichten ab. Sie können verschiedene Optionen ausprobieren. Klicken Sie dann auf die Schaltfläche Generate
Font Atlas. Dann können wir das Schrift-Asset speichern. Ziehen Sie nun das von Ve erstellte Asset
in das Font-Asset-Feld. Und Sie können die neue Schrift sehen. Sie können mit
einigen Einstellungen spielen, um das
Mesh Pro-Textpaket zu exportieren. Wir können auch
die Schrift ersetzen, die wir für die
Sieg-und-Lose-Bildschirme
verwenden. Löschen Sie den Testtext. Nachdem Sie alle Objekte aktiviert
und Canvas Alpha auf eins gesetzt
haben, können Sie das Ergebnis sehen. Nett. Das ist alles für diese Vorlesung.
38. Punktesystem: Hallo zusammen. Lassen Sie uns
ein Punktesystem erstellen, in dem ein Spieler jedes
Mal Punkte erhält, wenn er Feinde zerstört. Wir werden das Ergebnis in
der oberen rechten Ecke zeigen. Also muss es
in den sicheren Bereich gehen. Klicken Sie mit der rechten Maustaste auf den sicheren
Bereich und erstellen Sie den Text. Ändern wir die Ankervoreinstellung
in die obere rechte Ecke. Halten Sie Alt und Shift gedrückt und klicken Sie. Lass uns die Position ein bisschen ändern. Wir können den
Textbereich ein wenig erweitern. Wir können die Schrift ändern. Dieses Schrift-Asset haben wir
in der vorherigen Vorlesung erstellt. Lassen Sie uns die Ausrichtung ändern. Ich werde die Mitte wählen, aber vielleicht kannst du
die linke Ausrichtung belassen. Das geht auch in die Mitte. Schreiben wir nun
eine Punktzahl von 1.000. Beachten Sie, wie der Text
in der nächsten Zeile dargestellt wird. Um das zu verhindern,
müssen wir die Überlappung deaktivieren. Lassen Sie uns den
Textbereich etwas weiter erweitern. Natürlich können Sie
die Schriftgröße ändern, wenn Sie möchten. Ich lasse es so wie es ist. Gehen wir zum Ende des
Game-Manager-Skripts. Wir werden das Textnetz pro
Paketkomponenten
im Skript verwenden , wir müssen
den DNS-Namespace einschließen. Dann erstellen wir eine
Textkomponentenvariable. Jetzt benötigen wir eine Referenz
für diesen Text. Lassen Sie uns eine öffentliche Funktion erstellen , um den Partiturtext zu registrieren. Jetzt können wir zu Unity gehen, um ein neues C-Sharp-Skript zu
erstellen. Ich nenne es
Punkteregistrierung. Das Skript zu dem Text, den
wir zuvor erstellt haben. Wir brauchen die
Aktualisierungsfunktion nicht, wir brauchen den
DNS-Namespace. Am Anfang. Lassen Sie uns eine Textkomponente erstellen. Da sich das Skript auf
dem Objekt befindet , das
eine Steuerkomponente hat, können
wir die Get-Komponente verwenden. Dann können wir den Text
beim Endgame-Manager registrieren. Es ist eine gute Idee, den Textwert auf den
Standardwert eins
mit einer Punktzahl von Null
zu setzen. Gehe zurück zum Game
Manager-Skript. Jetzt können wir einen Variablenwert
vom Typ int erstellen. Lassen Sie uns eine
Funktion erstellen, die die Punktzahl
erhöht
und den Text aktualisiert. Es muss
einen Int-Parameter annehmen. Zuerst erhöhen wir die Punktzahl. Dann aktualisieren wir den Text. Da die Punktzahl eine Ganzzahl ist, müssen
wir
sie in eine Zeichenfolge konvertieren. Großartig. Die Idee ist, diese Funktion
jedes Mal
aufzurufen , wenn der
Feind zerstört wird Gehen wir zum feindlichen Skript. Im Feindeskript in der
Schuldensequenzfunktion, die jedes
Mal aufgerufen wird, wenn der Feind stirbt, nennen
wir den Scoretext aktualisieren. Natürlich müssen wir
eine Variable an die Funktion übergeben. Lassen Sie uns also einen
Variablen-Score-Wert vom Typ int erstellen. Dieser Wert
erhöht die Punktzahl. Beachten Sie, dass dies alles
in der übergeordneten Feindklasse erfolgt. Wir müssen die Kinderklassen aktualisieren. Fangen wir mit
dem Meteor-Skript an. Wenn wir
diese Sequenz überschreiben, müssen
wir die
Basis diese Sequenz nennen. Das nennen wir alles
aus der Basisklasse. Machen wir dasselbe mit den
lila und grünen Feinden. Gehe zu Unity. im Ordner Prefabs Wählen Sie im Ordner Prefabs die Option NME-Prefabs aus und wählen Sie den Punktewert
für jedes von ihnen aus. Ich werde
für alle zehn wählen, aber Sie können
verschiedene Werte wählen. Lass es uns versuchen. Wenn wir Feinde zerstören, erhöht
sich die Punktzahl um zehn. Großartig. Natürlich möchte
ich die Punktzahl und die höchste Punktzahl
auf
dem Bildschirm „Gewinnen oder Verlieren“ anzeigen . Danach müssen wir auch
den Spielstand zurücksetzen, gehen Sie zum End Game
Manager-Skript. Wenn Sie sich erinnern, haben wir
die Funktionen „Gewinnen“ und „Verlieren“. Hier habe ich erwähnt, dass wir
etwas gegen das Ergebnis unternehmen müssen. Wir müssen die Punktzahl anzeigen, höchsten Punktzahl
für dieses Level
suchen und dann die Punktzahl zurücksetzen. Um all das zu tun, müssen
wir etwas
über das Speichern und Laden von Daten wissen, was wir in
den nächsten Vorlesungen lernen werden. Wir sehen uns dort.
39. Playerprefs: Hallo alle zusammen. Dies ist ein kurzes Video,
das die Syntax der Player-Einstellungen erklärt. Anhand einfacher Beispiele werden wir
sehen, wie Basisdaten gespeichert und
geladen werden. Ich habe ein Beispielskript erstellt. Du musst es nicht schreiben. Folgen Sie einfach und versuchen Sie, sich die Syntax zu
merken. Hier habe ich drei Variablen
, die ich speichern möchte. Beachten Sie, dass ich
drei Datentypen verwendet habe , die wir mit den Spielereinstellungen speichern
können. Und das sind Integer,
Float und String. Um Daten zu speichern,
verwenden wir PlayerPrefs, die den Typ festlegen und dann
auswählen. Im ersten Beispiel verwenden wir
set int in Klammern. Zuerst schreiben wir den Zeichenkettenschlüssel
, der den von uns gespeicherten Wert enthält. Sie können es nach Belieben benennen. Ich habe int k gewählt, dann schreiben wir den zu speichernden Wert, in diesem Fall Beispiel int. Dieselbe Logik gilt beim Speichern von Float- und
Zeichenkettenwerten. Wie lade ich also gespeicherte Werte? Wir werden diesen Fall verwenden. Ich habe auch Variablen erstellt
, in die wir
die gespeicherten Werte laden. Um die Werte zu laden, verwenden
wir PlayerPrefs, die wir bekommen, natürlich können wir
Integer, Float oder String bekommen. In Klammern schreiben wir
den Schlüssel zum Laden von Werten. Der Schlüssel lädt also den von uns gespeicherten
Int-Beispielwert. Achte nur darauf, dass
du
das K richtig schreibst . Wenn dir ein paar
Feuerzeuge oder so fehlen, funktioniert
das nicht. Der zweite Teil in
Klammern ist optional. Es bestimmt den Standardwert wenn wir zuvor nichts
gespeichert haben. In diesem Fall
kann es sich um einen beliebigen Wert handeln. Ich habe es einfach auf
Null gesetzt und nichts. Um gespeicherte Werte zu löschen. Wir verwenden die
Tastenfunktion Löschen in der Klammer, wir schreiben den Zeichenkettenschlüssel
, den wir löschen müssen. Außerdem besteht die
Möglichkeit, alle gespeicherten Daten mit der Funktion Alle
löschen zu löschen. Beim Testen kann es natürlich unpraktisch sein, alle gespeicherten Daten aus
dem Code zu
löschen. In Unity können wir also zu Bearbeiten gehen. Und hier haben wir den Befehl „
Alle Spielereinstellungen löschen“. Das ist alles für diese Vorlesung. Jetzt, da wir die Syntax kennen, können
wir ein
Highscore-System erstellen.
40. Score/High Score speichern und laden: Hallo zusammen. Jetzt, da wir die
Player-Pref-Syntax kennen, können
wir ein System zum Speichern
und Laden erstellen. Das Ziel dieser Vorlesung
ist es, die Punktzahl
für jedes Level zu speichern und eine hohe Punktzahl zu
ermitteln. Gehen wir zum Ende des
Game-Manager-Skripts. Wir müssen eine
Funktion erstellen, die
den Punktestand speichert und den
Highscore bei Bedarf aktualisiert. Erstellen Sie also die
Score-Set-Funktion. Verwenden wir die Spielereinstellungen set int. Der Schlüssel ist die Partitur Kombination mit dem Namen
der aktuellen Szene. Auf diese Weise
wird jedes Level eine andere Tonart haben, und genau das wollen wir, weil jedes Level seine eigene Punktzahl hat. Der Wert, den wir speichern, ist
natürlich das Ergebnis. Dann erstellen wir einen
in einen variablen Highscore. Wir verwenden den Wert get int. Der Schlüssel wird der Highscore in
Kombination mit dem Szenennamen sein. Der Standardwert
muss Null sein. Dann prüfen wir, ob die Punktzahl höher
ist als die Höchstpunktzahl. Das stimmt, dann ist die Punktzahl ein neuer Highscore
und wir können ihn speichern. Verwenden Sie den
Schlüssel mit der höchsten Punktzahl und speichern Sie den
Punktewert für diesen Schlüssel. Das Letzte, was wir brauchen,
ist die Punktzahl zurückzusetzen. Jetzt müssen wir diese Funktion
in den Funktionen Win und Lose
aufrufen . Stellen Sie nur sicher, dass Sie es anrufen,
bevor wir die Bildschirme aktivieren. Das ist wirklich wichtig
für den nächsten Schritt. Das ist alles, was wir
im Game-Manager Unity tun müssen. Ich möchte die Punktzahl und die höchste Punktzahl auf
den
Gewinn- und Verlustbildschirmen anzeigen . Wählen wir das Panel aus und erhöhen Alpha auf eins, damit wir
sehen können , was wir tun, um die Windschutzscheibe zu
aktivieren. Wir müssen diesen Bildschirm organisieren und einige Textkomponenten hinzufügen. Lass uns die Farbe ändern und den Anker
auf die obere Mitte setzen. Wir können diesem Text zusätzliche
Effekte hinzufügen. Die Unterlage wurde aktiviert. Ich werde weiße Farbe
mit geringerer Opazität verwenden. Jetzt können Sie mit den
Einstellungen spielen und den Offset ändern. Ich finde das sieht gut aus. Jetzt benötigen wir den Text für
Score und Highscore. Duplizieren Sie diesen Text und benennen Sie ihn um. Wir müssen die
Anker in der Mitte ändern. Passen Sie den Textbereich ein wenig an. Natürlich brauchen wir
eine kleinere Schrift. Ändere den Text, damit wir eine bessere Vorschau
haben. Die Ausrichtung muss beibehalten werden. Bei Bedarf können wir die
Überlappung auch deaktivieren. Verschieben wir es nach unten. Dann dupliziere es. Das wird das Ergebnis sein. Ändere die Farbe und benenne sie um. Ihre kleine Herausforderung besteht darin, dasselbe für
den Lewis-Bildschirm zu tun . Dies ist das Endergebnis. Wie Sie sehen können, habe ich
die Farbe für diesen Bildschirm geändert. Lassen Sie uns sie deaktivieren und Alpha auf Null
zurücksetzen. Lassen Sie uns ein neues
C-Skript erstellen , das
für die Anzeige der Spielstände auf den
Gewinn- und Verlustbildschirmen verantwortlich sein wird . Und öffne es. Löschen Sie die Standardfunktionen. Wir müssen die TM Pro
en Scene Management-Namespaces einbeziehen . Erstellen Sie dann zwei Textvariablen, eine für die Punktzahl und
eine für den Highscore. Dann verwenden wir die eigene
Aktivierungsfunktion. Das bedeutet, dass der Code
jedes Mal ausgeführt wird , wenn wir das Objekt
aktiviert haben, und dieses Skript wird Bildschirmobjekte gewinnen und verlieren. Zuerst erstellen wir einen
lokalen Variablenwert ,
in den wir
den Score-Wert laden. Verwenden Sie die Funktion get. Der sicherste Weg, den Schlüssel
richtig zu schreiben , besteht darin, ihn zu kopieren und einzufügen, zum Endspielmanager zu
gehen
und den Punkteschlüssel zu kopieren. Der Standardwert kann Null sein. Lassen Sie uns nun den
Text mit dieser Variablen aktualisieren. Machen Sie dasselbe für den Highscore. Achte nur darauf, dass du den richtigen Schlüssel
kopierst. Das ist alles, was wir zum Codieren brauchen. Gehen wir zu Unity. Füge das Script zu den „
Gewinnen und Verlieren“ -Bildschirmen hinzu. Jetzt müssen wir eine Referenz
für die Textvariablen einrichten. Verwenden Sie den Highscore- und
Score-Text , den wir zuvor erstellt haben. Und das ist es, was wir versuchen können. Sie können die Punktzahl und
die höchste Punktzahl sehen. Jetzt. Es ist dann, lass es uns noch einmal spielen. Sie können aktualisierte Werte sehen. Vielleicht sind die Bildschirme zu klein, also zögern Sie nicht,
die Abmessungen zu ändern. Wir sehen uns im nächsten Video.
41. Scene: Hallo zusammen. In dieser Vorlesung bereiten
wir Sünden vor, sodass wir leicht eine Anfangsszene,
eine
Szene mit mehreren Auswahlschichten und neue Ebenen erstellen können. Das ist nur Vorbereitung,
nichts Besonderes, aber das müssen wir tun
, damit wir
in den nächsten Vorlesungen
schneller und effizienter sein können . Zuerst müssen wir Prefabs
erstellen, die Manager und
Spawner in den Controllern
auswählen. Wir können die
Gewinnbedingung Canvas auswählen und der Spieler sie
in den Ordner Prefabs ziehen. Speichern Sie diese Szene mit Control S. Gehen Sie zum Ordner Scenes. Wir befinden uns in einem Level eins, also duplizieren Sie es, benennen Sie es in
den Startbildschirm um und öffnen Sie es. Dies ist die erste Szene, die der Spieler sieht, wenn er das Spiel
betritt. Wir können einige Objekte löschen. Lassen Sie uns Spammer, Stift oder
Controller löschen, wenn der Zustand ist, also
alles, was
mit der virtuellen Kamera verbunden ist. Dann der Spieler in
einer virtuellen Kamera. Lassen Sie uns auch die Gehirnkomponente der
Kinomaschine
von der Hauptkamera entfernen . Ich werde einen Text
von der Leinwand verwenden. Das wird der Gewinner sein. Danke, um es zu benutzen, müssen
wir das Prefab auspacken. Jetzt ziehe ich den Text
unter den sicheren Bereich. Wir können das Panel löschen. Wir können auch den
Punktestand und die Gesundheitsleiste löschen. Benennen wir den Text um. Das wird der Name des Spiels sein. Erweitern Sie den Textbereich, vergrößern Sie die Schrift und ändern Sie die Ankervoreinstellung auf die obere Mitte. Dies ist eine gute Position, da wir in virtuellen Kameras kein Cin und
Machine verwenden. Wählen wir die Hauptkamera aus
und stellen Sie die Größe auf fünf ein. Mal sehen, wie es aussieht. Nicht schlecht. Lassen Sie uns die
Farbe des Textes ändern. Die Scheitelpunktfarbe
muss weiß sein. Jetzt ist der Farbverlauf aktiviert. Ich werde einen
horizontalen Gradienten verwenden. Die erste Farbe wird gelb sein, die zweite Farbe ist orange. Großartig. Speichern wir die
Szene und duplizieren wir sie. Hat die neue
Meeresspiegelauswahl aufgerufen und geöffnet. Ich werde nur den Text ändern,
damit wir ihn erkennen können. Dies ist eine Auswahlebene. Natürlich werden
wir diese Dinge
in
den nächsten Vorlesungen verfeinern und erweitern . Denken Sie daran, dass dies nur
eine kleine Vorbereitung ist. Speichern Sie die Szene und öffnen Sie
die Build-Einstellungen. Lassen Sie uns nun dem Build neue
Dinge hinzufügen. Ändern Sie die Reihenfolge, sodass die Startanzeige zuerst angezeigt
wird,
dann die Ebenenauswahl
und dann die Ebenen. Okay, das ist alles für heute. In der nächsten Vorlesung haben wir den Start Seeing abgeschlossen.
42. Startbildschirm (Menü): Hallo zusammen. In dieser Vorlesung implementieren
wir die Tap to
Play-Mechanik in der Start-Sin. Stellen Sie also sicher, dass Sie den Stern
öffnen, um ihn zu sehen und klicken Sie dann mit der rechten Maustaste auf die
Leinwand und erstellen Sie ein Bild. Nennen Sie es Tap to Play Trigger. Wir müssen es dehnen. Setzen Sie dann den
Alphawert auf Null. Fügen wir nun die
Event-Trigger-Komponente hinzu. Wir verwenden es, um
einen neuen Veranstaltungstyp zu erstellen. Sie können einige Ereignisse sehen, z. B. Zeiger nach unten zeigt, wenn wir auf den Bildschirm
drücken, genauer gesagt auf dem
transparenten Bild, das wir erstellt haben. Mit dem Zeiger nach oben
heben wir natürlich den Finger. Benutze es. Erstellen Sie ein neues Ereignis. Jetzt müssen wir das
Button-Steuerobjekt ziehen. Wir werden das
Loadlevel der String-Funktion verwenden. Laden Sie dann die Ebene
der Auswahlebene. Großartig. Wenn wir den
Bildschirm und den Finger berühren, sollten
wir das Ereignis auslösen. Stimmt. Klicken Sie auf eine beliebige Stelle auf
dem Bildschirm. Es funktioniert. Lassen Sie uns nun einige visuelle
Elemente zu dieser Szene hinzufügen , damit sie
im sicheren Bereich besser aussieht Lassen Sie uns einen neuen Text erstellen. Ändere den Anker in
die untere Mitte. Platziere es so. Wir können die Schriftart ändern, den Textbereich
erweitern, die Ausrichtung
ändern. Zum Abspielen
sollte die Texteingabe angetippt werden. Ändern Sie die Schriftgröße. Um es interessanter zu machen, wollte
ich
diesen blinkenden Effekt erzeugen. Wir sollten ein Drehbuch erstellen, aber ich werde
für diesen Text Animationen verwenden. Wichtig, wie gesagt, Animieren von UI-Elementen
ist
leistungsaufwändig und das sollten Sie normalerweise
vermeiden. Aber fangen Sie an
zu sehen, dass es nur
sehr wenige Elemente hat und wir
nur ein paar Sekunden drin sind .
Wir können mit jedem Element durchkommen, wenn wir ein Element
treffen. Lassen Sie uns also eine Animation erstellen. Ich nenne es Tap-Animation. Drücken Sie die Aufnahmetaste und
animieren Sie den Alphawert. Schauen wir uns die Vorschau an. Es ist ein bisschen zu schnell. Lassen Sie uns die Stichprobengröße auf 30 setzen. Das sieht gut aus. Lass es uns versuchen. Tippe auf den Bildschirm. Großartig. Wir können diesem Level auch das
Raumschiff-Sprite hinzufügen. Setzen Sie die Position auf 00 und erhöhen Sie die
Reihenfolge in einer Ebene. Verkleinern Sie die Größe ein wenig. Und wir sind fertig. Wir sehen uns in der nächsten Vorlesung.
43. UI: Hallo alle zusammen. In dieser Vorlesung erstellen
wir UI-Elemente
für die Levelauswahl. Wie Sie sehen können, haben wir
ein nettes Scrollsystem gebaut. Stellen wir zunächst sicher, dass wir die
Ebenenauswahlebene öffnen, die Leinwand
erklärt haben und unter dem sicheren Bereich eine Schaltfläche
erstellen. Lassen Sie uns das Quellbild ändern. Verwenden Sie das Levelsymbol Sprite und stellen Sie eine native Größe ein. Lassen Sie uns nun
eine Texteinstellung ändern. Die Farbe muss weiß
sein, oder? Jede Zahl, es spielt keine Rolle. Sie werden
automatisch zugewiesen. Wir können die Schriftgröße erhöhen. Ich werde den
Textbereich ein bisschen großartig ändern. Wir können die Schrift ändern. Diese Schrift ist etwas größer. Du kannst vielleicht das Rappen deaktivieren oder einfach die Größe etwas verringern. Das ist vielleicht zu klein, ich setze es auf 39. können wir problemlos
dreistellige Zahlen schreiben Mit dieser Schriftgröße können wir problemlos
dreistellige Zahlen schreiben. Wählen Sie nun die Schaltfläche aus. Wir müssen ein Klickereignis hinzufügen. Die Taste muss einen Tastencontroller
verwenden. Und wir benötigen das
Ladeniveau der Zeichenkettenfunktion. Diese Schaltfläche
führt zu Level eins. Dies ist nur eine Vorlagenschaltfläche. Jetzt können wir
den Scroll-Bereich erstellen, mit der rechten Maustaste auf den sicheren Bereich und ein leeres Spielobjekt erstellen. Ich nenne es Level Base. Lassen Sie uns nun
die Abmessungen ändern. Wir legen die Grenzen des
Scrollbereichs fest. Klicken Sie dann mit der rechten Maustaste auf die
Levelbasis und erstellen Sie ein Bild. Ich nenne es einen
Viewport-Hintergrund. Dehne es. Verwenden Sie für
das Quellbild das Large-Panel-Sprite. Stellen Sie sicher, dass der
Bildtyp geschnitten ist. Ich ändere einfach die Farbe. nun mit der rechten Maustaste auf das Viewport und erstellen Sie ein leeres Spielobjekt. Nennen wir es einen Grid-Content. Stellen Sie die Anker-Presets
auf die obere Mitte. Fügen wir nun die
Grid-Layout-Gruppenkomponente hinzu. Diese Komponente ordnet
Schaltflächen in einem Raster an. Wir benötigen eine weitere Komponente, die
als Inhaltsgrößenfilter bezeichnet wird . Die Abmessungen
dieses Objekts werden erweitert , wenn wir Schaltflächen hinzufügen horizontale und vertikale
Passform auf die bevorzugte Größe
einstellen. Ziehen wir die Schaltfläche
unter den Rasterinhalt. Jetzt können wir
die Schaltfläche duplizieren. Und Sie können feststellen, dass aufgrund der
Rasterlayout-Komponente sie
aufgrund der
Rasterlayout-Komponente integriert angeordnet sind. Lassen Sie uns einige Einstellungen ändern. Die Zellengröße kann 200 sein. Wir können eine feste
Spaltennummer festlegen. Lass uns drei nehmen. Wir können Abstände zwischen den
Schaltflächen und eine gewisse Polsterung
oben und unten hinzufügen . Stellen wir außerdem die Ausrichtung
auf die obere Mitte ein. Wie Sie sehen können, können wir ganz einfach ein Raster von Schaltflächen
erstellen. Lassen Sie uns weitere Schaltflächen hinzufügen. Beachten Sie ein Problem. Die Schaltflächen sind
außerhalb des Hintergrunds sichtbar. Wir haben eine einfache Lösung. Wählen Sie den Viewport-Hintergrund aus und fügen Sie der Komponente
dann eine direkte Maske
hinzu. Das sieht besser aus. Wir müssen nur die Polsterung
anpassen. Beachten Sie, wie Schaltflächen den Rand
überlagern. Stellen Sie die untere und obere
Polsterung auf 15 ein. Großartig. Schließlich können wir das Level-Basisobjekt auswählen und
die Scroll
Erect-Komponente oder den Inhalt hinzufügen . Lassen Sie uns den Grid-Inhalt verwenden. Wir können das Scrollen in
horizontaler Richtung deaktivieren. Wir brauchen nur vertikal. Verwenden Sie für das Viewport das
Viewport-Hintergrundobjekt. Lass es uns versuchen. Es sieht nett aus. Wir können rauf und runter scrollen. Natürlich können Sie
die Einstellungen und das Verhalten
des Scrollens ändern . Ich setze diese
Verzögerungsrate gerne auf Null. Jetzt haben wir die Benutzeroberfläche für
die Levelauswahl eingerichtet. In der nächsten Vorlesung fügen wir die Funktionalität
und das Level-Unlocking hinzu. Wir sehen uns dort.
44. Levelauswahl und Freischaltung: Hallo alle zusammen. In dieser Vorlesung erstellen wir ein voll funktionsfähiges
Levelauswahl- und Entsperrsystem. Wenn der Spieler
das erste Level gewinnt, wird
das zweite
freigeschaltet und so weiter. Wir müssen zum
Endgame-Manager-Skript gehen. Wie Sie sehen können, habe ich bereits
erwähnt , dass
wir in der
Videospielfunktion das nächste Level freischalten müssen. Aber zuerst
erstellen wir eine Variable. Dies wird eine öffentliche Entsperrung auf
String-Ebene sein. Wir wollen diese Zeichenfolge niemals
ändern, also verstecken wir sie
im Inspektor. Diese Zeichenfolge
wird als Schlüssel
zum Speichern und Laden von Daten verwendet . Wenn wir ein Level bestehen, müssen
wir die
Indexnummer des nächsten Levels ermitteln. Lassen Sie uns also eine Ganzzahlvariable der
nächsten Ebene erstellen. Der Wert entspricht
der aktuellen Stufe des Build-Index, erhöht um eins. Dann prüfen wir, ob der Index der
nächsten Stufe
größer ist als der Wert, den wir im Level-Entsperrschlüssel
gespeichert haben. Setzen Sie den Standardwert auf Null. Wenn das stimmt, speichern wir den Index
der
nächsten Stufe im Level-Unlock-Schlüssel. Der Schlüssel, wir werden den
höchsten Index für unlocked-Levels haben. Das ist alles, was wir brauchen, um im Game Manager zu
codieren. Erstellen Sie in Unity ein
neues C-Sharp-Skript. Ich nenne es Button-Symbole. Das Skript zu diesem
Level-Basisobjekt und öffnen Sie es. Wir müssen den UI-Namespace verwenden. Dann erstellen wir
einige Variablen. Wir brauchen eine Reihe von Knöpfen. Dann brauchen wir
Sprites für Schaltflächen, einen für entsperrte und
einen für gesperrte Schaltflächen. Wir benötigen auch die Nummer
des erstellten Indexes der ersten Ebene. Was ist das für eine Nummer? Wenn Sie sich
die Build-Einstellungen ansehen, können
Sie sehen, dass
die erste Ebene in unserem Fall mit
dem erstellten Index zwei beginnt. Okay, jetzt brauchen wir
die Wachfunktion. Sie wird
vor der Startfunktion nur einmal aufgerufen. Zuerst benötigen wir
einen Index der
freigeschalteten Stufe der Liste. Das freigeschaltete Level
erhält also einen Wert aus der Zeichenfolge, die wir
im Endgame-Manager eingegeben haben. Es ist wichtig,
den Standardwert auf den Index zu setzen , der auf der
ersten Ebene erstellt wurde. Dann erstellen wir eine
For-Schleife , um
die Anordnung der Schaltflächen zu durchgehen. Für jede Schaltfläche
überprüfen wir, ob das I plus der Index der ersten Ebene kleiner oder
gleich der freigeschalteten
Stufenvariablen ist . Ich fange bei Null an. Also müssen wir diesen Indexwert der
ersten Ebene hinzufügen. Denken Sie daran, dass die Variable für die freigeschaltete
Stufe der Index der
höchsten freigeschalteten Stufe
ist. Das bedeutet, dass jedes Level mit einem niedrigeren Index freigeschaltet werden
muss. Also setzen wir zuerst die Schaltfläche mit
dem Index I auf interagierbar dann setzen wir den Sprite des
Schlagstocks auf das Symbol „Entsperrt“. Jetzt brauchen wir Zugriff auf den Text. Wir müssen
den Pro-Namespace einbeziehen. Erstellen Sie eine Textvariable, verwenden Sie
dann die Schaltfläche und
rufen Sie eine Komponente in der
Kinderfunktion ab. Denken Sie daran, dass der Text ein
untergeordnetes Objekt der Schaltfläche ist. Dann müssen wir
den Textwert festlegen. Stellen Sie danach einfach sicher
, dass der Text aktiviert ist. In anderen Fällen sind die
Level gesperrt. Also müssen wir die
interaktable Variable der Schaltfläche auf false setzen. Setze das Sprite auf
das gesperrte Symbol. Außerdem müssen wir
die Textkomponente deaktivieren. Das ist alles, was wir zum Codieren brauchen. Gehe zu den Symbolen Unity,
Assigned, Unlocked und Locked. Lassen Sie uns die
erste Ebene, den Build-Index, noch einmal überprüfen. Der Index der
ersten Ebene ist zwei. Fügen Sie dann Schaltflächen zum Array hinzu. An diesem Punkt
führt jede Taste zu Level eins. Wir müssen die Schaltflächen
nacheinander auswählen und die Werte ändern. Diese Schaltfläche führt zu
einem Level zum nächsten, zu Level drei und so weiter. Dies ist das einzige, was
wir manuell tun müssen. Es ist ein fünf- bis zehnminütiger Job, abhängig von der
Anzahl der Tasten. Es gibt Möglichkeiten, dies
automatisch mit Skripten zu tun, aber das würde den
Rahmen dieses Kurses sprengen. Im Moment müssen
Sie nicht alle Schaltflächen ändern. Zum Testen benötigen wir nur Knöpfe für zwei
oder drei Ebenen. Bevor wir es testen, gehen
wir zum ersten Level. Hier müssen wir einige Knöpfe
anpassen. Die Home-Taste an der Vene und die untersten Bildschirme
müssen zur Levelauswahl führen. Jetzt können wir es testen. Wir starten das Spiel. Gehe zur Levelauswahl. Da wir zum
ersten Mal spielen, ist nur das erste Level
freigeschaltet und andere sind gesperrt. Versuchen wir,
die persönliche Ebene zu bestehen. Jetzt können wir sehen, dass
Level zwei freigeschaltet wurde. Großartig. In der nächsten Vorlesung werde
ich Ihnen zeigen, wie Sie auf
einfache Weise neue Level erstellen können. Dann kannst du
alle Schlachten mit
erstellten Levels verbinden . Wir sehen uns dort.
45. Wie man leicht Ebenen erstellt: Hallo alle zusammen. In dieser Vorlesung zeige
ich Ihnen, wie Sie auf
einfache Weise neue Level erstellen können. Wir können das zweite Level löschen. Es ist ein altes Exemplar. Moment haben wir alles, was
wir brauchen, in einer ersten Ebene Sie können alle
Manager, Controller
und andere Prefabs in dieser Ebene sehen . Duplizieren Sie nun diese Szene und
nennen Sie sie eine Vorlagenzeichenfolge. Öffne es. Diese Szene enthält alle
notwendigen Objekte , um eine grundlegende
Funktionsebene zu erstellen. Jetzt können wir
die angezeigte Vorlage duplizieren. Dies kann Stufe zwei sein. Öffne es. Jetzt ist es einfach,
Fertigerzeugnisse hinzuzufügen oder zu entfernen, z. B. können
wir die
Zählerpartner in dieser Ebene löschen. Wir können auch Zahlen ändern, z. B. diese Pound-Zeit. Wenn Sie verschiedene Gegner benötigen, können
Sie Prefabs ersetzen. Wählen Sie die Gewinnbedingung und aktualisieren Sie dieses Array. Wir haben keine Zählerpartner, also lösche das leere Feld. Wir können auch
den Windtimer ändern. Jetzt haben wir ein völlig
anderes Level. Lassen Sie uns eine dritte Ebene erstellen. Das Duplikat dieser Vorlage
wird angezeigt. In diesem Level. Sie können Variablen
auf verschiedene Werte setzen. Dies ist nur ein Beispiel. Also werde ich sie
nach dem Zufallsprinzip ohne Tests festlegen. Wenn du andere Spanner Prefabs
oder etwas anderes für dieses Level
hast, kannst du
sie natürlich andere Spanner Prefabs oder etwas anderes für dieses Level
hast, einfach in dieses Ding ziehen. Stellen Sie einfach sicher, dass Sie die Build-Einstellungen
aktualisieren. Und so können Sie
ganz einfach ein Level erstellen. Zum Testen. Erstellen Sie einfach
zwei oder drei Ebenen. Erstellen Sie nicht zu viel, da
wir
die Vorlage, die Sie sehen,
später im Kurs mit
den neuen Inhalten aktualisieren müssen die Vorlage, die Sie sehen,
später im Kurs mit . Ich wollte
dir nur den Prozess zeigen, aber er muss
gemacht werden, wenn du
alle Dinge
zwischen Objekten miteinander verbunden hast . Später erstellen wir
EDS und Power Apps , die mit dem Player
verbunden werden müssen. Behalte das im Hinterkopf und wir
sehen uns in der nächsten Vorlesung.
46. Android-Handy zum Testen erstellen: Hallo zusammen. In dieser Vorlesung werden
wir
das Spiel zu
Testzwecken auf unserem Android-Gerät erstellen . Wir haben genug Inhalte
, um das Spiel auszuprobieren und zu sehen, wie es sich
auf einem Mobilgerät anfühlt. Bevor wir beginnen, stellen Sie
sicher, dass Sie
das Android-Modul
für die von Ihnen verwendete Unity-Version installiert haben das Android-Modul
für die von Ihnen verwendete Unity-Version installiert . Gehen Sie dann zu Build Settings und stellen Sie sicher, dass Sie
die Android-Plattform verwenden. Das alles haben wir zu Beginn
des Kurses gemacht, aber ich wollte
es nur wiederholen , falls Sie etwas verpasst haben. Gehe jetzt zu den Player-Einstellungen. Hier findest du einige Optionen wie Firmen- und Spielname, Version und Icons zum Testen. Wir müssen sie nicht ändern, vielleicht nur den Firmennamen. Gehen wir zur Auflösung
und Präsentation. Standardmäßig ist die äußere Drehung alle Ausrichtungen
ausgewählt. Beschränken wir das
auf den Porträtmodus. Dann gehe zu anderen Einstellungen. Für die Veröffentlichungsversion müssen
wir weitere Einstellungen
ändern. Aber zum Testen deaktivieren
wir einfach dieses Override der Bundle-ID. Und für die Ziel-API-Ebene wählen Sie die mit
der höchsten Zahl. Jetzt müssen wir unser
Mobilgerät mit unserem PC verbinden. Auf einem mobilen Gerät müssen
wir den
Debug-Modus aktivieren und zu den Einstellungen gehen. Das nächste Verfahren kann für Sie
etwas anders sein. Das hängt vom Gerät ab, aber normalerweise
müssen wir etwas über das Telefon herausfinden. Öffnen Sie dann die
Softwareinformationen. Geben Sie nun einige Male
die Build-Nummer ein. Sie sollten ein Pop-up sehen, das darauf
hinweist
, dass der Entwicklermodus aktiviert wurde. Gehen Sie jetzt zurück zu den Einstellungen. Scrollen Sie nach unten und Sie sollten die Entwickleroption
sehen. Vergewissere dich, dass es eingeschaltet ist. Suchen Sie dann das USB-Debugging, aktivieren Sie es und
das sollte es sein. In Unity können Sie auf
Refresh klicken und Sie sollten Ihr Gerät
sehen. Wenn die
Verbindung nicht wieder hergestellt wird, vergewissern Sie sich
, dass die Dateifreigabe
über USB aktiviert ist. Dann können wir drücken, erstellen und ausführen, einen
neuen Ordner für den Build erstellen. Der Dateiname wird Space Shooter
sein. Klicken Sie auf Speichern und warten Sie einen
Moment, wenn Sie es tun Beim ersten Mal
dauert es etwas länger. Bill sollte auf Ihrem PC
und auf Ihrem Mobilgerät erscheinen. Außerdem sollte das Spiel automatisch auf
Ihrem Mobilgerät
gestartet werden. Jetzt kannst du das Spiel probieren
und ein besseres Gefühl bekommen. Wie Sie sehen können,
funktioniert alles so, wie es sollte. Nett. Wenn Sie Änderungen in
Unity vornehmen
und die aktualisierte Version
testen möchten, aktivieren Sie außerdem Entwicklung, Build und klicken Sie auf Pitch and Run. Großartig. Jetzt weißt du, wie du dein
Spiel auf einem mobilen Gerät testen kannst. Wir sehen uns in der nächsten Vorlesung.
47. iOS zum Testen erstellen: Hallo zusammen. In dieser Vorlesung werden
wir
das Spiel zu
Testzwecken auf unserem iOS-Gerät erstellen . Wir haben genug Inhalte
, um das Spiel auszuprobieren und zu sehen, wie es sich
auf einem Mobilgerät anfühlt. Beachten Sie, dass ich Windows verwende, aber um das Spiel auf iOS zu erstellen, benötigen
wir
später im Prozess einen Mikrofoncomputer. Bevor wir beginnen, stellen Sie
sicher, dass Sie
das iOS-Modul für
die von Ihnen verwendete Unity-Version installiert haben . Gehen Sie dann zu Build Settings und stellen Sie sicher, dass Sie
die iOS-Plattform verwenden. Gehe jetzt zu den Player-Einstellungen. Hier findest du einige
Optionen wie Abneigung
gegen Firmennamen und
Icons zum Testen. Wir müssen sie nicht ändern, vielleicht nur den Firmennamen und Leerzeichen aus
dem Produktnamen entfernen. Gehen wir zur Auflösung
und Präsentation. Standardmäßig ist die äußere Drehung alle Ausrichtungen
ausgewählt. Beschränken wir das
auf den Porträtmodus und gehen wir
dann zu anderen Einstellungen. Bei der Veröffentlichungsversion
müssen wir weitere Einstellungen ändern. Aber zum Testen
deaktivieren wir einfach dieses Override der
Bundle-ID. Gehen Sie zurück zu den Build-Einstellungen. Jetzt müssen wir einen Build
erstellen, einen neuen Ordner und dann den Prozess starten. Es kann einige Zeit dauern, bis der Vorgang abgeschlossen ist. Hier ist der Ordner
mit allen Daten. Jetzt müssen wir diesen
Ordner übertragen, um den Computer zu erstellen. Lass mich einfach zu Make wechseln. Wie Sie hier sehen können, habe ich den Build-Ordner auf dem Mac. In dem Ordner sollten Sie das Xcode-Projekt
finden. Wenn Sie die
Xcode-Anwendung nicht haben, gehen Sie
einfach in den App Store, suchen Sie nach Xcode und installieren Sie sie. Es ist völlig kostenlos, aber
es ist nur am Mikrofon verfügbar. Öffnen Sie das Xcode-Projekt. Wählen Sie das Unity iPhone und Sie werden einige Einstellungen sehen. Die meisten von ihnen werden von Unity kommen. Wenn etwas fehlt, können
Sie es schnell bearbeiten. Schon wieder. Dies ist nur für einen Test-Build, sodass Sie nicht
auf Details eingehen müssen. Der wichtige Teil ist, zum Unterzeichnungsbereich zu
gehen. Hier müssen wir die
automatische Signatur aktivieren. Jetzt müssen wir ein
Teamkonto hinzufügen, das nur du sein kannst. Um es zu erstellen, gehen Sie zu Xcode, Einstellungskonten und
klicken Sie auf die Plus-Schaltfläche. Verwenden Sie Ihre Apple-ID, um sich anzumelden. Danach müssen Sie
ein Entwicklungszertifikat hinzufügen. Gehen Sie zu Zertifikate verwalten. Klicken Sie auf die Plus-Schaltfläche und fügen Sie das
APL-Entwicklungszertifikat hinzu. Gehen Sie zurück zum Abschnitt Signieren. Jetzt können wir ein
Teamkonto auswählen, das wir erstellt haben. Jetzt müssen Sie Ihr iPhone
mit
Ihrem Mac verbinden . Auf deinem Handy. Gehe zu Einstellungen und finde
Datenschutz und Sicherheit. Unten sollten Sie den Entwicklermodus
sehen. Manchmal muss
der Xcode geöffnet sein, um diese Option zu sehen, sonst wird er nicht angezeigt. Lassen Sie uns den Entwicklermodus aktivieren. Ihr Telefon wird neu gestartet. Nach dem Tod auf dem Mac. Stellen Sie sicher, dass
Sie Ihr iPhone auswählen. Um mit dem Aufbau des Spiels zu beginnen. Klicken Sie auf die Play-Schaltfläche. Das wird einige Zeit dauern. Wenn Sie eine
Fehlermeldung erhalten, haben Sie versucht,
Ihr Unity-Projekt unter Windows
mit einer anderen Version zu öffnen . Tatsächlich habe ich einen
seltsamen Fehler bekommen, ich nicht mit
allen möglichen Korrekturen beheben konnte. Es stellt sich heraus, dass es
an der Unity 22-Version liegt. Etwas stimmt nicht. Ich bin mir sicher, dass sie es in Zukunft
reparieren werden. Vielleicht wirst du
mit der neuesten Version keine Fehler haben. Aber ich musste mein Projekt unter Windows in
der Unity 21-Version öffnen , es
erstellen und Dateien auf den
Mac übertragen und den
gesamten Vorgang wiederholen, dann war alles in
Ordnung und ohne Fehler. Wenn Sie diese Popup-Meldung erhalten, geben Sie
einfach das Passwort ein, mit dem
Sie sich auf
Ihrem Mac angemeldet haben, und klicken Sie
auf Immer zulassen. Wenn der Build abgeschlossen ist
, wird diese Meldung angezeigt. Das Spiel konnte auf
deinem iPhone nicht geöffnet werden, da wir dem Entwickler vertrauen müssen
. Am Telefon. Gehe zu Einstellungen. Allgemeine Geräteverwaltung. Hier sehen Sie, dass die
Entwickler-App sie öffnet, dann müssen Sie dem Entwickler
vertrauen. Jetzt kannst du das
Spiel finden und testen. Lass es uns ein bisschen spielen, um zu
sehen, ob alles funktioniert. Toll, es ist alles gut. So testest du dein
Spiel auf deinem iPhone. Hab einen schönen Tag und wir
sehen uns in der nächsten Vorlesung.
48. Skriptfähiger Object: Hallo alle zusammen. In dieser Vorlesung erstellen
wir skriptfähige
Objekte, die uns
helfen, Power Apps zu spammen. Script Double Object ist ein
von Klasseninstanzen unabhängiger Datencontainer, so
etwas wie ein Asset. Sie sind sehr nützlich zum
Speichersparen, da sie sehr klein,
leicht und optimiert sind. Sehen wir uns an, wie wir
skriptfähige Objekte erstellen können. Lassen Sie uns zunächst einen Ordner erstellen. Erstellen Sie dann ein Skript. Ich nenne es Beispiel für skriptbare
Objekte und öffne es. Lösche alle Funktionen. Und statt Mono-Verhalten erben
wir vom
skriptfähigen Objekt. Diese skriptfähigen
Objekte enthalten einen Verweis auf die
Power App-Prefabs. Lassen Sie uns also eine
Reihe von Spielobjekten erstellen. Als Nächstes erstellen wir eine Funktion , die in einer
der Power Apps gefunden wurde. Es muss öffentlich sein
und benötigt einen Vektor, drei Parameter für
diese Pfundposition. Lassen Sie uns einen zufälligen Index erhalten. Dann können wir die Funktion
Instanziate verwenden. Spam, das Hochfahren mit
diesem zufälligen Index. Verwende Spawnposition und Rotation. Um ein Skript für
ein Objekt als Asset zu erstellen, müssen
wir das Menüattribut create
Asset verwenden. Dann können wir einen Menünamen verwenden , der
skriptfähige Objekte sein wird. Power Apps-Partner. Ich werde Ihnen gleich zeigen, wie dieses
Menü heißt. Lassen Sie uns zunächst dem Objekt, das wir erstellen werden
, einen Standardnamen hinzufügen . Ich nenne es Spawner. Es spielt keine Rolle. Wir werden es trotzdem ändern. Gehe zu Unity. Klicken Sie mit der rechten Maustaste, gehen Sie zu Erstellen. Und jetzt sollten Sie sehen skriptfähige Objekte den Spammer
einschalten, das ist der Menüname, den wir gewählt haben. Lassen Sie uns also einen
Power Apps-Partner erstellen. Wie Sie sehen können, ist der
Standardname Spawner. Ich werde es auf
Powerup Spamming oder Basic ändern. Jetzt sollten Sie die Reihe der
Power Apps im Inspektor sehen . Hier fügen wir die Prefabs hinzu
, die wir bearbeiten müssen. Beachten Sie, wie einfach es ist,
weitere skriptfähige Objekte zu erstellen , die unterschiedliche Prefabs haben
können. Wir brauchen nur einen. Also lösche diesen. Lassen Sie uns dem Spouting etwas
Zufälligkeit hinzufügen. Zunächst benötigen wir einen
Integer-Span-Schwellenwert. Dann können wir in der Funktion eine Zufallszahl 0-99
erhalten. Denken Sie daran, dass die letzte
Zahl nicht enthalten ist. Nach dem Tod. Wir prüfen, ob die zufällige Zufallszahl diesen Schwellenwert überschreitet. Wenn das stimmt, müssen wir eine Power App
instanziieren. Gehen wir zu Unity. Wir können diesen
Grenzschwellenwert auf 80 setzen. Wenn wir also eine höhere Zahl erhalten, werden wir uns über eine
der Power Apps erstrecken. Die Chancen liegen bei 20 Prozent, genau bei 19%, da
die Höchstzahl bei 99 liegt. Bei Power Apps ist es
meine Idee, sie zu verteilen wenn der Spieler Meteore
zerstört, aber du kannst sie auch
leicht finden wenn ein bestimmter Feind zerstört wird. Und sagen wir die Meter-Version, gehen Sie zum Meteor-Skript. In der Todessequenz müssen
wir eine Funktion aufrufen
, die Power Apps erweitert. Aber zuerst benötigen wir ein Skript
für eine Objektvariable. Ich nenne es als Gründer Power
Up. Es ist eine gute Idee zu überprüfen
, ob dieser Parameter nicht Null ist. Dann können wir die Funktion
von den skriptfähigen Objekten aus aufrufen . Die Funktion berechnet die
Position des Meteors. Das ist alles, was wir zum Codieren brauchen. In Unity. Wählen Sie Meteor Prefabs aus. Wir müssen eine Referenz
für die skriptfähigen Objekte einrichten. Ziehen Sie die skriptfähigen
Objekte in das leere Feld, das nicht funkelnd schmeckte. Wir können die
skriptfähigen Objekte auswählen und jedes Prefab
in das Array ziehen. Ich werde das
Grid Enemy Prefab benutzen. Ich werde auch dieses Level ändern, ein Pfund mehr Meteore. Lösche einfach den feindlichen Schraubenschlüssel und verringere
dann die Spawnzeit
, um mehr Meteore zu erhalten. Natürlich müssen wir
die Gewinnbedingung auswählen und
die Größe des Arrays ändern. Lass es uns versuchen. Wenn wir ihn, einen Meteor, zerstören, kann
der Feind explodieren. Großartig. In den nächsten beiden Vorlesungen erstellen
wir Power-Ups für den scriptable Objects
Pounder. Wir sehen uns dort.
49. Health Power Up: Hallo zusammen. Mal sehen, wie wir
Sammelobjekte und Power Apps erstellen können. In dieser Vorlesung erstellen wir eine Power-App, die den Spieler
heilt. Zuerst brauchen wir eine
Power App, Sprite. Benutze den gelben. Erhöhen Sie die Sortierreihenfolge auf vier. Lassen Sie uns nun einige
Komponenten hinzufügen. Starrer Körper 2D. Wir müssen keine Option
ändern. In diesem Fall wollen wir eigentlich die
Schwerkraft. Fügen wir nun den
Box Collider 2D hinzu. Es muss ein Auslöser sein. Dann können wir die
Größe des Colliders anpassen. Das sieht gut aus. Lassen Sie uns eine Ebene
für Sammlerstücke erstellen. Wir müssen die
Kollisionsmatrix ändern. Die Ebene mit den
Sammelobjekten muss nur mit dem Spieler kollidieren. Jetzt können wir einen
neuen Ordner und ein neues Skript erstellen. Ich nenne es hier Power Up. Fügen Sie das Skript zum Objekt hinzu. Lass es uns öffnen. Zuerst. Wir brauchen hier eine ganzzahlige
Variable, Betrag. Dann können wir den On Trigger
Enter für die Funktion verwenden. Aufgrund ihrer Ebenenmetriken weiß
ich, dass dieses Objekt genau auf dem
Weg zum Spieler
kollidiert, aber vielleicht brauchst du diese Power, um
mit mehr Objekten zu kollidieren. Dann können wir überprüfen, ob das
Objekt den Tag Player hat. Hier werden wir den Spieler heilen. Wir müssen eine Funktion
im Spielerstatistikskript erstellen. Lass es uns öffnen. in den Spielerstaaten Erstelle in den Spielerstaaten eine neue öffentliche Funktion. Nennen wir es Add Health. Es benötigt einen Int-Parameter. Hier erhöhen wir die
Gesundheitsvariable Breite und Absatzhöhe. Prüfen Sie dann, ob die aktuelle Gesundheit größer als die
maximale Gesundheit
ist. Wenn das stimmt, setzen
wir die Gesundheit
auf den Maximalwert. Auf diese Weise können wir nicht
mehr als
den Maximalwert haben . Wir müssen auch
die Gesundheitsleiste aktualisieren. Kehren wir zum
Power App Script zurück. Hier müssen wir
die Spielerstatistikenkomponente
aus der Kollision abrufen . Rufen Sie dann die Funktion Add
Health auf. Nach dem Tod wurde
das Powerup-Objekt zerstört. Das ist alles, was wir zum Codieren brauchen. Geh zurück zu Unity. Setzen wir uns eine ganze Menge hin. Erstellen Sie dann ein Prefab. Wir können einen
von der Szene löschen. Gehen Sie nun zu den skriptfähigen Objekten , die wir in der
vorherigen Vorlesung erstellt haben. Dieser grüne Feind war
nur zum Testen da. Lassen Sie uns es durch
das Fersenfertigteil ersetzen, das wir hergestellt haben. Sie dann einfach sicher, dass Meteore die
skriptfähigen Objekte verwenden. Das haben wir in der
vorherigen Vorlesung gemacht, aber falls
Sie etwas verpassen, können
wir es jetzt versuchen. Lass uns dem Spieler Schaden zufügen, dann Zähler zerstören und
die Power App sollte sich erstrecken. Toll, alles funktioniert. Wir sehen uns in der nächsten Vorlesung.
50. Shield Power Up: Hallo zusammen. In dieser Vorlesung erstellen
wir eine Shield Power App, die den Spieler
schützt. Lassen Sie uns zunächst
ein Schildsprite verwenden. Ändern Sie den Namen und die
Reihenfolge in der Ebene 25. Beachten Sie eine seltsame Sache. Die Tabelle sieht
blockig und wirklich schlecht aus. Dieses Sprite hat einen gewissen Gradienten und verursacht dieses
Renderproblem. Um das Problem zu beheben, wählen wir
das Schild-Sprite aus. Wir müssen einige
Einstellungen für Android und iOS überschreiben. Aktiviere Override für iOS. Dann ändere das Format auf dieses. Wenden Sie Änderungen an und Sie
werden Verbesserungen feststellen. Es sieht viel besser aus. Wählen Sie nun Android-Einstellungen
und machen Sie dasselbe. Vergiss nicht, das Format zu
ändern. Ich werde einen Link zur Liste
der unterstützten Formate und
Einstellungen hinzufügen , damit Sie die
besten Optionen für Ihr Spiel finden können. Ziehen wir nun den Schild
unter das Player-Prefab. Passen Sie die Position ein wenig an. Dann müssen wir den
Polygon Collider 2D hinzufügen. Es muss ein Auslöser sein. Wir können auch
den Collider namens
Control bearbeiten und auf die
Linien klicken, um einige Eckpunkte zu löschen Weniger Scheitelpunkte,
bessere Leistung. Das ist in Ordnung. Sie können mehr Zeit damit verbringen
, wenn Sie möchten. Lassen Sie uns eine neue
Ebene für den Schild erstellen. Nenn es Schild. Wir müssen zur
Kollisionsmatrix gehen. Der Schild muss nur mit
Feinden und feindlichen Projektilen
kollidieren . Dann können wir ein neues Script erstellen. Ich nenne es Schild. Das Skript zum
Schildobjekt und öffnen Sie es. Löschen wir die
Standardfunktionen. Der Schild wird nicht gehalten haben, er zählt nur Treffer, um eine Variable mit
Treffern zu zerstören zu erzeugen Ich setze den Wert auf drei. Wir benötigen einen öffentlichen
Bool-Variablenschutz. Wenn wir den Schild aktivieren, sicher, dass wir drei Treffer zu
zerstören
haben und dass der
Schutz stimmt. Erstellen Sie nun eine Funktion,
die den Schild beschädigt. Wir verringern die Anzahl der Treffer, um sie zu
zerstören, um eins. Prüfen Sie dann, ob die Treffer
kleiner oder gleich Null sind. Stellen Sie dann den Schutz auf Falsch
und deaktivieren Sie den Schild. Wir können auch Schildstärke
aufsammeln, solange wir bereits einen Schild haben. Dann
reparieren wir einfach den Schild. Setzt Treffer, um es
zu zerstören, auf den Standardwert. Jetzt benötigen wir den eigenen Trigger
Enter für die Funktion. Wir wissen, dass der Schiefer
nur ein bisschen kollidiert, Gegner und feindliche Projektile. Also können wir versuchen,
die feindliche Komponente zu bekommen. Diese Codezeile
versucht, die Komponenten
aus der Kollision abzurufen und in dieser Variablen zu
speichern. Dann müssen wir den Feind
vernichten. Wir können wahnsinnig viel Schaden anrichten, um
sicherzustellen, dass wir zerstört haben. Dann beschädige den Schild. Der Schild kollidierte
mit dem Projektil, zerstörte
dann das Projektil
und beschädigte den Schild. Gehe dann zum
Spielerstatistiken-Skript. Hier brauchen wir einen
Verweis auf den Schild. Dann müssen wir
das Bild verhindern , solange der
Schild aktiv ist. also in der technischen Schadensfunktion Wenn also in der technischen Schadensfunktion der
Schildschutz wahr ist, kehren Sie zurück und
führen Sie den folgenden Code nicht aus. Unity, um es zu probieren, lasst uns den Schutz einschalten. Wähle dann den Spieler aus und
richte eine Referenz oder den Schild ein. Lass es uns versuchen. Wir haben einen Schild
, der
uns vor drei Treffern schützen sollte . 123. Großartig. Nur ein kleiner Exkurs, um sicherzustellen, dass die Kugeln vor dem Schild sichtbar
sind.
Wir können die Sortierreihenfolge erhöhen. Lassen Sie uns nun ein weiteres Skript erstellen. Ich nenne es Player
Shield Activator. Wählen Sie den Player aus
und fügen Sie das Skript hinzu, öffnen Sie es und löschen Sie die
Standardfunktionen. Wir brauchen einen Verweis
auf den Schild. Dann erstellen wir ein öffentliches
Aktivierungsschild für Funktionen. Diese Funktion wird aufgerufen
, wenn wir ein Power-up aufnehmen. Dann prüfen wir, ob das
Schiff bereits aktiv ist. Wenn nicht, aktivieren wir es. Wenn es aktiv ist,
repariere den Schild. Geh zurück zu Unity. Ziehe den Schild in
das leere Feld. Wählen Sie nun das Schild
und den deaktivierten Schutz aus. Außerdem wurde das Shelf-Objekt deaktiviert. Wählen Sie den Player aus
und wenden Sie Overrides an. Jetzt müssen wir tatsächlich ein PowerApp-Objekt
erstellen. Gehe zum Ordner Prefabs und ziehe den Hill Power nach
oben in die Szene. Wir werden ein weiteres Prefab erstellen,
indem wir dieses anpassen. Auf diese Weise sparen wir Zeit. Lassen Sie uns zuerst das Sprite ändern. Dann können wir das
Skript entfernen und den Namen ändern. Jetzt können wir ein neues Prefab erstellen. Das letzte, was wir tun müssen,
ist ein neues Skript zu erstellen. Nenn es Power Up, Shield. Wählen Sie das Powerup aus
und fügen Sie das Skript hinzu. Öffne es. Wir benötigen den On Trigger
Enter für die Funktion. Zunächst stellen wir sicher, dass die Kollision
mit dem Spieler passiert ist. Kollision. Wir müssen zum Schild-Aktivator gehen
. Rufen Sie dann die
Active-Shield-Funktion und zerstören Sie dann das
PowerApp-Objekt. Speichere es und gehe zu Unity. Vergiss nicht, die Änderungen zu
überschreiben. Wir können das
Prefab aus der Szene löschen und dann zu den
skriptfähigen Objekten gehen. Wir müssen dem Array ein neues
Prefab hinzufügen. Wählen Sie das vorgefertigte Schild. Lass es uns versuchen. Wir brauchen ein
Shield-Power-Up. Jetzt sind wir vor drei
Treffern geschützt. Großartig. In der nächsten Vorlesung erstellen
wir Benutzeroberflächen-Symbole, damit wir den Shield-Status sehen
können. Wir sehen uns dort.
51. Shield: Hallo zusammen. In dieser Vorlesung erstellen
wir eine Benutzeroberfläche für die
Shell zum Hochfahren. Die Benutzeroberfläche zeigt den
Status des Schildes an. Lassen Sie uns Canvas erweitern und
mit der rechten Maustaste auf den sicheren Bereich klicken. Wir müssen ein Bild erstellen. Ich nenne es Shield Base Icon. Lassen Sie uns das Quellbild ändern. Verwenden Sie das Icon-Basis-Sprite. Wir können die Farbe ändern. Erstellen Sie dann ein weiteres Bild. Es muss ein untergeordnetes Objekt
des Schildbasissymbols sein. Dies wird das Schildsymbol sein. Ändere das Sprite. Klicken Sie auf die Schaltfläche
Native Größe festlegen. Lassen Sie uns die Ansicht verkleinern. Wählen Sie das
Basissymbolobjekt aus und ändern die Ankervoreinstellung in
die obere linke Ecke. Jetzt können wir die Position ändern. Es muss unter
der Gesundheitsleiste liegen. Vielleicht ist die Basis etwas zu groß, also ändern wir die
Breite und Höhe. Das sieht gut aus. Jetzt können wir es duplizieren. Verschieben Sie das Duplikat nach rechts und wiederholen Sie den Vorgang. Wir brauchten drei Symbole, da der Schildschutz drei Treffer
beträgt. Wählen Sie nun alle
Basissymbole aus und deaktivieren Sie sie. Wählen Sie das Canvas-Prefab aus. unter Overrides Wählen Sie unter Overrides das Schildsymbol aus und klicken Sie auf die Schaltfläche Anwenden,
wählen Sie diese Schaltfläche aus. jetzt in jedem Level Dieses Prefab wird jetzt in jedem Level Schild-Symbole
haben. Der nächste Schritt besteht darin, zum Shield-Skript
zu wechseln. Hier benötigen wir eine Reihe
von Spielobjekten. Ich nenne es Shield Base. Dies wird ein Verweis auf
die Schildsymbole sein. Wenn wir das Schild aktivieren, können
wir die For-Schleife verwenden
, um alle Symbole zu aktivieren. Dann mussten wir
eine Funktion erstellen, die Symbole
aktualisiert, wenn das
Schild das Bild aufnimmt. Lassen Sie uns also die
Update-UI-Funktion erstellen. Wir werden die Switch-Funktion verwenden. Wir überprüfen die Treffer, um die Variable zu
zerstören. Im Fall Null bedeutet das, dass die zu zerstörende
Variable gleich Null ist. Dann müssen wir alle Icons
deaktivieren. Am Ende des Falls verwenden
wir die Pause, um
die Switch-Funktion zu beenden. Im ersten Fall müssen wir
das erste Symbol aktivieren und die anderen
deaktivieren. Im zweiten Fall haben wir zwei Symbole
aktiviert. Im dritten Fall aktivieren wir alle Symbole in der
beschädigten Funktion. Stellen wir sicher, dass
die
Variable „Zu zerstörende Treffer “ Null ist, wenn
der Schild zerstört wird. Auch in dieser Funktion aktualisieren
wir die Benutzeroberfläche. Wir mussten auch aktualisieren, dass Sie
sich in der Reparaturfunktion befinden. Lass uns noch eine Sache machen. In dieser Sprachfunktion können
wir eine Standardschreibweise verwenden. Dies passiert, wenn die Variable, die wir
überprüfen und die auf Destroy trifft, einen
anderen Wert hat als jeder andere Fall. Wir haben keine anderen
Fälle als 012.3, aber wir können ein Debug-Protokoll erstellen. Wenn das passiert, stimmt
etwas nicht. Gehen wir zurück zu Unity. Wir müssen die
Symbole in das Array ziehen. Lass es uns versuchen. Wir brauchen eine Verstärkung des Schildes. Lassen Sie uns sie nun
als Schutzschild verwenden, damit wir sehen
können, ob die
Symbole aktualisiert werden. Wie Sie sehen können, funktioniert es. Wir sind noch nicht fertig. Das ist wichtig. Sie müssen die Verweise in
der Vorlage sin und
anderen Ebenen, die wir zum Testen
erstellt haben, aktualisieren der Vorlage sin und . Beachten Sie, dass wir keine Referenzen haben, wenn wir Override
für den Spieler verwenden und auf ein anderes Level
wechseln . Die Prefabs können sich keine
Verweise auf andere
Prefabs oder Objekte merken . Ich wiederhole, am
Ende des Kurses werden
wir die temporäre
Szene fertigstellen und dann
können Sie sie einfach duplizieren
, um ein Level zu erstellen. Nachdem Sie Ihre Niveaus aktualisiert haben, gehen
wir zur nächsten Lektion.
52. Shooting Power Up: Hallo zusammen. In dieser Vorlesung erstellen
wir eine Shooting Power App. Wenn wir es aufheben, bekommen
wir mehr Schießpunkte. Und wenn wir das Bild aufnehmen, verlieren
wir Schießpunkte. Lassen Sie uns zunächst
Schießpunkte erstellen. Wählen Sie die aus, die wir bereits
haben, und ändern Sie das Symbol. Jetzt können wir
es duplizieren und umbenennen. Passen Sie dann die Position an, duplizieren Sie sie erneut
und ändern Sie die Position. Wir brauchen noch einen. Dieser Punkt wird
eine gewisse Rotation haben. Also ändere den Namen. Lassen Sie uns nun Punkte duplizieren und sie auf der rechten
Seite des Raumschiffs
platzieren. Entfernen Sie das Minuszeichen
vom X-Wert, um
ihn symmetrisch zu gestalten. Für die letzte müssen
wir auch eine Rotation
ändern. Gehen wir nun zum Drehbuch für das
Spielerschießen. Lassen Sie uns einige Änderungen vornehmen
und das Drehbuch organisieren. Ich verschiebe
diesen Schießpunkt einfach unter das Schießintervall. Dann können wir ein
Header-Attribut hinzufügen. Dann erstellen wir einen Header
für Upgrade-Punkte. Jetzt benötigen wir Verweise auf
vier Transformationspunkte. Dann erstellen wir einen Header
für die letzten beiden Punkte. Bei der Rotation
müssen wir Punkte transformieren. Dann benötigen wir ein
Integer-Variablen-Upgrade-Level. Jetzt müssen wir
die Aufnahmefunktion ändern. Ich werde diese
Zeile für eine Sekunde kommentieren. Wir werden die Switch-Funktion verwenden. Es wird die
Upgrade-Level-Variable überprüfen. Im Fall Null sollten wir
nur von einem Punkt aus starten. Im ersten Fall sollten wir
zwei Punkte bestätigen, links und rechts. Ändern Sie den Grundwert, sollte
nach links zeigen , kann nicht positioniert werden. Dann duplizieren Sie es und stellen Sie
die richtige Kanone auf die richtige Position. Im zweiten Fall schießen wir
von drei Punkten
aus, von den einfachen Schießpunkten links und
rechts aus. Im dritten Fall sollten wir fünf Schießpunkte
bestätigen. Benutze das zweite angekommene Kanaan und eine zweite rechte
Kanonenstellung. Im vierten Fall haben wir
von allen Schießpunkten aus gezeigt, einschließlich der Punkte
mit Drehung. Es ist wichtig, die Rotation von
den Punkten aus anstelle der
Quaternionen-Identität zu verwenden . Wir können auch
den Standardfall hinzufügen
, der auf Wunsch kein
Debug-Log erstellt. Beachten Sie, dass wir die
Instantiate-Funktion häufig verwenden und viele Objekte
erstellen und zerstören
. In diesem Fall
können Kugeln manchmal die Leistung
auf Mobilgeräten beeinträchtigen. sich am Ende des Kurses den Abschnitt Optimierung an
und erfahren Sie, Sehen Sie sich am Ende des Kurses den Abschnitt Optimierung an
und erfahren Sie, wie wir ihn aktualisieren. Der nächste Schritt besteht darin,
eine öffentliche Funktion zu erstellen , die die Upgrade-Level-Variable
erhöht. Nachdem wir das Level erhöht
haben, müssen wir überprüfen, ob
es mehr als vier ist, was unser Maximum ist. Dann stell es einfach auf vier. Gehe zu Unity, verbinde oder
erfasse Punkte mit dem Script. Dann können wir
Overrides auf das Prefab anwenden. Lassen Sie uns nun eine PowerApp erstellen. Benutze das Health Power-Up Prefab. Wir werden es anpassen und ein neues
erstellen. Ändern Sie den Namen, Sprite, und entfernen Sie das Skript. Und lassen Sie uns ein neues Skript erstellen. Ich nenne es
Power Up Shooting. Das Drehbuch zum Prefab. Verwenden Sie On Trigger, Enter für die Funktion. Überprüfe, ob die Kollision mit dem Spieler
passiert ist. Dann benötigen wir die Komponente
„Spielerschießen “, die sogenannte
Upgrade-Funktion. Ich werde fest codieren, um das Upgrade um eins zu
erhöhen, aber Sie können eine Variable erstellen und sie hier einfügen. Wenn du willst. Zerstöre dann die Power App. Gehen wir zurück zu Unity. Erstellen Sie ein PowerApp-Prefab und löschen Sie eines aus der Szene. Dann müssen wir
unsere skriptfähigen Objekte im Prefab
des Arrays finden . Um das Testen zu vereinfachen, können
wir diese
Power App jederzeit binden. Lass es uns versuchen. Wie Sie sehen können, funktioniert es. Lass uns im Spieler-Schieß-Skript dafür sorgen, dass der
Spieler
ein verbessertes Level verliert, wenn er Schaden
erleidet Erstelle die Funktion „
Upgrade verringern“. Verringern Sie das Level um eins. Und stellen Sie auch sicher, dass
es unter Null gehen kann. Gehe zum Spielerstatistiken-Skript. Wir benötigen einen Verweis auf das Drehbuch für das
Spielerschießen. Verwenden Sie zu Beginn
die Get-Komponente. Wenn der Spieler dann das
Bild aufgenommen hat, rufen
wir die Funktion zum Verringern des
Upgrades auf. Das ist alles, was wir zum Codieren brauchen. Lass uns versuchen, eine Power App zu kaufen, dann Schaden zu erleiden und das
Upgrade-Level sollte sinken. Schön, einen schönen Tag zu haben und
uns in der nächsten Vorlesung zu sehen.
53. Power-Ups Update: Hallo alle zusammen. Lassen Sie uns
Power Apps Scripts schnell aktualisieren. Es gibt einen Fall, in dem ein Spieler die Power Apps
nicht in die Hand nimmt Diese Power-Ups würden ins Unendliche
fallen. Also müssen wir Owned
became invisible verwenden. Dies ist dieselbe Funktion, die
wir für Kugeln und
Meteore und alles, was vom Bildschirm verschwinden
kann, verwenden . Hier müssen wir
das Power App GameObject zerstören diesen Code in jedes
Power Apps Script
kopieren. Und das war's. Danke fürs Zuschauen und wir sehen uns
in der nächsten Vorlesung.
54. Boss und Vorbereitungen: Hallo alle zusammen.
Schauen wir uns das Konzept an , das wir anwenden werden, um den feindlichen Boss zu
erstellen. Die Idee ist, Staaten zu schaffen. Jeder Staat wird
für eine Art von Verhalten verantwortlich sein. Zum Beispiel
wird die Autobahn dafür verantwortlich sein, dass der gegnerische Boss erscheint. Dann können wir
einen Schießstaat, einen speziellen
High-Tech-Staat und so weiter haben. Der Staat, es wird eine
Kinderkrise der Leute aus dem Basisstaat geben. Jeder Staat erbt die
Run-State-Funktion, die
Logik für diesen Zustand enthält. Wir werden auch ein
Boss-Controller-Skript haben. Der Controller wird über
die
Funktion „Status ändern“ verfügen , die für
die
Änderung von Zuständen verantwortlich ist. ZB nachdem wir einen
Zustand ausgeführt haben und dieser abgeschlossen ist, rufen
wir die
Change-State-Funktion auf, um den Zustand zu ändern. Das ist die Logik, die wir verwenden werden. Natürlich werden wir
den Boss am
Ende unseres Levels ausgeben . Lassen Sie uns nun
unser Boss-GameObject erstellen. Gehe zu den feindlichen Sprites, benutze den großen lila Sprites, ändere die Reihenfolge in der Ebene und ändere
dann den Namen. Lassen Sie uns einige Komponenten hinzufügen. Wir benötigen eine 2D-Komponente für starre
Körper. Mach es kinematisch. Dann fügen wir einen
Box Collider 2D hinzu. Klicken Sie auf die Schaltfläche Bearbeiten
und passen Sie die Größe an. Wir brauchen noch einen Collider. Passen Sie auch die Größe an. Beenden Sie den Bearbeitungsmodus und fügen Sie dann
Composite Collider 2D hinzu. Der Box Collider dort
muss von Composite verwendet werden. Lassen Sie uns außerdem die Option
Ist Trigger aktivieren. Wir müssen die Ebene ändern und den Feind
auswählen, um einige Fehler zu
vermeiden. Vorerst müssen wir Collider
deaktivieren. Nachdem wir in der nächsten Vorlesung die grundlegenden Dinge
erledigt haben, werden
wir einen Basisstatus
und beide Controller-Skripte erstellen. Wir sehen uns dort.
55. Boss States und Controller: Hallo zusammen. In dieser Vorlesung schaffen wir
eine Grundlage dafür, dass
das staatliche System und die Steuerung in Skripten
organisiert bleiben. Lassen Sie uns einen
lila Box-Ordner erstellen. Jetzt können wir zwei Skripte erstellen. Der erste wird beide Basisstatus
sein und der zweite wird beide Controller
sein. Die Drehbücher zu Purple Boss. Ich verschiebe sie einfach in den Inspector Open Base State. Hier können wir
die Aktualisierungsfunktion löschen. Jetzt brauchen wir Variablen
und KMER-Grenzen. Aber anstatt sie zu schreiben, kann
ich zur
Spielersteuerung gehen und sie kopieren. Wir benötigen diese
Offset-Variable nicht. Dies ist eine Basisklasse. Unterklassen
benötigen also möglicherweise eine dieser Variablen. Deshalb müssen wir die
Zugriffsmodifikatoren ändern , um sie zu schützen. In der Weckfunktion kam
Set Main zu
unserer Hauptkamera. Gehen wir zur Spielersteuerung. Scrollen Sie nach unten und kopieren Sie diesen Teil. Wenn wir Variablen definieren, platzieren Sie sie am Anfang. Wir können die Zahlen ein bisschen ändern,
weil der Bus etwas
größer ist und er
in der oberen Hälfte des Bildschirms sein muss . Außerdem muss Start eine
geschützte virtuelle Funktion sein. Dann erstellen wir eine öffentliche
virtuelle Run-State-Funktion. Lassen Sie es leer und
erstellen Sie dann ein weiteres Publikum. Wir haben die Staatsfunktion eingestellt. Oder die beiden Zustände, wir verwenden Koroutinen
und diese
Stopp-Status-Funktionswerte Stop Paul Curtains. Gehen wir jetzt zum Buscontroller. Wir benötigen die
Update-Funktion nicht. Außerhalb des Unterrichts. Lassen Sie uns Aufzählungen erstellen. Wir werden Aufzählungen verwenden, um beide Zustände zu
identifizieren. Also öffentliche Aufzählung, beide geben an. Und jetzt schreiben wir die
Staaten, die wir haben werden. Wir brauchen eine Autobahn,
wenn der Boss auftaucht. Wir brauchen eine SMS
, die ich Feuer rufe. Wir brauchen einen speziellen Angriffsstaat. Und in diesem Bundesstaat können Sie
so viele Staaten hinzufügen, wie Sie möchten. Dann erstellen wir eine öffentliche
Change-a-State-Funktion. Es wird beide
Zustände als Parameter annehmen. Wir werden diese Funktion verwenden
, um Zustände zu ändern. Verwenden wir die
Switch-Funktion, um den Status zu überprüfen. Wenn der Staat Enter ist,
dann ist da etwas. Wir können diesen
Teil des Codes kopieren und für
jeden Staat, den wir haben, einfügen. Überprüfen Sie jetzt einfach
verschiedene Staaten. Großartig, wir haben genug, um mit der Gründung von Staaten zu
beginnen. In der nächsten Vorlesung erstellen
wir die Autobahn.
Wir sehen uns dort.
56. Betritt den Staat: Hallo alle zusammen. In dieser Vorlesung erstellen wir
das State Enter für den Chef. Die Autobahn bestimmt,
ob der Bus erscheint. Und meine Idee ist, ihn an einen bestimmten
Punkt auf dem Bildschirm
gehen zu lassen. Dann ändere den Status. Lassen Sie uns ein neues Script erstellen. Ich nenne es beides. Geben Sie dem Chef
das Skript ein und öffnen Sie es. Zuerst. Lassen Sie uns statt
modernem Verhalten von
beiden Basisstaaten erben. Denken Sie daran, dass
wir in der Elternklasse zwei virtuelle Funktionen haben
, die wir überschreiben können. Außerdem können wir
die Startfunktion überschreiben. Lassen Sie uns eine
Vektorvariable mit zwei Vektoren erstellen und sie Enter Point
nennen. Diesem Vektor weisen wir eine Position zu und der Bus
fliegt zu dieser Position. Als nächstes benötigen wir eine Geschwindigkeitsvariable. Lassen Sie uns die
Startfunktion überschreiben. Wir können Bayes Start verwenden, um Variablen für
Bildschirmgrenzen zu definieren. Dann müssen wir
einen Punkt wählen , an dem die
beiden Sevillas erscheinen. Ich nehme 0,5 auf der
X- und 0,7 auf der Y-Achse. Wir können die
Aktualisierungsfunktion löschen. Wie gesagt, wir legen Wert Quadratwurzelfunktionen, um Zustandsverhalten zu
definieren. Der Eye Enumerator run
interstate function. Dann verwenden wir den While-Loop. Der Abstand
zwischen dem Boss und dem
Einstiegspunkt ist also größer als
eine wirklich kleine Zahl. Wir müssen den Bus mit der Funktion
Move towards an diesen Punkt bringen. Zuerst schreiben wir die
Position des Busses, dann die Position, die
wir erreichen müssen. Und dann wählen wir
die Geschwindigkeit, die time.DeltaTime multipliziert
wird. Dann warten wir auf
das Ende eines Frames. Wir wiederholen dies, bis wir diese Bedingung
erfüllen. Nachdem wir die while-Schleife verlassen
haben, müssen wir den Status ändern. Gehen wir also in die Elternklasse. Beide Basisstaaten. Erstellen Sie in der Wake-Funktion eine geschützte
Variable für
beide Controller . Und holen wir uns die Komponente. Denken Sie daran, dass
wir im
Buscontroller-Skript die
Change-State-Funktion haben, nach der wir suchen. Geben Sie im Bus das Skript ein. Wir können den Controller verwenden und die Change-State-Funktion
aufrufen. Nach der Autobahn
fahren wir in den Fire State. Jetzt müssen wir
diese Funktion aufrufen, um den zufälligen Zustand zu überschreiben. Hier fängst du an zu korrigieren. Lassen Sie uns den Stopp-Status außer Kraft setzen. Wir können einfach
die Basisfunktion verwenden. Um mich an dich zu erinnern, diese Funktion
stoppt das Keratin. Gehe jetzt zu beiden Controllern. Erstellen Sie eine Referenz für
die Busautobahn. In der Schalterfunktion. Wenn wir auf der Autobahn sind, verwenden
wir Run State, um Bundesstaaten zu testen. Lassen Sie uns einen
Kugelvariablentest erstellen. Und der Enum-Teststatus. Am Anfang. Wenn
der Test wahr ist, wechseln wir in
den Teststatus. Gehen wir zu Unity. Ziehen Sie das Boss Enter-Skript
in das leere Feld. Hier können Sie das Bundesland wählen. Natürlich brauchen wir Enter. Lassen Sie uns den Boss
aus dem Bildschirm bewegen. Wenn wir das Spiel starten, sollte
der Boss
zu unserem Einstiegspunkt gehen. Vergessen
Sie natürlich nicht, die Geschwindigkeit einzustellen. Wie Sie sehen können, erscheint der
Bus. Wenn wir den Spielmodus verlassen, Debug-Meldung angezeigt. Doppelklicken wir darauf. Sie können ab Zeile 33 sehen, dass es sich um
einen Debug handelt. Das ist der Feuerzustand. Und wenn Sie sich erinnern, am Ende unserer Autobahn ändern
wir den Bundesstaat auf Feuer. Also funktioniert alles. In der nächsten Vorlesung erstellen
wir den Feuerzustand.
57. Testzustände: Hallo alle zusammen. Dies ist eine kurze Vorlesung, die ich
beschlossen habe, hier zu platzieren. Ich wollte dir zeigen,
wie man
Zustände richtig testet und beide
Bewegungseinschränkungen besprechen kann. Bevor wir beginnen, können Sie
das Boss Base State Script
aus dem Boss entfernen das Boss Base State Script , falls Sie es noch nicht getan haben. Dies ist eine Basisklasse und muss sich nicht auf dem Objekt befinden. Nur ein dummer Fehler. Es wird nichts kaputt machen, es wird
nur nicht benötigt. Öffnen wir das
Boss-Basisstatus-Skript. Wie Sie in der
virtuellen Startfunktion sehen können, erhalten
wir Bewegungseinschränkungen. Das wird gut funktionieren
, da wir normalerweise am Ende eines Levels auf
den Bus
antworten. Beim Testen haben wir es jedoch am Anfang
gedreht und diese Einschränkungen sind nicht korrekt
eingestellt, weil
es eine Maschine ist. Wenn Sie sich erinnern, verwenden
wir bei der
Spielersteuerung einen Vorhang, um dem Spieler
Grenzen zu setzen. Sie können sehen, dass
wir eine Weile warten bevor wir
Einschränkungen festlegen. Ich habe erklärt, warum wir das in der Vorlesung über die Kameragrenzen machen
, wegen der Kinomaschine. Wenn wir also beide Eingabetaste verwenden, können
Sie sehen, dass sie
die grundlegende Startfunktion verwenden , um Einschränkungen festzulegen. Denken Sie daran, dass diese Klasse
eine untergeordnete Klasse
beider Raumzustände ist. Wenn wir also
zu Beginn eines Levels den Boss überspannen, können
wir die falschen
Grenzen setzen Um
den Bus richtig zu testen und
die Grenzen richtig
zu setzen, müssen
wir wie folgt vorgehen. Stellen Sie sicher, dass die
Testvariable
wahr ist , und wählen Sie den Geschmackszustand. Dann wurde das Boss-Objekt deaktiviert. Geh zum Simulator. Ich habe im Fenster spielen ausgewählt, das Spiel
gestartet und
dann den Boss aktiviert. Auf diese Weise werden die
Bewegungseinschränkungen für den Bus korrekt eingestellt. Denkt daran, das ist alles
nur zum Testen in einem echten Spiel, bei dem man am Ende eines Levels den
Bus raubt. Also haben wir dieses Problem nicht. Und das war's für diese Vorlesung. Danke fürs Zuschauen
und bis bald.
58. Boss Fire: Hallo zusammen. In dieser Vorlesung erstellen
wir einen
Schießzustand für den Bus. Wie Sie sehen können, wird der Bus mit den Dreharbeiten
beginnen, sobald er die Autobahn
beendet
hat, die wir in der vorherigen Vorlesung genommen haben. Lassen Sie uns zunächst
Schießpunkte erstellen. Sie müssen ein Kind sein,
Objekte des Chefs. Wir brauchen zwei Schießpunkte, vor
den Kanonen
platzieren. Als Nächstes erstellen wir ein neues Skript. Nenn es beides, schicke das Script an den Boss und öffne es. Diese Klasse muss eine untergeordnete
Klasse beider Basisstaaten sein. Wir können die
Standardfunktionen löschen. Dann brauchen wir einige Variablen. Wir brauchen einen Schwimmer mit variabler Geschwindigkeit. Dann Float, schieß die Rate ab. Wir benötigen eine
Spielobjektvariable für das Bullet Prefab. Um das Skript zu organisieren, verwenden
wir den Header. Jetzt benötigen wir ein Transformationsfeld
, um die Schießpunkte zu speichern. Wir können die
Funktion Eye Enumerator rund um einen Feuerzustand erstellen . Wir brauchen einen Float,
Shoot the Timer, einen Float Fire State Timer und einen Float Fire
State Exit Time. Und das erhält
einen zufälligen Wert, 5-10 s. Ich denke , es ist eine gute Idee, die Dauer
dieses Feuerzustands
zufällig zu bestimmen. Dann verwenden wir den Vektor
für die Zielposition. Der Bus muss zu dieser Position
fahren, die zufällig zwischen
unseren Höchstgrenzen lag. Verwenden wir eine While-Schleife. Dabei ist der Timer für den Feuerzustand kleiner oder gleich der Austrittszeit für
den Feuerzustand. Der Boss muss
zur Zielposition gehen und Kugeln abfeuern. Wenn der Abstand
zwischen dem Boss und der Zielposition
größer als eine
wirklich kleine Zahl ist . Dann bewege dich weiter. Sonst. Das heißt, wir haben
den Zielpunkt erreicht. Dann wählen wir wieder eine andere
Position, die zufällig zwischen
unseren maximalen Grenzen lag. Denken Sie daran, dass wir diese
Variablen in der Basisklasse definieren. Während
der Bus fährt, muss
er natürlich Kugeln abfeuern. Lassen Sie uns den
Soll-Timer um time.deltaTime erhöhen. Falls der Timer größer
oder gleich der Schussrate sein sollte. Dann schießen wir von
Schießpunkten aus. Benutze eine For-Schleife, um alle Punkte zu
durchlaufen. Dann sollte der Timer zurückgesetzt werden. Dann warten wir auf
das Ende eines Frames. Erhöhen Sie dann den
Buyer-State-Dimer um Time.DeltaTime. Nach genug Zeit verlassen
wir den While-Loop. Lassen Sie uns nun die
Run-State-Funktion überschreiben. Verwenden Sie die Start-Coroutine
, um den Feuerstatus zu starten. Überschreiben Sie dann den Stoppzustand
und verwenden Sie die Basisfunktion. Genau wie zuvor. Gehen wir zum
Buscontroller-Skript. Erstellen Sie einen Verweis
auf die beiden Feuer. in dieser Sprachfunktion
unter dem Brandfall das Busfeuer, Verwenden Sie in dieser Sprachfunktion
unter dem Brandfall das Busfeuer, das
um eine Zustandsfunktion herum. Gehe zu Unity. Stellen wir die Geschwindigkeit ein. Stellen Sie dann die
Schussrate auf eins ein, was bedeutet, dass
wir jede Sekunde
oder die vorgefertigte Kugel dieselbe verwenden können, die
wir für lila Gegner verwenden. Als Nächstes ziehen wir die
Schießpunkte, die wir erstellt haben. Das letzte Ding, ziehe
das Boast-Fire-Skript. Wir können die Autobahn
als Teststatus verlassen, da am Ende der Autobahn der Boss
den
Status auf Feuer ändern sollte. Lass es uns versuchen. Wir sehen die Autobahn und
wechseln in den Feuerzustand. Beachten Sie, dass der Bus nach dem Ende des
Brandzustands hält Wir müssen den Brandzustand wiederholen oder ihn in einen
anderen Zustand ändern, z. B. den speziellen Ethikzustand. Geh zurück zum Boss Fire-Skript. In der Funktion Eye Enumerator. Außerhalb der while-Schleife nennen
wir die
Change-State-Funktion. Ändern Sie ihn in den räumlichen Zustand. Wenn Sie möchten, können Sie etwas Zufälligkeit
hinzufügen. Wir können eine Zufallszahl bekommen. Das kann Null oder Eins sein. Wenn die Zahl gleich Null ist, wiederholen Sie den Feuerzustand. Andernfalls ändere
es zu speziell. das Testen zu vereinfachen, werde ich es
immer auf
den Sonderstatus ändern. Und das war's. In der nächsten Vorlesung erstellen
wir den
Spezialangriffszustand. Wir sehen uns dort.
59. Besonderer Angriff: Hallo zusammen. Lassen Sie uns eine
spezielle ED-Technologie für den Chef entwickeln. Der Boss feuert ein großes, langsames Projektil ab
, das dem Spieler Schaden zufügen kann. Das Projektil
platzt ebenfalls nach einiger Zeit und schickt kleinere Projektile
in eine kreisförmige Richtung. Lassen Sie uns zunächst
ein weiteres Kinderspielobjekt erstellen. Ich nenne es einen speziellen Punkt, denn ab diesem Punkt wird
der Bus
einen räumlichen Angriff abfeuern. Stellen wir es vor
das Hauptkanaan. Dann erstellen wir ein neues Script. Das wird beides räumlich sein. Füge das Script zum
Boss hinzu und öffne es. Wir müssen von
der Boss-Basisstaatenklasse erben. Dann erstellen wir Variablen. Wir brauchen eine Schwimmerdrehzahlvariable. Dann eine Float-Wartezeit. Diese Variable
bestimmt, wie lange der Bus nach
dem Spezialangriff warten wird. Dann haben wir eine
GameObject-Spezialkugel gemacht. Natürlich brauchen wir
einen Schießpunkt. Dann benötigen wir einen Vektor zum Zielpunkt für
die erste Position. Lassen Sie uns die
Startfunktion überschreiben. Wir müssen
die Basisfunktion nicht verwenden. Lege einfach den Zielpunkt fest. Wenn wir ein Viewport zum
Weltpunkt verwenden, um zu bestimmen ,
von welchem Punkt aus der Boss den
Special Ed Tech abfeuert. Ich nehme 0,5
für x und 0,9 für das Warum. Du kannst vielleicht ein bisschen tiefer gehen. Lassen Sie uns nun die Funktion Eye
Enumerator run spatial
state erstellen . Zuerst muss der Bus zum Zielpunkt
fahren. Wir verwenden eine While-Schleife und überprüfen die Entfernung zwischen dem Boss
und der Zielposition. Die Entfernung ist zwar
größer als 0,01, wir müssen den Boss bewegen. Wir verwenden die Bewegung in Richtung
Funktion wie zuvor. Dann warten wir auf das Ende
eines Frames außerhalb
der While-Schleife, was bedeutet, dass sich der Boss an der Zielposition
befindet. Wir instanziieren eine spezielle Kugel. Dann warten wir ein bisschen und ändern dann den Zustand auf Feuer. Jetzt müssen wir
die Funktionen Run State und
Stop State überschreiben . Verwenden Sie Start Carotis. Gehe zum Buscontroller-Skript. Hier brauchen wir einen Verweis
auf das Boss-Special. Sie dann in der
Change-State-Funktion Verwenden Sie dann in der
Change-State-Funktion den Bus Spatial Run State. Gehe zu Unity. Und lassen Sie uns Variablen setzen. Geschwindigkeit. Das kann es auch sein. Wir können 5 s warten. Wir haben das
Spatial Bullet noch nicht vorgefertigt, aber wir können
den Schießpunkt, den wir zuvor erstellt haben
, verbinden . Lassen Sie uns nun ein
spezielles Bullet Prefab erstellen. Gehe zu feindlichen Sprites. Benutze den Big Bullet Sprite. Ändern Sie den Namen, oder
sie befinden sich in einer Ebene. Stellen Sie dann die
Kollisionsebene auf feindliche Projektile ein. Wir können es ein bisschen kleiner machen. Das ist gut. Fügen Sie eine
2D-Komponente für starre Körper hinzu und machen Sie sie kinematisch. Dann brauchen wir einen
Circle Collider 2D. Es muss ein Auslöser sein. Wir können die Größe anpassen und den Radius etwas
verringern. Wie gesagt, diese
Kugel wird platzen und viele Kugeln in
kreisförmiger Richtung. Ich möchte zum Beispiel
sechs Minuten Zeit mit Kugeln verbringen, also teile ich 360 durch sechs. Das Ergebnis ist 60. Erinnerst du dich daran? Und dann erstellen wir ein untergeordnetes Objekt des
räumlichen Geschosses. Ich nenne es Spawn Point. Die Idee ist, die
Drehung auf der Z-Achse zu ändern. Lassen Sie uns
diesen Pfundpunkt duplizieren. Ändern Sie die Drehung auf 60, duplizieren
Sie sie erneut und
erhöhen Sie die Drehung um 60. Das heißt, es wird ein-zwanzig
sein. Wiederholen Sie den Vorgang bis zum
letzten Spannpunkt Die Drehung hat einen Wert von 300. Du solltest sechs Punkte haben. Beachten Sie, wie sich die grüne Achse
ändert, wenn wir die Drehung ändern. Das ist wichtig. Lassen Sie uns nun ein neues Skript erstellen. Räumliche Kugel. Fügen Sie das Skript zum
Objekt hinzu und öffnen Sie es. Zunächst benötigen wir einige Variablen. Wir brauchen Schwung, Schaden, Geschwindigkeit und Rotationsgeschwindigkeit, weil sich
diese Kugel dreht. Wir benötigen auch eine 2D-Referenz für starre
Körper. Wir benötigen auch einen Hinweis auf
das Minutenkugel-Prefab. Als letztes brauchen wir
eine Reihe von Punkten. Beginn setzen wir in der die Geschwindigkeit auf Vektor
zwei nach unten
multipliziert mit Aktualisierungsfunktion
die Geschwindigkeit auf Vektor
zwei nach unten
multipliziert mit der Geschwindigkeit. Und lassen Sie uns die Kugel
mit Transform drehen, die sich dreht. Drehe die Kugel auf der Z-Achse. Verwenden Sie die Rotationsgeschwindigkeit multipliziert
mit time.deltaTime. Dann erstellen wir die Funktion Eye
Enumerator Explode. Hier müssen wir
die räumliche Kugel zerstören und viele Kugeln
instanziieren. Stellen wir zunächst die
zufällige Explosionszeit ein. Dann warten wir diese zufällige Zeit. Verwenden Sie eine For-Schleife, um alle erläuterten Punkte zu
durchgehen. Wir instanziieren eine winzige Kugel
an der Spawnpunktposition. Und jetzt ist das wichtig. Wir verwenden die
Drehung dieses Grenzpunkts. Dann zerstören wir das
räumliche Geschossobjekt. In der Startfunktion rufen
wir die Explode-Funktion
mit Startcoroutine auf. Natürlich
kann diese Kugel dem Spieler auch Schaden zufügen. Lassen Sie uns also
ihren eigenen Trigger erstellen. Geben Sie die Funktion ein. Wir suchen nach dem Tech Player und beschädigen ihn dann. Danach wurde die Kugel zerstört. In diesem Fall
reagieren wir nicht auf winzige Kugeln. So wie zuvor. Lass uns einen benutzen wurde unsichtbar. Geh zurück zu Unity. Stellen Sie den Schaden ein. Geschwindigkeit muss gelb sein. Stellen Sie dann die Drehgeschwindigkeit ein. Ziehen Sie den starren Körper 2D. Wir haben noch nicht viele Aufzählungszeichen, aber wir können
Expoundpunkte in das Array ziehen. Um die Erstellung
vieler Kugeln zu beschleunigen, können
wir das Purple
Bullet Prefab verwenden. Das ist der, den wir
für lila Gegner verwenden. Ändern Sie den Namen,
entfernen Sie das Skript und erstellen Sie ein neues. Nennen wir es Mini-Bullet. Das Skript zum
Mini-Bullet-Objekt. Und öffne es erneut, um den Vorgang zu
beschleunigen Kopieren
wir den Code aus
dem Purple Bullet-Skript. Wenn Sie es nicht geöffnet haben, können
Sie es über den
Solution Explorer finden. Lassen Sie uns das gesamte Drehbuch kopieren. Wir werden zwei Änderungen vornehmen. Füge es ein. Zuerst füge ich einfach ein
serialisiertes Feld hinzu und entferne
den Gate-Komponententeil. Dann der wichtige Teil, ersetze den Vektor zwei nach unten
durch transformiere ihn nach oben. Wenn Sie sich die Beschreibung ansehen, ist
dies die grüne Achse
der Transformation. Denken Sie daran, dass beim
Drehen von Objekten auch
das grüne X gedreht wird. Die winzige Kugel
bewegt sich also in diese Richtung. Geh zurück zu Unity. Stellen wir den Schaden und die Geschwindigkeit ein. Vergiss den starren Körper nicht. Erstellen Sie jetzt ein neues Prefab. Lösche einen aus der Szene. Wählen Sie das räumliche Aufzählungszeichen. Ziehe das Mini-Kugel-Prefab. Lassen Sie uns nun ein
spezielles Bullet Prefab erstellen. Lösche einen aus der Szene. Wähle den Boss aus. Ziehen Sie das räumliche Aufzählungsfeld und ziehen Sie die beiden räumlichen
Zustände in das leere Feld. Lass es uns testen. Ich werde den Test
von der Autobahn aus starten. Wir können die Autobahn sehen, dann den Feuerstaat. Und wir sollten
den räumlichen Zustand sehen. Nach einiger Wartezeit fährt
der Bus dann in den Feuerstaat. Schon wieder. Sehr nett. Danke fürs Zuschauen und wir sehen uns
in der nächsten Vorlesung.
60. Boss Stats und Death: Hallo alle zusammen. In dieser Vorlesung erfahren
wir, wie der Bus beschädigt
und zerstört werden kann. Bevor wir anfangen, etwas
zu programmieren, lassen Sie uns schnell Animationen erstellen. Weißt du, das Verfahren ist das
gleiche wie bei anderen Feinden. Wählen Sie den Bus aus und gehen Sie
zum Animationsfenster, erstellen Sie eine neue Animation. Dies bedeutet, dass beide entweder das Standard-Sprite
verwenden. Dann erstellen wir
eine weitere Animation , die sowohl das Bild sein wird. Stellen Sie die Samplerate auf 30 und verwenden Sie das weiße Sprite. Beachten Sie, dass
wir
am Ende der Vorlesung dieses breite
Sprite durch etwas anderes ersetzen werden. Es wird besser aussehen. Gehen Sie zum Ordner Animations. Wählen Sie sowohl das Bild
aus als auch deaktivieren Sie eine Loop-Time, öffnen Sie den Animator
und wählen Sie den Boss aus. Erstellen Sie Übergänge. Wir brauchen einen
Triggerparameterschaden. Genau wie bei anderen Animationen, von Leerlauf bis Schaden, wurde Exit-Zeit
deaktiviert. Und benutze Parameter. Dann ab Schaden, um entweder die
Exit-Zeit mit dem Wert eins zu verwenden . Als letztes wählen Sie sowohl
das Bild aus als auch fügen Sie ein Tag hinzu. Es wird das MG sein. Jetzt
können wir ein neues Script erstellen. Nenn es beide Statistiken. Dieses Skript wird
von der gegnerischen Klasse erben. Nur zur Erinnerung In der gegnerischen Klasse haben
wir viele Variablen und Funktionen, die alle Gegner verwenden. Jetzt benötigen wir einen Verweis
auf den Buscontroller. Wir können die
Standardfunktionen löschen. Lassen Sie uns die gehörte Sequenz überschreiben. Hier starten wir
die Schadensanimation und deaktivieren die Auslösung,
falls sie bereits läuft. Wir verwenden diese
Technik bereits im Kurs, also gehe ich etwas schneller. Als Nächstes müssen wir diese Reihenfolge
überschreiben. Hier müssen wir den Status auf
Tod
ändern und das Explosions-Prefab instanziieren
. Ich stelle einfach eine zufällige
Drehung für die Explosion ein. Außerdem muss der Spieler das Bild aufnehmen, wenn er mit
dem Boss
kollidiert.
Verwenden Sie dazu den On Trigger
Enter, um die Funktion zu aktivieren. Dies ist das gleiche
Verfahren wie zuvor. Geh zu Unity, das
Drehbuch zum Boss. Dann müssen wir
einige Variablen setzen. Das ist ein Kontaktschaden. Verwenden Sie den Animator
von diesem Objekt aus. Vergiss nicht,
beide Controller zu ziehen. Lassen Sie uns nun ein weiteres Skript erstellen. Nenn es sowohl Tod als auch öffne es. Wir müssen von beiden
Basisstatus-Löschfunktionen erben. Lassen Sie uns nun den Run-Status überschreiben. Wenn der Boss stirbt, verwenden
wir End Game Manager und
beginnen mit der Lösungssequenz. Als Nächstes deaktivieren wir
das Boss-Spielobjekt. Gehe jetzt zu beiden Controllern. Wenn der Boss
in einem toten Zustand ist, müssen wir
alle anderen Staaten stoppen. Verwenden Sie also
für jeden Bundesstaat den Status Stopped. Dann müssen wir wie immer eine Referenz
erstellen. Schulden des Chefs. In diesem Fall. in der Switch-Funktion Verwenden Sie in der Switch-Funktion beide den Status Debt Run. Gehen wir zu Unity, zum Bus, das
Drehbuch zum Boss. Jetzt können wir Collider aktivieren
und Boss Death in
das leere Feld ziehen . Lass es uns versuchen. Wie Sie sehen können, können wir den Boss
beschädigen und zerstören. Aber ich denke, dass die
Verbreitung ein bisschen zu viel ist. Also lasst uns die Animation ändern. Wählen Sie den Boss aus,
gehen Sie zur Animation und öffnen Sie beide
Bildanimationen. Ersetzen Sie das weit verbreitete
durch das Standardformat, klicken
Sie dann auf die Aufnahmetaste
und ändern Sie die Farbe. Sie können experimentieren und sehen
, was am besten aussieht. Versuchen wir es mit etwas Gelb
und einem niedrigeren Alpha-Wert. Mal sehen, wie es aussieht. Ich denke, es ist besser. Die Explosion ist etwas klein, also lasst uns eine größere erstellen. Benutze das Fertighaus, das wir haben. Benennen Sie es um und ändern Sie die Größe. Erstellen Sie dann ein neues Prefab. Wählen Sie den Boss aus und
ersetzen Sie das Fertighaus. Wir können einen
von der Szene löschen. Nett. Das nächste, was wir lösen
müssen, ist eine Kollision zwischen dem
Boss und dem Schild. An diesem Punkt zerstört der Schild den Boss
sofort . Lass uns das ändern. Wählen Sie den Boss aus und erstellen Sie ein neues Tag. Ich nenne es Boss. Benutze es für das Busobjekt. Dann müssen wir
das Shell-Skript öffnen. Wie du siehst,
wird der Schild viel
Schaden anrichten, da er darauf ausgelegt ist, kleinere Gegner sofort zu
zerstören. Jetzt können wir überprüfen,
ob die Kollision mit einem Objekt
passiert ist
, das den Big Boss hat. Du entscheidest, was passiert? Ich zerstöre den Schild
anstelle des Bosses. Setze also Treffer, um es zu zerstören, auf
Null und beschädige den Schild. Kehren Sie dann zurück und
führen Sie den folgenden Code nicht aus. Aber lass es uns versuchen. Nett. Es funktioniert. Wir sehen uns in der nächsten Vorlesung.
61. Spawn-Boss: Hallo zusammen. In dieser Vorlesung zeige
ich Ihnen, wie
Sie am Ende eines Levels
den Bus überspannen und den Boss
auswählen. Dann können wir
die Testvariable deaktivieren. Öffnen Sie das
Buscontroller-Skript In der Startfunktion und setzen wir den
Status auf Enter. Kehren Sie zu Unity zurück und
wählen Sie eine Gewinnbedingung aus. Hier haben wir die Dauer
des Levels und
Verweise auf Spawner. Öffne das Script. Wir brauchen eine
Ballvariable, seinen Boss. In der Aktualisierungsfunktion verwenden
wir
nach Ablauf der Zeit die
Sequenz Start Resolved, verwenden
wir
nach Ablauf der Zeit die
Sequenz Start Resolved um
das Ergebnis des Levels zu bestimmen. Lass uns das nur machen, wenn
es im Level keinen Boss gibt. Wir überprüfen die Bullenvariable. Wenn has both falsch ist, dann starte die Sequenz. Beachten Sie, dass wir Spawner immer
deaktiviert haben. Das ist der wichtige Teil. Geh zurück zu Unity. Dieses Level hat den Boss. Setzen wir die
Variable also auf true. Die Idee ist, den Boss zu überspannen , wenn der feindliche
Schraubenschlüssel deaktiviert ist. Also salate Enemy Spanner
und öffne das Skript. Lassen Sie uns eine
Spielobjektvariable für das Boss-Prefab erstellen. Verwenden wir die eigene
deaktivierte Funktion, die aufgerufen wird, wenn das Objekt, in diesem Fall
Spanner, deaktiviert ist. Zunächst überprüfen wir, ob das
Boss-Prefab nicht Null ist. Wir machen das, weil
wir in anderen Levels und vielleicht keinen Boss haben werden. Das verhindert also Fehler. Aber wenn wir es haben, dann lassen Sie uns einen
Vektor für die Pound-Position erstellen. Stellt sicher, dass sich das
außerhalb eines Bildschirms befindet. Verwenden Sie für die Y-Achse eine
Zahl größer als eins. Dann instanziieren Sie das
Boss-Prefab an dieser Position. on disabled wird jedoch
auch aufgerufen, wenn wir auf
eine andere Ebene wechseln oder das Exportieren von
Objekten
neu gestartet haben , während wir Änderungen vorgenommen haben, da dies zu Fehlern führen kann. Um das Problem zu beheben, müssen wir eine weitere Bedingung
hinzufügen. Geht zur Win-Bedingung, erstellt einen öffentlichen Bool, kann Boss erklären
und false als
Standardwert setzen , wenn
der Timer abgelaufen ist. Und wir haben einen Boss in dem
Level, das der Fall ist, dann können beide auf wahr gesetzt werden. Wir müssen diesen Wert kennen bevor Spawner deaktiviert werden. Verschieben Sie also die if else-Anweisung oben, bevor wir
die Spawner deaktivieren. In Enemy Spawner. Erstellen Sie eine Referenz
für die Wann-Bedingung. In der nicht deaktivierten Funktion. Prüfe, ob die Windbedingungen
erklären können, dass der Boss falsch ist. Dann eine Rückkehr und nicht ausführen. Der Code unten. Das ist alles, was wir zum Codieren brauchen. Kehren Sie zu Unity zurück und erstellen Sie ein lila Boss-Prefab. Lösche einen aus dieser Szene, wähle einen feindlichen Schraubenschlüssel aus und
ziehe das Boss-Prefab. Ziehen Sie auch das
Win-Condition-Objekt. Jetzt wähle ich eine
Gewinnbedingung für den Test aus. Stellen wir die Dauer
dieses Levels auf 5 s. Nach 5 s werden
die Spammer deaktiviert
und der Boss erscheint. Lass es uns versuchen. Überlebe 5 s.
Und du kannst den Boss sehen. Zerstören wir es. Jetzt sollten wir die Windschutzscheibe sehen. Toll, es funktioniert. Wir sehen uns in der nächsten Vorlesung.
62. Hintergrundsound: Hallo zusammen. Sound und Musik haben wir noch nicht erwähnt. In dieser Vorlesung werde
ich Ihnen zeigen, wie man Hintergrundmusik
spielt. Wir werden nicht zu tief in die Soundeinstellungen und -techniken eingehen. werde ich Ihnen dazu
einfache Beispiele
zeigen nächsten Vorlesung werde ich Ihnen dazu
einfache Beispiele
zeigen. So bekommst du eine grundlegende Vorstellung
davon, wie Sound funktioniert. Zuerst importiere ich
den Soundordner. Sie finden es
in den Ressourcen. Hier haben wir ein paar
Soundclips, die wir verwenden werden. Lassen Sie uns zunächst die Hierarchie
organisieren, ein neues Spielobjekt
erstellen, es
umbenennen und die
Transformationskomponente zurücksetzen. Dann erstellen wir
ein weiteres Spielobjekt. Nennen wir es
Hintergrundsound oder Musik. Setzen Sie die Transformationskomponente zurück. Jetzt müssen wir dem Objekt
die
Audioquellenkomponente hinzufügen . Audioquelle enthält in einigen Einstellungen einen Verweis auf
den Clip, den wir
abspielen müssen. Ziehen wir den Clip mit der
Hintergrundmusik in das leere Feld. Vergewissern Sie sich, dass Play
on Awake aktiviert ist. Dadurch wird sichergestellt
, dass der Audioclip abgespielt wird, wenn
die Szene geladen wird. Da es sich um Hintergrundmusik handelt, müssen
wir
die Loop-Option aktivieren. Ich weiß, dass diese
Musik etwas laut ist, also werde ich
die Lautstärke auf 0,3 verringern. Bevor wir versuchen,
die Hauptkamera auszuwählen und sicherzustellen, dass sie über
einen Audio-Listener verfügt. Es sollte da sein. In der Standardeinstellung. Dieser Audiohörer
hört Töne von Audioquellen und spielt
sie über Lautsprecher ab. Wählen Sie dann den Simulator aus und
ändern Sie ihn, um ein Fenster zu erhalten. Stellen Sie dann sicher, dass
Audio aktiviert ist. Gehe zurück zum Simulator
und starte das Spiel. Du solltest Musik hören,
sobald das Level beginnt. Nett. Sie können mehr Musik für
verschiedene Player herunterladen und diesen
Vorgang wiederholen. In der nächsten Vorlesung fügen
wir Schieß- und
Explosionsgeräusche hinzu. Wir sehen uns dort.
63. Shooting Soundeffekt: Hallo alle zusammen. Lassen Sie uns einige Soundeffekte erstellen. Der erste
wird der Ton aufnehmen. Wählen Sie den Spieler aus. Fügen Sie die Audioquellenkomponente hinzu. Benutze den Clip für die Laserpistole. Deaktiviert, Play on awake, weil wir mit diesem
Sound über ein Skript beginnen werden. Ich drehe einfach
die Lautstärke runter. Dann gehe zum
Player-Shooting-Skript. Erstellen Sie eine
Audioquellenreferenz. Ich nenne es eine Quelle. Dann gehe zur Schießfunktion. Hier verwenden wir Source That Play. Dadurch wird der Soundeffekt abgespielt , wenn ein Spieler
Laserkugeln abfeuert. Geh zurück zu Unity. Ziehen Sie die Audioquellenkomponente. Vergessen Sie nicht,
die Einstellungen auf dem Prefab zu überschreiben. Lass es uns versuchen. Wie Sie hören können, funktioniert es. Als Nächstes erstellen wir
einen Explosions-Soundeffekt. Gehe zu Prefabs. Wählen Sie die Explosion aus. Die Audioquellenkomponente. Verwenden Sie den Explosions-AudioClip. Stellt sicher, dass Play
on Awake aktiviert ist. Dieser Effekt ist auch zu laut, daher stelle ich die Lautstärke auf 0,3 ein. Jedes Mal, wenn die
Explosion heftig ist, sollten
wir die
Soundeffekte hören. Großartig. Lassen Sie uns nun eine Power
App erstellen, Soundeffekte. Hier haben wir eine
andere Situation. Ich werde dir zeigen warum. Lassen Sie uns die Audioquelle
zu einem beliebigen Power App Prefab hinzufügen. Öffnen Sie dann das Skript. Wir müssen den Soundeffekt abspielen , wenn ein Spieler
diese Power App sammelt, das wäre hier. Aber wenn wir versuchen,
den Soundeffekt
mit der Audioquelle abzuspielen ,
die diesem Objekt gehört, passiert
nichts, weil
wir dieses Objekt zerstört haben. In der nächsten Codezeile zerstören wir
das Objekt. Die Audioquelle wird
ebenfalls zerstört. Wir brauchen also einen anderen Ansatz. Wir können eine Art
Soundmanager erstellen und das
umgehen. Wir haben aber auch
eine einfache Lösung mit begrenzten Optionen. Lassen Sie uns einen einfachen Ansatz verwenden. Geh zurück zu Unity. Wir können diese Audioquelle entfernen. Dann geh zurück zum Drehbuch. Jetzt brauchen wir eine Referenz
für den Clip da draußen. Ich nenne es einen Clip zum Abspielen. Um den Clip abzuspielen, verwenden wir die Audioquellenklasse
anstelle einer Instanz, rufen die Audioquelle
mit einem großen A und verwenden den Befehl Clip am Punkt abspielen. Wählen Sie zuerst den
Clip und dann die Position. Und wir können auch die Lautstärke
wählen. Dieser Clip ist etwas leise, daher wähle ich
die maximale Lautstärke. Lassen Sie mich erklären, wie
das funktionieren wird. In dieser Audioquellenklasse erstellen
wir ein neues Objekt mit der Audioquellenkomponente. Das neue Objekt, wir
spielen den Sound ab und es wird sich
danach selbst zerstören, wird heruntergespielt. Speichere das und gehe zu Unity. Wählen Sie den Power App-Clip aus. Sie können den Vorgang
für andere Power Apps wiederholen. Dann lass es uns versuchen. Sie können den Power
App-Soundeffekt hören. Wenn du es schaffst,
das Spiel zu unterbrechen , nachdem
du es aufgenommen
hast, kannst du sehen, wie der eine sein Spielobjekt
herausgeschossen hat. Dieses Objekt wird mit
der Audioquellenkomponente erstellt und
spielt den Soundeffekt ab. Wie gesagt, dies ist eine einfache Lösung
mit begrenzten Optionen. Wir haben wirklich keine Kontrolle über diese Optionen
außer der Lautstärke. Also behalte das im Hinterkopf. Wenn Sie Audiomixer
und einige erweiterte Effekte verwenden müssen , sollten
Sie sich für die
Soundmanager-Optionen entscheiden. Für dieses Projekt
verwenden wir einen einfachen Ansatz. Das ist alles für diese Vorlesung. Wir sehen uns im nächsten.
64. Anzeigeneinrichtung: Hallo alle zusammen. Lassen Sie uns
Anzeigen in unser Projekt importieren. Bevor wir ins Detail gehen, müssen
wir eine grundlegende Einrichtung vornehmen. Beachten Sie, dass ich mich in
der Startszene befinde, was unsere erste
Szene im Spiel ist. Gehen Sie zum Window Package Manager, stellen Sie sicher, dass Unity
Registry ausgewählt ist, und suchen Sie nach Werbung. Wie Sie zum Zeitpunkt
der Aufnahme dieses Videos sehen können, lautet
der Name
Advertisement Legacy. Das liegt daran, dass Unity
sich mitten im Übergang zu einer neuen Art
der Implementierung von Add-Ons befindet. Aber im Moment ist die
Dokumentation wirklich schlecht und es
gibt keine Beispiele. Keine Sorge, dieses Paket wird für einige Zeit verfügbar sein. Außerdem wird es ein Update für
diesen Kurs geben, wenn das
Werbepaket nicht
mehr unterstützt wird Im Moment rate ich Ihnen, es so lange wie möglich zu
verwenden bis wir mehr Dokumentation
und Beispiele für die
neue Implementierung erhalten und Beispiele für die
neue Implementierung Davon abgesehen klicken Sie
auf die Schaltfläche Installieren. Unity wird Sie fragen, Sie das
neue oder das ältere Paket verwenden möchten. Lassen Sie uns das Legacy-Paket verwenden. Jetzt müssen wir
unser Unity-Projekt
mit einer Projekt-ID von
Unity Services verknüpfen . Sie können auf den
Link klicken,
der zum Unity-Dashboard oder einfach zum
Google Unity-Dashboard führt . Sie müssen sich mit Ihrer Unity-ID anmelden
. Wir werden
das gleich fortsetzen. Gehen wir vorerst zurück zu Unity, gehen wir zu Projekteinstellungen und
wählen Sie Dienste aus. Dann müssen wir
eine Organisation auswählen. Wenn Sie es nicht haben, haben
Sie wahrscheinlich eine
Schaltfläche, um es zu erstellen. Oder wenn Sie sich in
Ihrem Unity-Konto anmelden, suchen Sie nach Organisationen
und Sie haben eine Schaltfläche, mit der Sie
eine neue Organisation in Unity erstellen können. Wählen Sie Ihre Organisation aus. Meine Aufgabe ist es, Spiele zu
testen und eine Projekt-ID zu erstellen. Wir können sagen, dass sich
dieses Spiel nicht in erster Linie an Kinder
unter 13 Jahren richtet. Wählen Sie dann Anzeigen in
neueren Versionen Unity hat den Tab D entfernt. Es ist nicht sichtbar. Wenn du es
nicht siehst, mach dir keine Sorgen. Folgen Sie einfach der Vorlesung. Wir verbinden
Spiel-IDs über Code. Hier findest du die Spiele-IDs
für Android und IOS. Wir müssen sie
über Spieledienste bekommen. Kehren wir jetzt
zum Unity-Dashboard zurück. Sie nach der Anmeldung
sicher, dass Sie
die richtige Organisation ausgewählt haben. Organisationen haben Projekte, wir müssen das mobile Space
Shooter-Projekt auswählen. Gehe zu Unitization. Klicken Sie auf Get Started. Ich habe nur vor, Unity-Anzeigen zu verwenden. Wählen Sie einen Neuanfang. Unsere App ist noch nicht am Leben. Dann können wir ein
Monetarisierungsprojekt erstellen. Sie können die iOS- und
Android-Spiele-IDs sehen. Gehe zu Anzeigenblöcke. Hier sehen Sie drei Arten
von Anzeigen für IOS und Android. Wir können Werbebanner mit Prämie und
Interstitial-Werbung verwenden , um
mehr über Sie in den nächsten Vorlesungen Unity zurück Du solltest
hier Spiel-IDs sehen, falls du sie nicht siehst. Starten Sie Unity neu. ist toll, Werbung zu verwenden Wir gehen drei Schritte durch. Wir müssen Anzeigen initialisieren, Anzeigen laden und dann Anzeigen schalten Lassen Sie uns den ersten Schritt machen, Initialisierung zu
organisatorischen Zwecken Lassen Sie uns ein leeres
Spielobjekt erstellen, Ds. Dann lassen Sie uns
ein neues Spielobjekt erstellen. Ich nenne es Ads Controller. Erstellen Sie einen neuen Ordner für Skripte. Das erste Skript wird hinzugefügt, initialisiert, das Skript
zum Objekt hinzugefügt und geöffnet Ich werde auch einen Link
zur Dokumentation bereitstellen. Hier ist der Initialisierungsteil. Sie können das
gesamte Skript kopieren und einfügen, wenn Sie möchten. Ich werde es Schritt für Schritt erstellen und
am Ende eine Änderung hinzufügen. Lassen Sie uns zunächst aufräumen
, was wir nicht benötigen. Dann müssen wir Werbung für die
Unity-Engine hinzufügen. Nachdem wir eine Schnittstelle namens Unity is
Initialization Listener
benötigen, müssen wir
diese Schnittstelle implementieren Dadurch wird die
eigene Funktion zur vollständigen Initialisierung Diese wird aufgerufen, wenn
der Prozess
abgeschlossen ist , und eine Funktion
, wenn er nicht abgeschlossen werden kann Lassen Sie uns die Gepäckprotokolle verwenden
, damit wir wissen, was passiert. Ich werde diesen D-Beutel
aus dem Beispielskript kopieren und einfügen. Lassen Sie uns einige Variablen erstellen. Wir benötigen String-Spiel-IDs, eine für Android und eine für IOS. Dann brauchen wir einen
Bull-Variablen-Testmodus. Die letzte ist
die Zeichenkettenspiel-ID , die wir zuweisen müssen. Lassen Sie uns eine öffentliche
Funktion erstellen, die initialisiert ist,
weil Sie sie vielleicht in einer anderen Klasse
aufrufen werden Hier müssen wir Android oder IOS die
Spiel-ID zuweisen. Ich werde eine Kurzversion
der if-Anweisung in Klammern verwenden der if-Anweisung in Klammern Wir überprüfen, ob die Anwendung diese Plattform der
Laufzeitplattform entspricht, dass der iPhone-Player dann ein
Fragezeichen schreibt Wenn wir auf dem iPhone sind, verwenden
Sie die IOS-Spiel-ID.
Dann schreibe Doppelpunkt. Wenn wir kein Telefon verwenden, verwenden
Sie die Android-Spiel-ID. Jetzt können wir die Funktion zur
Initialisierung von Werbung verwenden. Verwenden Sie die Spiel-ID, die wir festgelegt haben. Wählen Sie dann den Testmodus. Wir müssen den
Initialisierungs-Listener übergeben
, der dieses Objekt ist Lassen Sie uns nun die
Awake-Funktion erstellen. Hier nennen wir Initialisierung von Anzeigen. Wir müssen die Initialisierung
nur einmal im Spiel durchführen. Die beste Zeit dafür ist
normalerweise, wenn wir das Spiel starten. Beachten Sie, dass Sie dieses Objekt nicht in jeder Szene
haben müssen . Tun Sie es, sobald Sie startklar sind. Wenn die Initialisierung jedoch fehlschlägt und Sie
sie in anderen Szenen ausprobieren möchten, Sie überprüfen,
ob die Initialisierung
bereits abgeschlossen ist , und dann zurückkehren Und versuche es nicht noch einmal. Geh zurück zu Unity. Hier müssen wir IDs festlegen. Sie können sie aus dem
Unity-Dashboard kopieren oder zu den
Projekteinstellungen gehen und Werte
kopieren und einfügen. Achten Sie
dann darauf, sie nicht zu mischen, da wir gerade testen Lassen Sie uns den Testmodus aktivieren. Vergiss nicht,
dies zu deaktivieren, bevor du
die Veröffentlichungsversion
des Spiels erstellst . Lass es uns versuchen. Sie können in der Konsole sehen die Initialisierung abgeschlossen ist Das ist alles für den ersten Schritt. In der nächsten Vorlesung behandeln
wir
Bannerwerbung. Wir sehen uns dort.
65. UPDATE: Unity Cloud: Hallo Leute. Dies ist
ein kurzes Update zu Unity Gaming Services
oder jetzt Unity Cloud. Wenn Sie Probleme haben,
Unity unterstützt die Monetarisierung
in der neuen Unity-Cloud zu finden , hilft Ihnen
dieses Video Sie müssen sich bei
der Unity Cloud anmelden Sie werden das
neue Dashboard hier sehen. Sie werden Ihre Projekte finden. Sie können auch neue erstellen. Aber wir brauchen Space
Shooter Mobile. Lass es uns öffnen. Dann können Sie auf die Schaltfläche
Shortcuts Plus klicken, nach Aids suchen und
Unity Aids Monetization auswählen Hier haben Sie alle Bänder, die wir benötigen, einschließlich Anzeigenblöcken Eine andere Möglichkeit,
den Bereich Monetarisierung zu finden ,
besteht darin, Produkte zu öffnen, nach Unity-Anzeigen zu suchen
und die Monetarisierung zu öffnen Schön, jetzt kannst du
mit dem Kurs Monetarisierung fortfahren. Wir sehen uns in der nächsten Vorlesung.
66. Banner-Werbung: Hallo nochmal. In dieser Vorlesung erstellen
wir Bannerwerbung. Lass uns ein paar Dinge vorbereiten. Wir können ein leeres Objekt kopieren, gehen Sie zu der Ebene, auf der Sie das Banner aktivieren
möchten. Ich werde es
auf der Ebene der Schwingungen machen. Tin, füge das leere Objekt ein, erstelle ein neues leeres Objekt, nenne es Banner Eight. Dann können wir ein neues Script erstellen. Der Name wird auch Bannerwerbung sein, das Skript für das Objekt. Wenn Sie nun den Link öffnen
, den Sie
in den Ressourcen finden, gibt es einen Abschnitt
für Bannerwerbung. Es gibt ein
Beispielskript
zur Implementierung von
Bannerwerbung mit Schaltflächen. Wir werden einen
anderen Ansatz verwenden. Wir können den Code also einfach kopieren und
einfügen, wie in der vorherigen Vorlesung. Wir werden einige Teile verwenden. Bei der Implementierung von Hilfsmitteln. Wir müssen die Ed-IDs
für Android und iOS kennen. Also, wie bekommen wir welche? Gehen Sie zu Ihrem Dashboard, wählen Sie Monetarisierung
und offene Einheiten aus. Hier haben wir alle Typen. Wir können Bannerwerbung auswählen. Sie können den Namen
und die ID der Anzeige sehen. Wir haben eine für Android
und eine für iOS. Wir können auch neue Anzeigenblöcke erstellen
. Wählen Sie einen Namen und bewerben Sie sich für eine Firma. Dann können Sie wählen,
welche Art von Einheit. Jetzt sollten Sie Ihre
Bearbeitungseinheit in der Liste sehen. Nur um es Ihnen zu zeigen,
können Sie die Einstellungen bearbeiten. Hier können Sie bei Bedarf einige Einstellungen
ändern. Wir werden diese Bannerwerbung nicht verwenden. Ich wollte
dir nur den Prozess zeigen. Schicken wir es ins Archiv. Wir werden die Standardeinstellungen verwenden. Denken Sie daran, dass es wichtig ist, die IDs im Skript zu
kennen. Das Ziel ist es, die Bannerwerbung zu laden und zu
zeigen. Zuerst müssen wir den Namespace für
Werbung einbeziehen. Dann erstellen wir zwei
ID-String-Variablen, eine für Android und eine für iOS. Wir können Standardwerte festlegen. Beachten Sie, dass es besser ist, das
Kopieren und Einfügen zu verwenden, damit Sie keine Fehler
machen. Dann benötigen wir eine
Zeichenfolge, eine Unit-ID. Als Nächstes können wir Variablen für die Bannerposition erstellen , sodass wir auswählen können,
wo die Anzeige geschaltet werden soll. Lassen Sie uns zunächst eine Einheiten-ID
festlegen. Wir verwenden Hash, wenn Unity, iOS, was bedeutet, dass wir ein iOS-Gerät
verwenden, dann legen wir die IRS-Anzeigenblock-ID dann einen Hash L für Unity Android fest. Natürlich verwenden wir hier die
Android-Anzeigenblock-ID. Schließe das mit Hash. Und wenn wir
die Aktualisierungsfunktion nicht benötigen, erstellen Sie eine öffentliche Lücke laden Sie die Bannerwerbung. Lassen Sie uns zunächst die Position festlegen. Erstellen Sie dann Optionen zum Laden von Bannern. Hier verwenden wir einen Lade-Callback, eine eigene
Banner-Ladefunktion auslöst. Wir werden es gleich erstellen, ein Koma
verwenden und einen
Fehler-Callback erstellen , der
ihre eigene Banner-Fehlerfunktion auslöst . Lassen Sie uns diese
beiden Funktionen erstellen. Ein eigener Bannerfehler wird passieren
, wenn etwas nicht stimmt. Also können wir einfach
den Bug Datalog verwenden. Laden des eigenen Banners wird ausgelöst , wenn die Erde das Laden
beendet hat. Bevor wir hier etwas tun, müssen
wir die Ladefunktion
aufrufen. Also hier, nach
den von uns getroffenen Optionen, verwenden
wir das
erlaubte Werbebanner und fügen die
ID mit den Optionen ein. Wenn die Bannerwerbung geladen und bereit
ist, zeigen
wir sie mit
der Show-Funktion. Natürlich müssen wir einen Ausweis vorlegen. Jetzt müssen wir das nur irgendwo eine Ladebanner-Anzeige nennen . Das hängt vom
Spiel und deiner Wahl ab. Ich werde diese
Funktion am Anfang aufrufen. Also, wenn wir das Level starten, sollten
wir das Banner sehen. In Unity. Stellt
sicher, dass die Ideen korrekt sind, und wählt
die Bannerposition. Lass es uns versuchen. Im Unity-Editor. Es ist schwer, es zu sehen. In einem echten Spiel. Es wird größer sein. Lassen Sie mich einfach ein bisschen hineinzoomen. Sie können es hier sehen. Wenn Sie Fehler sehen, stellen Sie sicher, dass der
Initialisierungsschritt abgeschlossen ist. Versuche es also zu testen, indem du das Spiel
von der ersten Szene an
startest. Hier führen wir die Initialisierung durch, gehen zur Levelauswahl und das Banner ist da. Jetzt können Sie ein Prefab erstellen. Sie können dieses Fertighaus
in jeder beliebigen Level-Einheit platzieren. Sie können es
auf mehreren Ebenen platzieren und alles wird gut
funktionieren. Lassen Sie uns einfach eine erstellen, eine Sicherheitsmaßnahme im Skript, bevor wir
die Anzeige
laden und schalten.
Lassen Sie uns überprüfen, ob die
Werbung initialisiert ist. Nett. Beachten Sie, dass
Sie alles, was
wir in diesem Skript getan haben, im
Initialisierungsskript tun können. Ich wollte nur
den Inhalt trennen , damit er
leichter zu verstehen ist. Danke fürs Zuschauen und wir
sehen uns in der nächsten Vorlesung.
67. Überspringbare Anzeigen: Hallo nochmal. In dieser Vorlesung
erstellen wir interstitielle Anzeigen. Das sind Anzeigen, denen ein
Spieler entkommen kann. Die Idee ist,
eine Anzeige zu erstellen, die nach dem Spielen einiger Level
erscheint , z. B. spielen
wir
ein Level, wenn wir neu gestartet haben, oder wir gehen
zu
einem anderen Level, wo eine Zwischenstufe abgespielt wird. Natürlich können Sie wählen,
wie oft eine Anzeige erscheinen soll. Jetzt können wir mit
der Implementierung beginnen. Wir sind immer noch im
Level Solutions Team. Lass uns ein neues Spielobjekt erstellen. Ich nenne es interstitielle Hilfe. Erstellen Sie dann ein neues Script. Nennen Sie es auch interstitial, fügen Sie das
Skriptobjekt hinzu und öffnen Sie es. Wir haben auch eine Dokumentation zur
Implementierung interstitieller Anzeigen. Hier gibt es viel Inhalt. Ich werde einen Teil kopieren
und dann werden wir ihn
ändern und Schritt für Schritt vorgehen. Lassen Sie uns diesen Teil kopieren, der die Aid-ID
enthält. Stellen Sie einfach sicher, dass die IDs mit denen aus der
Unity-Monetarisierung übereinstimmen. Wenn Sie zur Monetarisierung wechseln, können
Sie Interstitial auswählen. Und hier sehen Sie IDs
für Android und iOS. Wenn Sie möchten, können Sie hier neue Anzeigenblöcke
erstellen, aber ich werde die Standardblöcke verwenden. Schauen wir uns nun die Wachfunktion
an. Wir weisen eine ID zu, indem wir überprüfen ob wir ein iPhone
oder ein Android-Gerät verwenden. Bei einer Sache musst du
vorsichtig sein. Im Unity-Editor wird
dafür immer die Android-ID und
ID verwendet , auch wenn Sie iOS Built
wählen, ist
die ID für Android. Weil wir kein iPhone benutzen. Wir sind auf Mac oder PC. Wiederhole, das ist nur
im Unity-Editor. In einem echten Spiel funktioniert
es einwandfrei, aber das macht es schwierig,
Anzeigen für iPhones im Editor zu testen . Wenn Sie also Ed's für
iOS-Geräte im Unity-Editor testen möchten , müssen
Sie eine Methode verwenden,
die wir in Banner Ads verwendet haben. Lassen Sie uns diesen Teil kopieren und einfügen. Dann kommentiere diesen Teil. Natürlich
müssen Sie das nicht tun. Dies ist nur ein kleiner
Exkurs zum Testen. Lass uns weitermachen. Wir benötigen den Namespace für
Werbung. Hier benötigen wir zwei Schnittstellen. Das erste ist LA Center erlaubt, und das zweite ist das
Chablis-Szenario. Lassen Sie uns Funktionen implementieren. Wir haben eine Funktion, die
aufgerufen wird, wenn der Ladevorgang
abgeschlossen ist , und eine,
wenn der Ladevorgang nicht abgeschlossen ist. Lassen Sie uns Funktionen
für den Listener implementieren. In diesem Fall
klicken wir auf Hinzufügen. Dieser wird aufgerufen, wenn
die Hilfe abgeschlossen ist. Wenn sie dann nicht angezeigt werden und wenn der
Kopf zu zeigen beginnt, werden
wir später einige
davon ändern. Ich werde
diese Funktionen einfach nach unten verschieben. Lassen Sie uns nun eine öffentliche
Void Loaded-Funktion erstellen. Wir prüfen, ob die Werbung initialisiert
ist. Wenn das stimmt, laden
Sie den ED mit der ED-ID. Und das erlaubte dem Zuhörer. Erstellen Sie dann eine öffentliche
Void Show Ed-Funktion. Hier verwenden wir die Show-Funktion, fügen die ID ein und
diesen Show-Listener. Lass uns ein Loaded in Awake verwenden. Sie können wählen, wann
der ED angezeigt werden soll. Ich werde es sofort zeigen,
nachdem das Laden abgeschlossen ist. Lass es uns versuchen. Wir beginnen den Test mit
der ersten Szene, denn
hier initialisieren wir Eds, gehen Sie zu Level Selection. Und du kannst das Ende sehen. Wir müssen jedoch drei Probleme
lösen. Erstens
läuft das Spiel immer noch im Hintergrund. Wir müssen damit aufhören. Die zweite Sache ist, dass wir das Banner verstecken
müssen. Als letztes müssen wir wählen, wie oft das erscheinen wird. Du willst nicht, dass es
es jedes
Mal spielt , wenn der Spieler die Arbeiter
wechselt. Um das Testen
von Anfang an zu vereinfachen, erstellen wir nun
den Hilfsmittel-Controller. Der Prefab-Controller ist für die Initialisierung
verantwortlich. Gehen Sie zu einer Auswahlebene. Spielt das Prefab in die Szene ein. Wenn Sie es direkt
von der Levelauswahl aus testen, wird die Hilfe
trotzdem nicht ausgeführt. Wir haben auch keine
Bannerwerbung. Das liegt daran, dass
wir im Wachzustand oder im Startmodus
gleichzeitig initialisieren ,
laden und anzeigen. Initialisierung dauert einige
Zeit und das Laden wird aufgerufen, bevor die
Industrialisierung abgeschlossen ist. Deshalb
initialisieren wir normalerweise nicht in
der ersten Szene. Also behalte das im Hinterkopf. Wir müssen das
Interstitial erstellen, ein Prefab. Dann können wir es kopieren. Objekte, gehen Sie zur
ersten Ebene und fügen Sie
sie ein , um diese
drei Objekte
in jeder Szene zu platzieren , in der Sie Anzeigen schalten möchten. Lass es uns testen. Beginnen Sie mit der Levelauswahl. Gehe zum ersten Level. Du kannst es sehen. Beachten Sie, dass Sie
im Hintergrund Schüsse hören können. Jetzt müssen wir uns mit den
drei Themen befassen, die ich erwähnt habe. Im Interstitial hilft ein auf Unity gefundenes Skript , zeige Start. Wenn wir die Notaufnahme starten, lassen Sie uns die Zeit anhalten. Und wenn Sie die
Zeitskala auf Null setzen, wird
das
Spiel daran gehindert,
im Hintergrund zu laufen , während
der AED spielt. Wenn der AED fertig ist, setzen
wir die Zeitskala auf eins zurück. Dann deaktivieren wir das Banner. Wenn wir den AED starten, verwenden Sie Werbung,
dieses Banner, das sich versteckt. Zeig es noch einmal, wir benötigen einen Verweis auf die
Banner-Ed-Klasse. Sie dann unter Komplett anzeigen Verwenden Sie dann unter Komplett anzeigen eine Banneranzeige laden. Gehen Sie zu Unity, wählen Sie interstitial ed und
ziehen Sie die Banneranzeige. Dann probieren Sie es von der
Auswahlstufe bis zur ersten Stufe. Beachten Sie, dass es keine
Bannerwerbung gibt. Ebenfalls. Man hört keine Schüsse. Aus irgendeinem Grund spielt die
Hintergrundmusik eine Rolle, aber das ist ein Bug
im Unity-Editor. Lass uns die Anzeige überspringen. Und jetzt kannst du das Banner sehen. Nett. Die letzte Sache ist, dass wir
nicht nach
jeder Änderungsebene
interstitielle Anzeigen schalten wollen . Lassen Sie uns also eine
Ganzzahl erstellen, die
übersprungen werden soll , und setzen wir den
Standardwert auf eins. Diese Zahl bestimmt,
wie oft wir das Level
neu laden oder ändern können ,
bevor wir die Anzeige schalten. Erstellen Sie als Nächstes im Wachzustand eine
Ganzzahl, überspringen Sie die Zahl und verwenden Sie die Spielereinstellungen Get in das k wird interstitial
sein. Der Standardwert ist die
Zeit, zu der die Zahl übersprungen werden soll. Prüfen Sie dann, ob
die Zahl von Null abweicht. Wenn das stimmt,
reduziere es um eins. Speichern Sie als Nächstes diese Nummer. Sonst. Das bedeutet, dass die
Übersprungzahl eine Null ist. Dann müssen wir das ED laden
und anzeigen. Setzen Sie dann den Wert für
den interstitiellen Schlüssel zurück. Lass es uns versuchen. Von Anfang an gehen
wir zur Levelauswahl. Normalerweise
hätten wir den Kopf hier, aber Nummer eins überspringen. Jetzt ist es auf Null reduziert. Nach dem nächsten Laden sollten
wir also sehen, dass die Anzeigen auf
Stufe eins gehen und wir Anzeigen haben. Lasst uns jetzt den Spieler zerstören. Wir sollten ohne Hilfsmittel nachladen da die Skip-Nummer auf eins zurückgesetzt
wurde. Wenn wir das Spiel
erneut verlieren und es neu starten, werden
wir es sehen. Nett. Alles funktioniert. Beachten Sie, dass Sie die Zeit zum Überspringen der
Nummer in Unity
oder im Skript
anpassen können . Das war's für diese Vorlesung
und wir sehen uns in der nächsten.
68. Belohnte Anzeigen [1]: Hallo alle zusammen. Lass uns einen
Belohnungszusatz erstellen, der die Option bietet, das Spiel fortzusetzen nachdem der Spieler zerstört wurde. Es sieht so aus. Wir werden das Spiel verlieren. Wir bekommen ein Panel mit
der Play-Taste. Wir schauen uns einen an, Ed, und dann können wir
weiterspielen. Natürlich werden wir
einschränken, wie
oft ein Spieler das tun kann. Fangen wir an, ein
neues leeres Spielobjekt zu erstellen. Ich nenne es belohnt Ed. Erstellen Sie dann ein neues Skript
mit dem gleichen Namen. Das Skript zum
Objekt und öffne es. Wir können auch die
Unity-Dokumentation öffnen. Der Link befindet sich in den Ressourcen. Es gibt ein Beispielskript. Wir werden
die Implementierung leicht ändern. Kopieren Sie also nicht einfach das gesamte Skript und
fügen Sie es ein. Wir können diesen
Teil für die Aid ID kopieren. Löschen Sie einfach das Teil
mit der Schaltfläche. Stellen Sie jetzt sicher, dass ich
diese korrekt habe. Gehe zu deinem Dashboard
Monetarisierung, wähle belohnte Anzeigen aus und schon
siehst du IDs für Android und iOS. Natürlich können Sie benutzerdefinierte Hilfseinheiten
erstellen. Hier. Wir werden die
Standardeinstellungen wieder im Skript verwenden. Um den
Advertis-Namespace zu verwenden. Wir benötigen auch einen Load Listener und Show Listener Interfaces. Lassen Sie uns nach wie vor
Funktionen von Interfaces aus implementieren. Lass es uns zuerst aufräumen. Wenn Sie möchten, können Sie das
Backlog in den Funktionen verwenden. Das überspringe ich dieses Mal. Verschieben wir diese
Funktionen an das Ende des Skripts. Nett. Lassen Sie uns nun ein Publikum erstellen. Load, eine Funktion. Es ist öffentlich, weil du es
vielleicht irgendwo
außerhalb des Drehbuchs
aufrufen musst . Dann können wir
Advertisement Load
mit einer ID und diesem
erlaubten Listener verwenden . Prüfen wir vor dem Laden, ob die Werbung initialisiert
ist. Wir können es wach rufen. Dann erstellen wir eine öffentliche
Show, die Funktion. Hier verwenden wir
Werbung, die mit einer ID und diesem
Show-Listener angezeigt wird. Jetzt müssen wir wählen,
wann wir
diese Show Ed-Funktion aufrufen und
was dann passieren wird. Ein Teil der Logik wird in den Funktionen Showstart und Show
Complete enthalten sein. In der Funktion „Komplett anzeigen geben
wir dem Spieler eine Belohnung. In unserem Fall werden wir
den Spieler wiederbeleben und er wird
weiterspielen. Jedes Spiel ist anders, also
ist jede Implementierung anders. diesem Grund habe ich beschlossen, die eigentliche Umsetzung
in einer separaten Vorlesung durchzuführen. Dies ist nur eine Vorlage
und grundlegende Vorbereitungen. sehen uns also in der nächsten Vorlesung ,
in der wir
die Hauptlogik implementieren.
69. Belohnte Anzeigen [2]: Hallo zusammen,
willkommen zum zweiten Teil der Implementierung einer lohnenden Werbung. Jetzt, wo wir eine
solide Grundlage haben, können
wir tatsächlich
eine Domäne, eine Logik, erstellen. Die Idee ist,
die Möglichkeit zu haben, eine Anzeige auf überspringbarer Anzeige zu sehen, nachdem der Spieler zerstört wurde, und
dann das Spiel fortzusetzen. Diese Vorlesung
wird etwas länger dauern , da wir uns mit vielen Dingen
befassen müssen, nicht nur mit dem ED. Also maximale Konzentration
für diesen. Zunächst benötigen wir einen Verweis
auf den Player und die Bannerwerbung. Wenn wir anfangen,
ein lohnendes Rot zu zeigen, müssen
wir das Banner ausblenden. Stellen Sie auch die Zeitskala auf
Null, um die Zeit einzufrieren. Dann entscheiden wir, was passiert, wenn die
Belohnungshilfe abgeschlossen ist. Wir verwenden die
IF-Anweisung und verwenden diese Praktikums-ID, um die ID oder den ED zu
überprüfen. Deshalb achten wir darauf, dass wir
mit der richtigen Belohnung arbeiten . Dann überprüfen wir den
Abschlussstatus, d. h. den Status der Anzeige. Verwenden Sie Unity-Hilfsmittel und zeigen Sie den
Abschlussstatus an. Wie Sie sehen können, können wir nach
dem fertigen Skript
oder dem unbekannten Status suchen . Wir müssen fertig sein. Diese Bedingung stellt sicher
, dass wir den Code
nur ausführen , wenn die korrekte
Belohnung abgeschlossen ist. Setzen Sie dann die Zeit fort,
indem Sie die Zeitskala auf eins setzen. Dann können wir den Player aktivieren. Beachte, dass wir den Code in den
Spielerstatistiken ändern müssen , damit wir das Spielerobjekt nicht
zerstören. Anstatt es zu zerstören, werden
wir
es deaktivieren und aktivieren. Hier. Wir müssen noch einmal laden und die Banner-ID
anzeigen. Als Nächstes können wir uns darauf vorbereiten und
das nächste zulassen und es belohnen. Ziehen Sie in Unity das
Werbebanner und den Player. Dann können wir zu den Spielerstatistiken gehen. Wie gesagt, hier wollen
wir den Spieler nicht
zerstören. Also kommentieren Sie es zerstören. Wir werden den Player deaktivieren. Natürlich müssen wir lösen, wie wir die Variablen jedes Mal zurücksetzen wir den Spieler aktiviert haben, z. B. müssen
wir die Gesundheit, die
Gesundheitsleiste usw. zurücksetzen . Deshalb ersetzen wir
start durch ONE enable. Verschieben Sie einfach den Spieler, der schießt, und holen Sie sich
die Komponente in der Startfunktion. Gehen wir zu Unity. Lassen Sie uns nun einen Bildschirm
mit einer Schaltfläche erstellen. Der Bildschirm erscheint, wenn
wir den Player deaktiviert haben. Gehen Sie zu Canvas, wählen Sie das Panel aus und ändern Sie Alpha in Eins. Wählen Sie dann Bildschirm
und duplizieren Sie es. Benennen Sie es um. Dann aktiviere es. Doppelklicken Sie auf das
Panel und vergrößern Sie es. Lassen Sie uns eine neue Schaltfläche erstellen. Ich rufe es an, spiel es ab. Lösche den Text,
wir brauchen ihn nicht. Dann können wir das Sprite ändern. Gehe zu Sprites. Sie wählen diesen
orangefarbenen Play-Button und ziehen ihn in das
Quellbildfeld. Klicken Sie auf Native Größe festlegen. Die Größe ist gut. Jetzt müssen wir die Elemente
anordnen. Lassen Sie uns den
Hintergrund ein wenig erweitern. Verschiebe die Punktzahl und den
Highscore nach unten und bewege die Schaltfläche „Hinzufügen“ nach oben. Das sieht gut aus. Öffnen wir nun das
Panel-Controller-Skript, das den
Gewinn- und Verlustbildschirm steuert. Wir müssen den
roten Bildschirm hinzufügen, den wir erstellt haben. Wir benötigen also eine weitere
Spielobjektvariable. Ich nenne es einen losen Bildschirm. Lassen Sie uns wie zuvor
eine öffentliche Funktion erstellen ,
die sie aktiviert. Setze Canvas Alpha auf eins und aktiviere das Spielobjekt. In diesem Fall benötigen wir eine weitere Funktion, die den Bildschirm
deaktiviert. Setze Alpha auf Null und deaktiviere das Spielobjekt. Zurück in Unity. Vergessen Sie nicht,
den Ed Lewis-Bildschirm in das
Panel-Controller-Skript zu ziehen . Wählen Sie nun die Play-Taste. Wir müssen dieser Schaltfläche,
Create
to onclick events, Funktionen hinzufügen . Ziehen Sie zunächst
den Panel-Controller. Hier müssen wir es
deaktivieren, verlieren. Wenn wir also diese Taste drücken, deaktivieren
wir diesen Bildschirm. Ziehen Sie dann das
belohnte Ed-Objekt
mit der Funktion „Hinzufügen anzeigen“. Wir können den Bildschirm deaktivieren. Jetzt. Wählen Sie das Panel aus und
setzen Sie Alpha auf Null zurück. Gehen wir zum Ende des
Game-Manager-Skripts , um mehr Logik zu implementieren. Scrollen Sie nach unten und erstellen Sie eine neue öffentliche Funktion, das
Ed Lewis-Spiel. Hier verwenden wir den Panel-Controller und aktivieren den Bearbeitungsbildschirm. Wir müssen vorsichtig sein, da ein Spieler entscheiden kann,
es sich nicht anzusehen und das Spiel neu zu starten
oder zum Hauptmenü zu wechseln. Wir müssen also
die Score-Set-Funktion verwenden , die die Punktzahl
im Highscore speichert. Es wird aber auch die
Score-Variable auf Null zurücksetzen. Dies führt zu
Problemen, wenn ein Spieler beschließt, sich eine Anzeige anzusehen
und weiterzuspielen. Ich habe n ist eine Lösung dafür. Lassen Sie uns den
Zugriffsmodifikator
der Score-Variablen ändern und ihn
veröffentlichen. Dann geh zu Rewarded Ed. Wenn der Kopf anfängt, können
wir die Partitur laden. Benutze PlayerPrefs, die int bekommen. Die beste Idee ist, den Schlüssel zu
kopieren und einzufügen. Also hier speichern wir die Partitur,
bevor wir sie löschen. Lassen Sie uns den Schlüssel kopieren
und hier einfügen. Okay, wir sind noch nicht fertig, aber wir können das testen. Im End Game Manager. Wenn wir ein Spiel verlieren, rufen
wir die Spielfunktion von Aide
Louis auf. Beachten Sie, dass wir diese
Wenn-Else-Aussage gleich ändern werden. Das ist nur zum Testen. Beginnen wir mit der
Auswahlebene. Gehe zu Level eins und lass uns das Spiel verlieren. Sie können diese Punktzahl,
den Highscore und
die Schaltfläche Hinzufügen sehen . Lass uns darauf klicken. Wir schauen uns eine Anzeige und wenn sie fertig ist, können
wir das
Spiel ein bisschen voller Gesundheit fortsetzen. Beachten Sie, dass die Punktzahl einfach weiter steigt,
sie ist nicht Null. Zu diesem Zeitpunkt können
wir uns die Anzeige jedoch jedes
Mal ansehen, wenn wir das Spiel verlieren. Das wollen wir nicht. Wir müssen diese Option einschränken. Es muss vielleicht
nur ein- oder zweimal erscheinen. Ich will nur einen kleinen Exkurs. Wenn Sie versuchen,
dies direkt von Level eins aus zu testen, erhalten
Sie manchmal dies direkt von Level eins aus zu testen, eine Fehlermeldung,
da bei der Funktion Enable die
End Game Manager-Instanz
noch nicht erstellt wurde
und wir versuchen, End Game Manager-Instanz
noch nicht erstellt wurde sie zu verwenden, um das Problem zu lösen. Gehen Sie zu den Projekteinstellungen. Dann Skriptausführung, Bestellung. Das Ende, das
Gamemanager-Skript in die Liste und verschiebe es
dann über die Standardzeit. Es sollte einen negativen Wert haben. Jetzt wird das Skript vor anderen Skripten
ausgeführt. Das bedeutet, dass die Instanz erstellt
wird, bevor wir versuchen, sie in ihrer
eigenen Aktivierungsfunktion aufzurufen. Sie können sehen, dass
jetzt keine Fehler vorliegen. Großartig. Bevor wir
mit anderen Dingen fortfahren, fügen
wir dem Player etwas
Schutzzeit hinzu. Wenn der Assistent fertig ist, gehe zu den Spielerstaaten und
richte ein Publikum ein. Bool, kann sie als Variable verwenden und den Standardwert auf true
setzen. Dann erstellen wir eine
Augenzählerfunktion. Set kann Schaden an false erleiden. Dann warten wir ein bisschen. Ich nehme 1,5
s. Danach setzen
wir auf Schaden an True. In der Funktion „Spielerkennzeichnung
beschädigt“ überprüfen
wir, ob
Schaden erleiden kann falsch ist. Dann kehre zurück und füge dem Spieler keinen
Schaden zu. In der eigenen Aktivierungsfunktion. Verwenden Sie Startcoroutine, um die
Schadensschutzfunktion
aufzurufen. Nett. Jetzt möchte ich den Spieler
zusätzlich schützen
,
als wir die Windschutzscheibe gezeigt haben. im End Game Manager Lassen Sie uns im End Game Manager die Variable „
Spielerstatus“ erstellen, die ich Spieler nenne. Als Nächstes erstellen wir eine Funktion
zum Registrieren von Spielerstatistiken. Dies ist das gleiche Verfahren wie für andere Registerfunktionen. Setze Spieler auf zwei Zustände, Spieler, und gehe dann
zu Spielerzuständen. Und in der Startfunktion registrieren
wir diese
Spielerstatistiken beim Manager. Im Endspiel, Manager. Im Spiel
kann ein Funktionssatz Schaden an false nehmen. Als wir die Windschutzscheibe gezeigt haben, kann
dem Spieler
nichts passieren. Jetzt müssen wir diese „if
else“ -Anweisung mit
einigen Bedingungen aktualisieren . Nur um dich daran zu erinnern, das ist wichtig
für dieses Konzept. Wenn wir den Boss besiegen
oder den Timer erreichen. Zuerst warten wir ein bisschen bevor wir das Spiel lösen. Das liegt an Kugeln und Feinden, die immer noch auf dem Bildschirm
sein können. Jetzt,
wo wir Hilfsmittel eingeführt haben, gibt es einen Fall, in dem der Boss und der
Spieler
gleichzeitig zerstört werden können. Außerdem
kann der Spieler
am Ende eines Levels unter diesen
2,5 s zerstört am Ende eines Levels unter diesen werden. Wir befinden uns
am Ende eines Levels. Wir wollen den Bildschirm nicht
zeigen. Wir müssen einen losen Bildschirm zeigen. In dem Fall. Deshalb führen wir
eine neue Variable ein. Lassen Sie uns eine öffentliche
Bool-Variable erstellen, possible wind. Also, wie verwenden wir diese Variable? Gehen wir zum Skript für die
Windbedingungen. Wenn der Timer
abgelaufen ist und wir keinen Boss
haben, dann setze
möglich wann auf Wahr. Wenn wir einen Chef haben, müssen wir in diesem Bundesstaat zu
seinem Chef gehen. Wenn wir den
Boss vernichten, setzen wir das möglich ein, wenn die Wahrheit zurück
zum Manager kommt. Wann ist es möglich, wann ist es wahr? Das heißt, wir haben den
Boss besiegt oder der Timer ist abgelaufen und GameOver ist falsch, was bedeutet, dass wir es nicht getan haben, sie aktivieren den Spieler, dann wollen wir das Spiel. Der nächste Fall. Andernfalls, wenn möglich,
wenn falsch ist, was bedeutet, dass wir nicht
am Ende eines Levels sind, sondern wir die Spieler deaktiviert haben,
da Game Over wahr ist, dann wollen wir einen Bildschirm anzeigen. Wir brauchen noch einen. Wenn ja, wenn möglich, wann ist wahr und
Game Over ist wahr. Das bedeutet, dass der Spieler am Ende eines Levels
aktiviert wird. Dann benutze keinen Bildschirm, sondern nur einen losen Bildschirm. Ich werde nur Kommentare abgeben, damit
es leichter zu verstehen ist. Seit Ende
ist der Game Manager ein ästhetischer Singleton. Wir müssen die Variable possible when
in einem anderen Skript zurücksetzen . Wir können zu den Spielerstatistiken gehen. Am Anfang. Wir können es auf falsch setzen. Jedes Mal, wenn wir ein Level starten, wird
es falsch sein. Jetzt müssen wir
die Anzahl der Anzeigen begrenzen. Lassen Sie uns eine Referenz
für eine belohnte Anzeige erstellen. Erstellen Sie dann eine Funktion
, um sie zu registrieren. Ich nenne es Register Rewards at. Das Verfahren ist
das gleiche wie zuvor. Gehe zum Skript für belohnte Anzeigen. in der Startfunktion Lassen Sie uns in der Startfunktion dieses Objekt registrieren. Dann erstellen wir eine
öffentliche Ganzzahl. Standardmäßig kann es eins sein. Das heißt, wir können uns nur einen
ansehen, wir haben ihn belohnt. Zurück zu End Game Manager. In der Ed Lewis-Spielfunktion überprüfen
wir die Anzahl der Anzeigen. Wenn er größer als Null ist, dann zeige den Werbebildschirm an und
verringere die Zahl um eins. Sonst. Wir haben keine mehr übrig. Verwenden Sie also den Panel-Controller
, um den Lose-Screen zu aktivieren. Jetzt können wir es versuchen. Ich werde nur eine Anzeige haben. Lass uns das Spiel spielen
und es verlieren. Einmalig. Schau dir die Anzeige an. Dann spiele
weiter und verliere es wieder. Wir haben keine mehr übrig. Also sehen wir Louis-Bildschirm. Nett. Sie können ein
lohnendes Fertighaus erstellen. Vergessen Sie auch nicht,
Änderungen an der Leinwand zu überschreiben. Und wir sind fertig. Bei Bedarf können Sie
etwas Logik hinzufügen, wenn die Hilfe nicht anzeigt, dass dies für jedes Spiel
spezifisch ist, aber jetzt haben Sie eine Vorstellung
davon, was Sie tun müssen. Dinge zum Anschauen und wir
sehen uns in der nächsten Vorlesung.
70. Android-Benachrichtigungen: Hallo zusammen. Mal sehen, wie wir
Benachrichtigungen für
Android-Geräte erstellen können . Stellen Sie zunächst sicher, dass Sie die Android-Plattform
verwenden. Gehen Sie dann zum Package Manager,
wählen Sie Unity Registry und suchen Sie nach Benachrichtigungen, wählen Sie mobile Benachrichtigungen aus
und klicken Sie auf Installieren. Lassen Sie uns nun ein
neues leeres Spielobjekt erstellen. Ich nenne es
Android-Benachrichtigung. Dann müssen wir ein Skript erstellen. Um organisiert zu bleiben. Ich werde einen neuen
Ordner mit Benachrichtigungen
erstellen, ein neues Skript und es
Android-Beispielbenachrichtigung nennen. Das Skript zum
Objekt und öffne es. Zuerst benötigen wir die Einheit im
Android-Namespace für Benachrichtigungen. Lassen Sie uns nun
einige Variablen erstellen. Wir benötigen eine
Integer-Benachrichtigungs-ID und ein Beispiel für eine
String-Kanal-ID. Als Nächstes erstellen wir eine
Beispielfunktion für eine öffentliche Void-Benachrichtigung. Es wird ein
Parameter benötigt, Datum und Uhrzeit. Mit Datum und Uhrzeit
können wir die Uhrzeit manipulieren und bestimmen, wann eine Benachrichtigung
gesendet werden soll. Um es besser zu verstehen, können
wir es debuggen. Ich kann z.B. sagen, damals. Nun, das gibt mir
das aktuelle Datum und die aktuelle Uhrzeit. Konvertiere es einfach in eine
Zeichenfolge, damit wir es sehen können. Starte das Spiel. Und in der Konsole sollten
Sie das aktuelle
Datum und die aktuelle Uhrzeit als Zeichenfolge sehen. Nett. Dann müssen wir zwei Schritte machen. Die erste besteht darin,
einen Benachrichtigungskanal zu erstellen, und die zweite darin,
eine tatsächliche Benachrichtigung zu erstellen. Beginnen wir mit dem
Benachrichtigungskanal. Verwenden Sie den
Android-Benachrichtigungskanal und erstellen Sie eine neue Instanz. Zuerst legen wir die Kanal-ID fest. Hier. Wir können
die von uns erstellte
Beispielvariable für
die Kanal-ID einfügen. Dann können wir dem Kanal einen
Namen geben. Als Nächstes können wir eine Beschreibung haben. Es ist nicht wirklich wichtig
für das, was wir tun. Dann können wir die Wichtigkeit festlegen. Die Wichtigkeit der
Benachrichtigung wird verwendet, um zu bestimmen, wie stark
die Benachrichtigung den Benutzer unterbrechen
soll. Sie können sehen, was
jede Option bewirkt. Ich nehme die Standardversion. Nachdem wir einen
Benachrichtigungskanal erstellt
haben, müssen wir ihn registrieren. Verwenden Sie also das
Android-Benachrichtigungscenter Dieser registrierte
Benachrichtigungskanal bezahlt den Kanal
, den wir erstellt haben. Der zweite Schritt besteht darin, eine
Android-Benachrichtigung zu erstellen. Erstellen Sie eine neue Instanz. Zuerst können wir den Titel und
dann den Text
der Benachrichtigung festlegen . Wir können auch
kleine und große Symbole auswählen. Für die Benachrichtigung. Ich werde das Standardsymbol verwenden,
das ein einheitliches Logo ist. Also, wie kann man sie ändern? Gehe zu Unity, zu den Projekteinstellungen
und zu mobilen Benachrichtigungen. Hier können Sie ein
Benachrichtigungssymbol hinzufügen und Android unterstützen. Sie können kleine
vergrößerte Symbole auswählen, und jedes Symbol hat eine
Zeichenkettenkennung. Wenn Sie also z. B.
ein kleines Symbol mit der
Beispiel-ID setzen , dann würden Sie
diese Kennung in das Skript eingeben. Das Letzte, was wir
brauchen, ist eine Feuerzeit. Dies ist das Datum und die Uhrzeit, zu der die
Benachrichtigung gesendet wird. Hier verwenden wir den
Parameter Time to fire. Die Benachrichtigung ist abgeschlossen. Jetzt müssen wir es abfeuern. Wir verwenden das
Android-Benachrichtigungscenter , das eine Benachrichtigung gesendet hat Fügen Sie die ID des
Benachrichtigungskanals ein. Jetzt müssen wir festlegen, wann und wie die Benachrichtigung
geplant werden soll. Für unseren Zweck werden wir den
Anwendungsfokus verwenden. Ihre eigene
Anwendungsfokusfunktion hat einen Bolzenparameterfokus. Diese Funktion wird aufgerufen, wenn die Anwendung den Fokus verliert
oder gewinnt. Das heißt, wenn wir die Anwendung
minimieren, wird
der Parameterfokus falsch sein. Wenn wir die Anwendung
maximieren oder aufrufen, wird der
Fokus wahr. Unsere Idee ist es also,
die Benachrichtigung zu planen , wenn der Spieler
die Anwendung minimiert. Nach einiger Zeit werden wir
dem Spieler sagen, dass er
zurückkommen und spielen soll. Wenn der Fokus also falsch ist, können
wir Datum und
Uhrzeit verwenden , ihn auf
die aktuelle Uhrzeit setzen
und dann die Uhrzeit hinzufügen. Wie Sie sehen können, können wir Tage,
Stunden, Minuten,
Sekunden usw. hinzufügen . Fügen wir einen Tag ab
der aktuellen Uhrzeit hinzu Zeitpunkt
minimiert der Spieler die Anwendung. Dann rufen wir das
Benachrichtigungsbeispiel und zahlen das Datum, an dem Feuer gegangen ist. Wenn der Spieler zurückkehrt und
die Anwendung öffnet , bevor die
Benachrichtigung gesendet wurde, müssen wir die
geplante Benachrichtigung stornieren. Wir können es mit einem roten
Benachrichtigungscenter stornieren , das alle geplanten
Benachrichtigungen verkaufen
kann. Und auch hier gilt: Wenn ein Spieler die Anwendung
minimiert, fügen
wir Zeit hinzu und planen
eine weitere Benachrichtigung. Beachten Sie, dass dadurch
alle geplanten Benachrichtigungen storniert werden. Ich werde Ihnen hier zeigen, wie Sie
genau diese Benachrichtigung stornieren können. Wenn wir die Benachrichtigung senden, können
wir stattdessen die Option
Benachrichtigung mit expliziter ID senden verwenden und die ID des
Benachrichtigungskanals
einfügen. Dann müssen wir die
Benachrichtigungs-ID einfügen. Wenn Sie sich erinnern, haben wir dafür
eine Variable erstellt. Also bezahlt die Benachrichtigungs-ID. Anstatt
alle geplanten Benachrichtigungen zu stornieren, können
wir dann die geplante
Benachrichtigung verwenden
und die Benachrichtigungs-ID bezahlen. Großartig. Zu Testzwecken. Lass uns das nicht benutzen. Fügen Sie stattdessen einfach 10
s hinzu. Wir sind noch nicht fertig. Wir haben eine wichtige
Sache zu tun , denn wir werden dieses
Spiel für Android und iOS entwickeln. Dieser Code führt zu Fehlern
beim Erstellen für iOS. Um dieses Problem zu lösen, müssen
wir das Skript
nur kompilieren , wenn wir Android verwenden. Lassen Sie uns zunächst den
Android-Benachrichtigungs-Namespace lösen. Wir verwenden if Unity Android
und schließen es mit Hash. Und wenn. Jetzt wird diese Codezeile nur für
Android-Geräte
kompiliert, dasselbe müssen
wir auch innerhalb der Klasse tun. Wir benötigen nicht die Menge, die
vor der
Beispielfunktion für Benachrichtigungen protokolliert wird. Wenn Unity Android und schließen Sie es nach der eigenen
Anwendungsfokusfunktion. Jetzt sind wir fertig. Wenn Sie möchten, können Sie Variablen mit
Standardwerten
erstellen und
sie in die Funktion einfügen. In Unity kannst du Werte ändern, dann ein Prefab erstellen und
es in jede Sünde legen, die du möchtest. Lassen Sie uns die App auf
dem Telefon erstellen, um sie zu testen. Building to Phone wurde
in früheren Vorlesungen behandelt. Also überprüfe es, falls du es nicht getan hast. Okay, jetzt sind wir am Telefon
und lass uns das Spiel öffnen. Wechselt zur
Auswahlebene sin. Dann können wir es minimieren. Und in 10 s sollten wir die Benachrichtigung
sehen. Wie Sie sehen können, ist es hier. Klicken Sie darauf und wir
sind wieder im Spiel. Sie können dieses
Wissen verwenden, um
verschiedene Arten
von Benachrichtigungen zu erstellen . Und das ist alles für diese Vorlesung. Danke fürs Zuschauen und wir
sehen uns im nächsten.
71. iOS: Hallo zusammen. Lassen Sie uns Benachrichtigungen für iOS-Geräte erstellen. Die Logik wird dieselbe sein
wie für Android-Geräte. Nur die Syntax ist anders. Wenn Sie die
Android-Benachrichtigungsvorlesung nicht gesehen haben, schlage
ich vor, dass Sie dies tun,
bevor Sie sich diese ansehen. Notiz. Nur eine wichtige Sache, um Benachrichtigungen
auf Ihrem iPhone zu testen. Sie benötigen ein
Apple-Entwicklerkonto. Es kostet 99$ pro Jahr. Also behalte das im Hinterkopf. Okay, lassen Sie uns zuerst
die Plattform auf RS umstellen. Gehen Sie dann zum Paketmanager, wählen Sie Unity Registry aus, suchen Sie nach
dem
Paket für mobile Benachrichtigungen
und installieren Sie es. Wenn du es nicht getan hast. Wir haben es in der
vorherigen Vorlesung gemacht. Gehen Sie dann zu den Projekteinstellungen, wählen Sie Mobile Notification
und gehen Sie zu iOS. Aktivieren Sie die
Anforderungsautorisierung pro Start. Dadurch wird ein
Dialog-Popup-Fenster geöffnet wenn ein Spieler das
Spiel zum ersten Mal betritt Dann kann ein Spieler Benachrichtigungen
zulassen. Das wird uns viel Arbeit ersparen. Andernfalls müssten wir es selbst im Code
machen. Lassen Sie uns nun
ein neues Spielobjekt erstellen und es iOS-Benachrichtigung nennen. Erstellen Sie dann ein neues Skript, das ich als
iOS-Benachrichtigungsbeispiel bezeichnen werde. Sie haben das
Objekt mit einem Skript erstellt und es geöffnet. Die Idee ist, eine
Benachrichtigung zu erstellen, die
einen Spieler einlädt , nach einiger
Zeit zurückzukommen und
das Spiel zu spielen . Lassen Sie uns zunächst die Einheit im iOS-Namespace für
Benachrichtigungen verwenden. Wir benötigen keine Standardfunktionen. Lassen Sie uns eine
Zeichenkettenvariable erstellen, die Benachrichtigungs-ID. Erstellen Sie als Nächstes ein Beispiel für eine öffentliche
Nichtigkeitsbenachrichtigung. Hier erstellen wir eine
iOS-Benachrichtigungsinstanz. Das erste, was wir
zuweisen, ist die Kennung Fügen Sie die Benachrichtigungs-ID ein. Dann können wir den Titel
unserer Benachrichtigung festlegen. Wir haben auch den Untertitel. Dann haben wir eine Leiche. Dies wird ein Text
für die Benachrichtigung sein. Die nächste Eigenschaft wird im Vordergrund
angezeigt. Wenn der Wert auf true gesetzt
ist, wird eine Benachrichtigung angezeigt. Selbst wenn die Anwendung geöffnet ist, lädt
unsere Benachrichtigung einen Spieler ein, zurückzukommen und zu spielen. Also müssen wir es auf falsch setzen. Nur um Ihnen zu zeigen, ob Sie eine andere Art von
Benachrichtigung planen und
diese Variable auf true setzen, können
Sie die Option
Vordergrunddarstellung wählen. Wenn Sie eine
Präsentationsoption bevorzugen, können
Sie Alarm,
Badge, Keine und Ton sehen . Grundsätzlich wählen Sie, um welche Art von Benachrichtigung es sich handeln soll. Sie können auch Kombinationen verwenden. So kannst du z.B. Alert wählen und dann eine
vertikal ausgerichtete Zeile schreiben. Wir verwenden zwei davon
für das logische ODER, aber hier schreiben wir nur einen. Dann kann ich auch Sound verwenden. Die nächste Eigenschaft ist die
Kategorie-ID. Sie können Benachrichtigungen
in Kategorien gruppieren und dann einige Operationen ausführen, die sich auf
alle Benachrichtigungen
derselben Gruppe auswirken . In unserem Fall ist es nicht so
wichtig, also setzen Sie es auf Kategorie a. Als Nächstes ist
die
Thread-ID. Es ist auch nicht wichtig
für das, was wir tun. Folgen wir also einfach
der Dokumentation. Es wird Thread eins sein. Dann haben wir eine
wichtige Immobilie. Es ist ein Auslöser. Es bestimmt, wann wir die Benachrichtigung
versenden. Lassen Sie uns also einen neuen Auslöser für das
Zeitintervall für
iOS-Benachrichtigungen erstellen . Stellen Sie dann das Zeitintervall für das
neue System ein, diese Zeitspanne. Hier können wir wählen, ob wir Tage,
Stunden, Minuten,
Sekunden usw. hinzufügen möchten. Um einen Tag auszuwählen, ändern
wir diesen auf einen. Aber für Testzwecke verwenden
wir 10 s. Dann
müssen wir Wiederholungen auf false setzen
, damit wir sie nicht wiederholen. Diese Benachrichtigung alle 10 s. Nachdem wir die
Benachrichtigung erstellt haben, planen wir sie. Verwenden Sie das
iOS-Benachrichtigungscenter, das
Benachrichtigungen plant , und fügen Sie
die Benachrichtigung ein. Dann verwenden wir die eigene
Anwendungsfokusfunktion. Weitere
Informationen zu dieser Funktion der Vorlesung
Android-Benachrichtigungen. Im Wesentlichen
wird
dieser Fokusparameter jedoch falsch, wenn wir das Spiel
minimieren. Und das stimmt, wenn wir das Spiel
maximieren. Wenn wir das Spiel minimieren, wollen
wir
das Benachrichtigungsbeispiel aufrufen , das die Benachrichtigung einplant. Wenn der Spieler zum Spiel
zurückkehrt bevor die
Benachrichtigung gesendet wurde, müssen wir sie entfernen. Sie entfernen die geplante
Benachrichtigung und zahlen die Benachrichtigungs-ID. Wir sind fast fertig. Wenn Sie möchten, können Sie die Variablen
erstellen und sie dann
in die Benachrichtigung einfügen. Das Letzte, was wir
tun müssen, um Fehler zu vermeiden, ist , dieses Skript nur zu kompilieren,
wenn wir für iOS bauen. Lassen Sie uns zunächst
den Namespace lösen. Wir verwenden Hash von Unity iOS und
schließen es mit Bargeld ab. Und wenn. Jetzt wird diese Zeile
nur für iOS-Geräte kompiliert, wir müssen dasselbe
innerhalb der Klasse tun. Gehe zu Unity. Wir können die Variablen
im Inspector festlegen, dann ein Prefab erstellen und
es in jeder gewünschten Szene platzieren . Wie ich zu diesen
Benachrichtigungen für iOS gesagt habe, benötigen
wir ein
Apple-Entwicklerkonto, was ich derzeit nicht habe. Wenn du eines hast, kannst du
das Spiel auf dem
Handy erstellen und testen. Bauen am
Telefon wurde
in früheren Vorlesungen
des Kurses behandelt . Das ist alles für diese Vorlesung. Wir sehen uns im nächsten.
72. Profiler: Hallo alle zusammen. In dieser Vorlesung werfen
wir einen Blick darauf,
wie man den Profiler verwendet und mögliche
Leistungsprobleme erkennt. Wir werden auch lernen, wie Sie den
Profiler direkt
mit Ihrem Telefon verwenden können. Fangen wir an, gehen wir zu Window
Analysis und Profiler. Wir sollten so
etwas sehen. Stellen Sie zunächst sicher, dass
die Aufnahmetaste aktiviert ist. Dann aktiviere das Profiling. Deep Profiling aktiviert. Der Profiler
analysiert jeden Teil
Ihres Skriptcodes und
zeichnet alle Funktionsaufrufe auf. Dann können wir wählen,
wie die Datenauswahlhierarchie
angezeigt werden soll . Platzieren Sie diesen Tab als Nächstes
irgendwo unten wie folgt. Und wir können es verlängern. Wenn wir die Play-Taste drücken, sollten
wir einige
Daten in der Grafik sehen. Die Daten werden Bild für Bild gemessen. Wenn wir auf ein Bild drücken, posiert
das Spiel und wir können Details zu
diesem bestimmten Bild
sehen. Sie sollten nach Spitzen Ausschau halten da diese auf
einen Leistungsabfall hindeuten. Denken Sie daran, dass
Spitzen beim Laden und
beim
Levelwechsel normal sind . Dinge, die Sie für
unsere Müllabfuhr
und die Zeit in Millisekunden suchen sollten . Beachten Sie, dass Sie die Editor-Schleife
ignorieren können. Dies ist vom Unity-Editor. Es wird nicht existieren, wenn
du das Spiel erstellst. Wir können
diese Daten sogar aus
dem Diagramm entfernen , indem wir andere deaktivieren. Beachten Sie, dass alle Daten in einer Farbe
dargestellt werden, z. B. Skripts oder Dunkelblau. Außerdem können Sie die FPS
auf der linken Seite im Auge behalten. Nun zu den Daten, wir sind an Player Loop
interessiert. Also um weitere Details erweitert. Hier können Sie Daten aus
allen möglichen Skripten
und Paketen sehen . Wir können die
Drehbücher finden, die wir gemacht haben. Gehen Sie, um das Skript zu aktualisieren, führen Sie Behavior, Behavior Update aus. Beachten Sie einfach, dass wir hier keine Probleme
haben. Es gibt keine Müllabfuhr und die Zeit ist wirklich knapp. Sie können
Aktualisierungsaufrufe in unseren Skripten sehen. ZB hier ist ein Update
von Meteors Pounder. Es gibt
Spielersteuerung und so weiter. Natürlich können Sie
es erweitern, um weitere Informationen zu erhalten. Denkt daran, dass es wichtig ist, Logs
zu kommentieren oder zu löschen und zu
debuggen, bevor das Spiel erstellt
und veröffentlicht wird. Um Ihnen zu zeigen, warum ich
ein Objekt mit dem
Skript erstellt habe , finden Sie mich. Es hat nur das
Bug-Log n-Update. Lass uns das Spiel ausführen. Wählen Sie einen beliebigen Frame aus und
suchen Sie das Skript. Sie können sehen, dass der Backlog etwas Müll
erzeugt und es 0,13 Millisekunden dauert, ihn
zu entsorgen. Behalte das im Hinterkopf. Wir machen jedoch
ein Spiel für Telefone. also auf einem PC testen,
erhalten Sie kein wirkliches Bild, insbesondere wenn Sie
einen wirklich guten PC haben. Ich werde Ihnen zeigen, wie Sie den
Profiler mit Android-Geräten verwenden. Für das iPhone ist es
ein bisschen anders. Also werde ich den Link zur Dokumentation einfügen , um
den
Profiler mit Ihrem Telefon zu verwenden Gehen Sie zu Datei, Einstellungen erstellen, verbinden Sie Ihr Telefon und
wählen Sie es als Gerät aus. Ich habe einen alten
Who-Freund zum Testen. Aktivieren Sie dann die Entwicklung, die auf dem
Connect Profiler
basiert , und der Unterstützung eine detaillierte
Profilierung. Dann kannst du auf Build
and the run oder Pitch and run klicken. Warte, bis alles erledigt ist. Das Spiel sollte
auf deinem Handy laufen und der Profiler sollte
automatisch laufen. Wenn Sie keine Daten sehen,
erweitern Sie den Anzeigemodus, gehen Sie zu lokalen Geräten
und wählen Sie Ihr Telefon aus. Wenn dein Spiel läuft, solltest
du Daten sehen. Beachte, dass diese Daten von
deinem Spiel auf dem Telefon stammen. Wir erwarten einige Leistungsspitzen
und
-einbußen , wenn wir von
Level zu Level wechseln und solche Dinge. Das ist normal. Wählen Sie ein beliebiges
Bild aus und definieren Sie das Skript. Wo ist das Debug-Punktprotokoll? Sie können sehen, wie Sie das
Update- und Debug-Protokoll finden. Es erzeugt Müll und
beeinträchtigt das Spiel am Telefon. Vergessen Sie also nicht, Debug-Logs zu
löschen. Es ist eine gute Idee,
das Spiel auf mehr Handys zu testen. Laden Sie also Ihre Freunde ein und sehen Sie, wie es sich auf
verschiedenen Geräten anfühlt, je mehr Telefone, desto besser. Ziel ist es, die
Müllabfuhr
und andere Probleme zu erkennen . Wenn Sie sie finden, müssen
Sie darüber nachdenken, wie Sie Skripte verbessern und optimieren können. Manchmal ist es möglich
und manchmal nicht. Jedes Spiel ist anders. Das ist alles für diese Vorlesung. Wir sehen uns im nächsten.
73. Object: Hallo alle zusammen. Lass uns
das Spiel ein wenig optimieren. Wie Sie wissen, werden beim Schießen viele Kugeln
erzeugt und zerstört. Das kann bei älteren Geräten ein kleines
Problem sein, daher müssen wir uns damit befassen. Die Idee ist,
Objekt-Pulling zu erstellen. Stellen Sie sich vor, wir haben einen
Pool mit Spielobjekten, in diesem Fall Kugeln. Sie sind instanziiert
, aber inaktiv. Wenn wir schießen, holen wir uns eine Kugel aus dem Pool und aktivieren sie. Dann zerstören wir keine Kugeln. Wir bringen sie in den
Pool zurück und verwenden sie wieder. Mal sehen, wie wir das in unserem Spiel
anwenden können. Wählen Sie den Spieler aus und
gehen Sie zum Spielerschießen. Wir werden die
in der Einheit eingebaute Methode zum Abrufen von Objekten verwenden. Es ist relativ neu. Wir verwenden den
Unity-Engine-Pool-Namespace. Wir müssen
diesen Spielobjekttyp durch
das Skript ersetzen , das Bullets verwenden, und das ist eine Laserkugel. Merken Sie sich den Namen dieser
Variablen, Blazer Bullet. Als Nächstes. Um eine
Objektpoolvariable zu erstellen. In spitzen Klammern
wählen wir den Typ dieser Stange. Du kannst zum Beispiel einen
Pool von Spielobjekten haben, aber wir benötigen einen Pool
an Laserkugeln. Ich nenne es Pole. Dann müssen wir eine
neue Instanz dieses Pools erstellen. in der Weckfunktion Verwenden Sie in der Weckfunktion einen neuen Objektpol und einen Laserkugeltyp zwischen
den spitzen Klammern. Öffnen und schließen Sie dann
die Klammer. Sie werden feststellen, dass wir
einen Fehler haben , weil wir einige Funktionen
für den Pool
erstellen müssen einige Funktionen
für den Pool
erstellen und sie in
Klammern bezahlen müssen. In der ersten
Funktion instanziieren
wir also das
Objekt, das wir benötigen. Die zweite Funktion wird verwendet, um das Objekt zu übernehmen, das wir erstellt haben. Wir nennen es, indem wir
den Namen der Umfrage schreiben
, in unserem Fall Pol, dann erhält das die dritte
Funktion, die verwendet wird, um das Objekt
an den Pol
zurückzubringen, und wir nennen es mit Paul diese Veröffentlichung. Lassen Sie uns die
erste Funktion erstellen,
die Objekte
für die Umfrage erstellt. Diese Funktion muss
den gleichen Typ wie der Umfragetyp zurückgeben , nämlich Laser Bullet. Ich nenne es ein Umfrage-Objekt erstellen. Hier. Ein Beispiel für
die Laserkugel. Instanziiere also die Laserkugel
mit der Position und Drehung des Spielers,
wenn du ein Objekt erstellst. Position und Drehung
sind
in unserem Fall nicht wichtig , da
wir sie später ändern. Manchmal kann es
wichtig sein und es ist eine gute Idee, Objekte
außerhalb des Bildschirms zu erstellen. Also behalte das im Hinterkopf. Dann geben wir die Kugel zurück. Fügen Sie diese Funktion in den
Pool in Klammern ein. Lassen Sie uns nun
eine Funktion erstellen,
die Objekte aus der Umfrage übernimmt. Ich nenne es, nimm
die Kugel von Paul. Es braucht einen
Parameter, eine Laserkugel. Wenn wir eine Kugel
abbekommen, aktivieren wir sie. Hier. Manchmal können Sie
die Position der Kugel festlegen, aber da wir
mehrere Positionen verwenden werden, lassen Sie es so. Dann erstellen wir
eine Funktion,
die Objekte zur Umfrage zurückgibt. Ich nenne es aufgrund einer
Gegenkugel von Paul. Außerdem hat es einen
Parameter, die Laserkugel. Hier müssen wir die Kugel
deaktivieren. Fügen Sie nun diese
Funktionen in den Pol ein. Als Nächstes müssen wir
Bullets sagen, dass sie diese Umfrage verwenden sollen. Gehen Sie also zum
Laserbullets-Skript. Nun, wir zerstören keine Kugeln, also können wir Kommentare zu Zerstören abgeben. Hier. Wir benötigen auch den Pol-Namespace. Erstellen Sie eine polare Variable
für Laserkugeln. Ich nenne es Referenzpol. Wir müssen diese
Poolvariable mit
der Pole-Instanz verbinden , die wir im
Player-Shooting-Skript
erstellt haben . Um eine öffentliche
Void zu erstellen, stellen Sie eine Umfragefunktion ein
, die einen
Parameterpool von Laserkugeln verwendet. Richten Sie dann einen Referenzpool ein, um Drehbuch für das Spielerschießen zu bündeln. Wenn wir eine Laserkugel erstellen, verwenden
wir eine Kugel, auf der Paul steht und zahlen den Betrag
anhand dieses Skripts. Jetzt hat jede Kugel einen
Verweis auf die Umfrage. Mal sehen, wie wir schießen und
die Kugeln aus der Umfrage bekommen. Wir brauchen keine Instanziierung. Hier benutzen wir einfach das Tor ziehen. Dadurch wird die Funktion aktiviert. Nimm eine Kugel aus dem Pool, wodurch die Kugel aktiviert wird. Jetzt müssen wir die
Schießposition festlegen. Wir können einfach sagen,
dass diese Transformation zwei grundlegenden
Schießpunktpositionen entspricht. Also aktivieren wir die Kugel und platzieren sie an der
gewünschten Position. Lassen Sie uns vorerst andere Fälle
ignorieren. Gehen wir zurück zum
Laserbullets-Skript. Jetzt müssen wir
die Aktivierung
von Kugeln implementieren und
sie zum Pol zurückbringen. Anstatt zu zerstören, verwenden Sie einen
Referenzpol, der auslöst. Und wir wollen dieses Objekt
veröffentlichen. Dadurch wird eine
zurückkehrende Kugel aus dem Pool aufgerufen, wodurch
die Kugel deaktiviert wird. Natürlich
müssen wir dies
in der eigenen Funktion, die
unsichtbar geworden ist, wiederholen . Hier müssen wir vorsichtig sein,
da wir
die Funktion oder das Objekt, das bereits veröffentlicht wurde
, nicht aufrufen möchten die Funktion oder das Objekt, das . Wenn zum Beispiel die Kugel aktiviert ist
, wird
sie hier unsichtbar und wir
rufen erneut einen Release aus. Hier. Dadurch erhalten wir einen Fehler. Um das zu verhindern. Lassen Sie uns zunächst überprüfen, ob
die Kugel aktiv ist. Wenn wir es jetzt hier deaktivieren, wird es nicht aufgerufen. Aber wenn die Kugel
vom Bildschirm verschwindet , ist sie immer noch aktiv. Dann aktivieren sie es. Also sollte alles
funktionieren. Lass es uns versuchen. Es. Stellen Sie nur sicher, dass Sie
die
vorgefertigte Laserkugel zugewiesen haben . Wie Sie sehen,
können wir Kugeln ausgeben, aber es gibt ein Problem. Wenn wir
zum ersten Mal Kugeln erstellen. Sie sind schnell, aber wenn wir diese Kugeln
wiederverwenden, bewegen
sie sich nicht. Lass es uns reparieren. Gehe zum Laserbullets-Skript. Ersetzen Sie, beginnen Sie mit ONE enable. Dies wird jedes Mal aufgerufen, wenn
wir die Kugel aktivieren Versuchen
wir es jetzt. Wie Sie sehen, verwenden wir
dieselben Kugeln wieder und sie bewegen sich. Wenn alle erstellten
Aufzählungszeichen aktiv
sind, wird ein neues erstellt. Nett. Lassen Sie uns weitere
Funktionen für die Umfrage hinzufügen. Wir können auch eine Funktion definieren
, die aufgerufen wird, wenn wir eine Kugel von
der Stange zerstören
müssen , und das kann passieren. Ich werde Ihnen gleich ein
Beispiel zeigen. Erstellen Sie ein onDestroy Paul-Objekt , das den Parameter
Laserkugeln verwendet. Hier. Zerstören wir das
Bullet-Game-Objekt. Fügen Sie diese Funktion in den Pol ein. Dann können wir für die
Sammlungsprüfvariable „wahr
“ oder „falsch“ wählen . Wenn der Wert auf true gesetzt ist, sucht der Pool nach Double-Release-Aufrufen , die ich erwähnt habe. Lass es mich dir zeigen. Wir können diese Codezeile
kommentieren und testen. Wir erwarten, dass Fehler
aufgrund doppelter Release-Aufrufe auftreten. Spiele das Spiel ein bisschen und
du kannst den Fehler sehen. versucht, ein Objekt freizugeben, das bereits an die Stange
entlassen wurde. Deshalb haben wir
diesen Zustand. Später entdeckte ich, dass diese Version
auch zu Fehlern führen kann,
wenn eine Kugel mehrere
Gegner gleichzeitig trifft . Also spielt hier die gleiche
if-Aussage ab. Ich mache es später. Dann können wir
die Standardkapazität und die
maximale Größe der Umfrage wählen . Nehmen wir zehn als
Standard und 30 als Maximum. Der Standardwert bestimmt wie viel Speicher wir reservieren
möchten. Speicher für zehn
Objekte vom Pol reservieren. Und das Maximum, das
wir reservieren können, ist 30. Es ist wichtig zu
verstehen, dass, wenn wir alle drei Objekte
verwenden
und eines weitere benötigen
, dieses Objekt
mit dieser Funktion erstellt wird. Aber wenn wir
es in den Pool zurückbringen, wird
es
mit dieser Funktion zerstört. Sie können also mehr Objekte
als Ihren maximalen Wert haben, aber sie werden zerstört. Du musst die
richtige Balance zwischen Standard- und
Maximalwert für dein Spiel finden. Lassen Sie uns nun
die kurze Funktion beenden. Ersetzen Sie instanziieren
durch Paul, das dieselben Positionen wie für
das Instantiat Canaan
verwendet und Kanonenpositionen
schreibt. Ich werde diesen Prozess
bis zum letzten Fall beschleunigen. Im letzten Fall benötigen wir einen anderen Ansatz für die Liste, um Funktionen zu
instanziieren. Da müssen wir auch die Rotation
ändern. Wir werden die Instanz in
einer Variablen speichern , wenn wir sie vom Pol
abrufen. Dann legen wir die Position fest. Und dann Rotation. Nachdem wir eine Drehung geändert
haben, müssen wir die Geschwindigkeit
und Richtung einer Kugel festlegen. Gehen Sie also zum
Laserbullets-Skript. Hier erstellen wir ein öffentliches Set, leiten und beschleunigen
die Funktion. Wiederholen Sie den Code aus der
eigenen Aktivierungsfunktion. Für Laserkugeln
, die eine
Art Rotation haben ,
wird Enable aufgerufen, aber es wird aufgerufen, bevor
wir die Rotation einstellen. Also müssen wir diese Funktion aufrufen nachdem die Rotation eingestellt ist. Hier verwenden wir die erste Kugel, die die Richtung und Geschwindigkeit
festlegt. Um den Vorgang für
die zweite Umdrehung zu wiederholen, wählen Sie 0,1. Als letztes müssen wir
die Rotation der Kugeln neu einstellen. Bei Deaktivierung verwenden. Hier setzen wir einfach eine
Drehung auf Null. Bevor wir fertig sind, werde
ich einfach
eine weitere IF-Aussage platzieren , die ich bereits erwähnt habe. Lass es uns versuchen. Während Sie das Spiel spielen, können
Sie sehen, dass die Kugeln aktiv und inaktiv
werden. Wir zerstören sie nicht, sondern deaktivieren und aktivieren sie einfach. Wir haben keine Fehler. Alles funktioniert einwandfrei. Sie können dieses Objekt verwenden, um die Methode
an anderen Stellen in Ihrem Projekt abzurufen. Wenn Sie z. B.
viele Meteore ausgeben, können
Sie zu Meterpounder wechseln und eine Umfrage nach Meteoren
erstellen. Das ist alles für diese Vorlesung. Danke fürs Zuschauen.
74. Android Build für das Veröffentlichen: Hallo alle zusammen. Nachdem du das Spiel beendet hast, ist
es Zeit, es zu veröffentlichen. Der erste Schritt besteht darin, einen Android-Build zu
erstellen , den wir in
den Google Play Store hochladen können. Lass uns anfangen. Gehe zu Datei, Einstellungen erstellen. Stellen Sie sicher, dass Sie die
Android-Plattform verwenden. Vergiss nicht,
die Szenen hinzuzufügen , die
du im Spiel haben möchtest. Öffnen Sie dann die Player-Einstellungen. Hier können Sie
Ihren Firmennamen angeben. Der Produktname wird
der Titel Ihres Spiels sein. Lass es uns auf Space ändern. Kürzerer Kurs. Wir können die
Version vorerst ignorieren. Hier müssen Sie ein Standardsymbol
hinzufügen. Wenn Sie zu den Symbolen gehen, können
Sie bestimmte API-Stufen
und Overrides für das Symbol sehen . Erweitern Sie eines von ihnen und Sie werden die Größen für Ihr Symbol
sehen. Gehen wir zur Auflösung
und Präsentation. Hier kannst du die
Ausrichtung für dein Spiel wählen. In diesem Spiel brauchen wir ein Portrait. Dann gehe zum Splash-Bild. Hier können Sie Ihr Logo hinzufügen. Wenn das Spiel beginnt. Klicken Sie einfach auf den
Plus-Button und fügen Sie das Sprite hinzu. Ich werde
dir schnell zeigen, wie das aussieht. Nett. Es gibt viele Möglichkeiten. Sie können die
Hintergrundfarbe ändern, Sie können die Dauer ändern. Sie können Logos auch
einzeln anzeigen und so weiter. So sieht es
eins nach dem anderen aus. Gehen Sie als Nächstes zu anderen Einstellungen. Hier haben wir viele
wichtige Optionen. Scrollen Sie nach unten und finden Sie den Unterabschnitt
Identifikation. Zuerst mussten wir
sicherstellen, dass wir das richtige
Paketnamensformat
haben. Normalerweise läuft es so. Kommentieren Sie Ihren Firmennamen
, den Namen Ihres
Spiels. Es ist richtig. lediglich eine Warnung angezeigt, dass ungültige Zeichen entfernt
wurden, bei denen es sich um Leerzeichen
im Spielnamen handelt. Sie können auch
Ihren
Standard-Paketnamen überschreiben , wenn Sie möchten. Ich werde es so lassen. Dann haben wir Version. Wenn das Spiel abgeschlossen ist, verwende 1.0 oder wenn es sich um eine Beta-Version handelt, dann kannst du
Nullpunkt verwenden. Irgendeine Zahl. Die Bundle-Version sollte eine sein. Nun, das ist wichtig, wenn
du dein Spiel aktualisieren möchtest. Du musst
die Version z.B.
auf 1.1 oder so ändern . Es muss nur
anders sein als das vorherige. Und Sie müssen auch die
Bundle-Version um eins erhöhen. Wenn Sie die Zahlen nicht ändern, können
Sie kein
Update bei Google Play veröffentlichen. Behalte das im Hinterkopf. Dann wählst du das
minimale API-Level , das dein Spiel unterstützt. Ich werde die
Mindest-API unverändert lassen. Dann haben Sie die Option auf
Ziel-API-Ebene. Google Play hat ein
Mindestziel-API-Level. Es ändert sich im Laufe der Zeit. Sie können es
online überprüfen, googeln Sie es einfach. Der Sinn der Erstellung
dieser Vorlesung ist, was Google sagt. Der beste Ansatz besteht darin,
die
API auf höchstem Niveau auszuwählen , die Sie können. Die nächste Anforderung
für Google Play ist, dass Anwendungen über eine
ARM 64-Zielarchitektur verfügen müssen. Wie Sie sehen können, können
wir es aktivieren. Also ändere das Scripting-Backend, und jetzt ist es aktiviert. Dann gehen wir zu den
Veröffentlichungseinstellungen. Wir müssen einen KeyStore erstellen. Und Schlüssel. Der Schlüssel ist eine Art Zertifikat, das besagt, dass Sie der
Besitzer der Anwendung sind. Klicken Sie auf Key Store Manager und dann auf KeyStore, Create New. Und ich werde überall
wählen, einen Namen für den K-Stern wählen. Jetzt fügen wir einen neuen Schlüssel hinzu, erstellen ein Passwort und wählen
dann den Alias. Es ist eine Art
Identifikation für das k. Dann kannst du dasselbe
Passwort verwenden. Klicken Sie auf Hinzufügen. Kay. Großartig. Gehen wir zurück zu den Build-Einstellungen. Wir müssen überprüfen, ob wir
ein Paket erstellt haben, Google Play. Jetzt klicken wir auf Build, wählen Ihren Standort
und Dateinamen. Dies wird einige Zeit in Anspruch nehmen, insbesondere wenn Sie
es zum ersten Mal tun. Wenn der Build abgeschlossen ist, haben
Sie eine AAB-Datei. Wir verwenden es, um das Spiel auf
Google Play zu veröffentlichen , das
in den nächsten Vorlesungen behandelt wird. Also wir sehen uns dort.
75. Datenschutzerklärung: Hallo alle zusammen. Bevor wir zur Vorlesung über die
Veröffentlichung kommen, lassen Sie uns eine
Datenschutzrichtlinie für unser Spiel erstellen. Wenn Sie planen,
Werbung in Ihrem Spiel zu schalten, oder Ihre Zielgruppe
Kinder unter 13 Jahren sind, verlangt
Google Play, dass
Sie über eine Datenschutzrichtlinie verfügen. Es gibt viele Websites zur
Generierung von Richtlinien. Ich zeige Ihnen ein Beispiel. Der Link wird
in den Ressourcen sein. Zunächst geben Sie den
Namen Ihrer Anwendung ein. Dann ist Ihre E-Mail eine
Kontaktinformation. Als Nächstes können Sie
die Informationen, die Sie für unser Spiel
sammeln, direkt eingeben. Wir sammeln nichts, aber wir sammeln Dienste von
Drittanbietern, was wir im nächsten
Abschnitt dieses Generators lösen. Also werde ich das leer lassen. Wählen Sie Ihren App-Typ und dann Ihre
Zielplattform. Dieses Spiel ist für Android. Dann wählen Sie aus, ob Sie
eine Einzelperson oder ein Unternehmen sind , und geben Ihren Namen
oder Firmennamen ein. Klicken Sie hier auf die Schaltfläche Weiter. Sie sollten die Liste der Dienste
von Drittanbietern sehen. Wenn Sie einige davon verwenden, kreuzen Sie
einfach die Kästchen an. Wir verwenden Unity. Klicken Sie auf Weiter. Jetzt sollten Sie den
Dokumentengenerator für die
Allgemeinen Geschäftsbedingungen
und die Datenschutzrichtlinie sehen . Wir brauchen die Datenschutzrichtlinie. Das ist also der Text
unserer Richtlinie. Beachten Sie, dass ein Link zu Ihren Drittanbieterdiensten und
deren Richtlinien enthalten ist. Wir müssen diese Richtlinie veröffentlichen. Also lasst uns den ganzen Text kopieren. Suchen Sie nach Google Sites. Auch hier
wird sich der Link in den Ressourcen befinden. Erstellen Sie ein neues Leerzeichen, zitieren Sie. Der Titel kann Datenschutzrichtlinie lauten. Der Site-Name kann der
Name Ihrer Anwendung sein. Fügen Sie dann den Text ein. Überprüfe, ob alles
hier ist und klicke auf Veröffentlichen. Wählen Sie Ihre Webadresse und beenden Sie den Vorgang. Jetzt können wir diese Seite betrachten. Toll, wir haben eine
Datenschutzrichtlinie für unser Spiel. Es ist eine gute Idee, in deinem Spiel
eine Schaltfläche zu erstellen , die diesen Link
öffnet und
einen Spieler zu dieser Seite führt. Aber das ist ein anderes Thema. Wir sehen uns in der nächsten Vorlesung.
76. Google Play: Hallo alle zusammen. In dieser Vorlesung füllen wir die
Google Play-Foren aus und durchgehen sie. Dies ist ein notwendiger Schritt
im Veröffentlichungsprozess. Zuerst müssen Sie zur Google Play-Konsole gehen. Es sieht ungefähr so aus. Gehe zur Play-Konsole. Sie müssen
ein Entwicklerkonto erstellen. Es kostet 25$ und ist
eine einmalige Zahlung. Nachdem Sie Ihr Konto erstellt
haben, werden Sie
auf diese Seite weitergeleitet. Klicken Sie auf App erstellen. Geben Sie dann den Namen
Ihrer Anwendung ein und wählen Sie
die Standardsprache. Wir müssen das Spiel auswählen. Ist es kostenlos oder kostenpflichtig? Es ist kostenlos. Akzeptieren Sie dann die Bedingungen
und klicken Sie auf Erstellen. Sie werden
zum Dashboard weitergeleitet. Hier gibt es drei
Hauptabschnitte:
Verkostung, Einrichtung und Veröffentlichung. Lassen Sie uns zunächst
den Setup-Abschnitt durchgehen. Wir werden diese Aufzählung Schritt für Schritt
durchgehen. Beachten Sie, dass ich Informationen
eingeben werde die auf dem Spiel
basieren, das wir im Kurs
erstellt haben. Jedes Spiel ist spezifisch, daher können einige Auswahlmöglichkeiten und Informationen für Ihr Spiel
unterschiedlich sein. Fangen wir mit
der Datenschutzrichtlinie an. Instruktionen. Sagen wir, wir müssen eine
Datenschutzrichtlinie hinzufügen, wenn unsere Zielgruppe Kinder unter 13 Jahren
umfasst Ich werde die Zielgruppe nicht ansprechen. Aber wenn wir EDS verwenden, müssen
wir das trotzdem tun. In der vorherigen Vorlesung
haben wir also eine Datenschutzrichtlinie erstellt und den Link zu dieser Seite
kopiert. Klicken Sie anschließend auf Speichern. Gehen Sie zurück zum Dashboard. Sie können das
grüne Häkchen erkennen , wenn der Schritt abgeschlossen ist. Gehen wir zum nächsten IP-Zugang. Benutzer müssen kein
Konto erstellen, um das Spiel zu spielen. Wir haben kein
Abonnementmodell oder so. Wählen Sie also, dass alle
Funktionen ohne
Zugriffsbeschränkungen
verfügbar sind. Speichern Sie es und kehren Sie zum Dashboard
zurück. Als nächstes folgt der EDS-Bereich. Ja, unsere App enthält Ed's. Einige dieser Formen sind sehr kurz und andere etwas länger. Am kniffligsten ist die Datensicherheit. Also lass dir das nicht entgehen. Gehen wir zur Inhaltsbewertung. Das ist eine etwas längere Aufgabe. Geben Sie außerdem Ihre E-Mail-Adresse ein
und wählen Sie eine Kategorie aus. Dann klicken Sie auf Weiter. Jetzt müssen wir
einige Fragen beantworten. Dies ist für
jedes Spiel in unserem Spiel spezifisch. Wenn wir keine
Gewalt oder Blut haben. Es gibt keinen Angstfaktor. Nun, Sexualität und Glücksspiel, im Grunde wären all diese
Antworten nein. Klicken Sie auf Weiter. Und einreichen. Gehe zu Zielgruppe. Wählen Sie Altersgruppen. Beachten Sie nur, dass
wir für dieses Spiel Kinder unter 13 Jahren einbeziehen können, aber stellen Sie dann sicher, dass
Sie in
der Einheit, die Teil ist , die richtige Option wählen. Als Nächstes werden wir dieses Spiel für Kinder unter 13 Jahren
attraktiv machen. Sagen wir Nein, das ist ein bisschen
fraglich, aber okay. Google wird es überprüfen
und Sie können
Ihre Antwort als Nächstes ändern und speichern. Dies ist keine Nachrichten-App. Dann COVID-19, damit
haben wir nichts zu tun. Gehen wir nun zur Datensicherheit. Ja, wir sammeln und teilen Daten über Dienste
von Drittanbietern. Diese Daten sind verschlüsselt. Ja, Benutzer können
beantragen, dass es gelöscht wird. Jedes Immunitätshilfsmittel hat dieses Symbol in einer der Ecken. Wenn Benutzer darauf klicken, können
sie
UNITAID bitten,
Daten und einige andere Optionen zu löschen . Als Nächstes müssen wir hier
alle gesammelten Daten auswählen. Woher wissen wir, dass wir uns die Unity-Dokumentation ansehen
können,
wenn
Sie Unit the Aids verwenden . Dies ist der Google
Play-Datenschutzbereich für Unity-Anzeigen. Ich werde den Link
in die Ressourcen einfügen. Auf dieser Seite können Sie sehen, welche
Datentypen gesammelt werden. Schauen wir uns zum Beispiel
diesen Standortabschnitt an. Wir erfassen ungefähre Standorte und keine
genauen Standorte. Zurück in der Google Play Console. Wählen Sie den ungefähren Standort aus. Als Nächstes folgt der Abschnitt mit den persönlichen
Informationen. Gehen Sie zur Unity-Dokumentation. Schauen Sie sich die Tabelle mit den persönlichen
Informationen an. Die einzigen Daten,
die gesammelt werden, sind die persönlichen Identifikatoren des Benutzers. Wählen Sie also Benutzer-IDs aus. Folgen Sie nun einfach den Tabellen aus Unity-Dokumentation und Sie werden es schaffen, die
richtigen Optionen auszuwählen. Beachten Sie, dass Sie, wenn Sie
andere Dienste von Drittanbietern nutzen, ähnliche
Tabellen und Daten auf deren Websites finden sollten. Sie können dieses Formular also korrekt
ausfüllen. Wenn Sie
damit fertig sind, klicken Sie auf Weiter. Jetzt befinden wir uns im Abschnitt
Datennutzung bei der Handhabung. Für jede Option, die wir auswählen, müssen
wir
weitere Informationen bereitstellen. Lassen Sie uns z. B. mit dem Standort beginnen. Schon wieder. Wir schauen auf den Tisch. Der Standort wird erfasst
und geteilt. Dies ist keine Datenerfassung erforderlich und Sie können
den Zweck dieser
Datenerfassung sehen . Kreuzen Sie also beide Kästchen an. Das ist jetzt und das ist ja. Überprüfen Sie dann die Zwecke und wählen Sie die Felder aus, die zur Tabelle
passen. Speichern Sie es. Sie können mit anderen Daten fortfahren, zu den persönlichen Daten
gehen, die Tabelle
suchen und den
Vorgang wiederholen. Wenn Sie fertig sind, klicken Sie
auf Weiter und senden Sie es ab. Dies ist keine Regierungs-App. Die nächsten beiden Aufgaben dienen Präsentation Ihrer App
bei Google Play. Gehe zum ersten. Wählen Sie auch hier Ihre Kategorie. Unser Spiel würde in die Kategorie
Action fallen. Ich schätze. Hier kannst du
Schlagworte hinzufügen. Ich überspringe es. Geben Sie dann Ihre Kontaktdaten ein. Sie können auch Ihre Website hinzufügen. Speichern Sie es. Öffne die letzte Aufgabe. Hier haben Sie den Namen kurzen und vollständigen Beschreibungen ,
die im Google Play Store erscheinen werden. Dann musst du dein Icon
hochladen. Dieses Symbol sollte mit dem
Symbol übereinstimmen, das Sie in Unity festgelegt haben. Wir müssen auch
das Titelbild hochladen. Beachten Sie, dass Sie unten für
jedes Bild die richtigen Abmessungen sehen
können . Wenn du ein
YouTube-Video über das Spiel
hast, kannst du den Link hier platzieren. Dann müssen Sie Screenshots
oder Telefone und Tablets platzieren. Ich werde das beschleunigen, speichern und wir sind
fertig mit den Foren. In der nächsten Vorlesung werden
wir lernen, wie man interne Tests
für unser Spiel einrichtet und dabei hilft, es tatsächlich
im Store zu veröffentlichen. Wir sehen uns dort.
77. Google Play internes Testing und Publishing: Hallo zusammen. In dieser Vorlesung lernen
wir, wie man
Taster hinzufügt, damit sie
das Spiel vor anderen Leuten herunterladen
und natürlich testen können . Dann lernen wir, wie
man das Spiel veröffentlicht. Okay, gehen Sie zuerst zu den
internen Tests. Wählen Sie den Schnupperschritt aus. Lassen Sie uns eine neue E-Mail-Liste erstellen, einen Namen für die Liste. Dann können Sie die
E-Mails Ihrer Tester hinzufügen. Sie können
natürlich Ihre hinzufügen . Speichern Sie die Änderungen. Dann geh zu den Releases. Erstellen Sie eine neue Version. Hier müssen wir
die AAB-Datei hochladen, die wir in der vorherigen
Vorlesung
erstellt haben , und sie hineinziehen. Das wird einige Zeit dauern. Wenn es fertig ist. Stellen Sie sicher, dass der früheste
Name die richtigen Zahlen hat. Sie können einige Versionshinweise verfassen und
Informationen zu dieser Version geben. Klicken Sie dann auf Weiter. Sie werden einen Fehler bemerken. Wir müssen
eine weitere Erklärung vervollständigen. Wenn Sie das EDS-Gerät verwenden, sollte
dies Ja sein. Wählen Sie dann diese drei
Optionen aus und speichern Sie sie. Gehen Sie zurück zu den internen Tests. Wir haben keine Fehler, sodass wir mit der Einführung
interner Tests beginnen können. Gehen Sie noch einmal zu Tasters. Hier unten solltest du den Link
kopieren. Dies ist der Link, den Sie an Ihre Tester
senden sollten. Über diesen Link können Tester dein Spiel
herunterladen und testen. Um das Spiel zu veröffentlichen. Gehe zur Produktion. Öffnen Sie den Tab Länder. Gehe zu Länder bearbeiten. Hier kannst du auswählen, in welchen Ländern du dein Spiel
veröffentlichen möchtest. Wählen wir sie alle aus. Gehen Sie dann zum Release-Tab. Erstellen Sie eine neue Version. Da wir das App-Bundle bereits
hochgeladen
haben, müssen wir es nicht noch einmal tun. Klicken Sie auf Aus Bibliothek hinzufügen. Wählen Sie das Paket aus, das wir
für interne Tests hochgeladen haben. Stellen Sie sicher, dass alle
Informationen korrekt sind. Klicken Sie auf Weiter und starten Sie dann den
Rollout zur Produktion. Bestätigen Sie den Rollout hier. Ich werde es nicht tun, weil ich dieses Spiel nicht wirklich
veröffentlichen
werde. Aber wenn Sie diese
Taste drücken, ist es erledigt. Dann wartest du ein paar Tage. Und wenn alles gut ist, wird
das Spiel im Google
Play Store veröffentlicht. Wenn du das
Spiel an einem bestimmten Datum veröffentlichen möchtest, dann gehe zur Veröffentlichungsübersicht. Hier. Schalten Sie
Managed Publishing ein. In diesem Fall wird dein Spiel nicht
automatisch veröffentlicht, sobald Google
es
genehmigt hat. Sie müssen es manuell
veröffentlichen. Und das war's, Leute. Sie wissen, wie man
ein Spiel bei Google Play veröffentlicht. Copia wird tolle Spiele entwickeln und dieser Kurs hat dir geholfen. Danke fürs Zuschauen
und einen schönen Tag.