Unity mobile Spieleentwicklung | Mario Korov | Skillshare
Suchen

Playback-Geschwindigkeit


1.0x


  • 0.5x
  • 0.75x
  • 1x (normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Einheiten dieses Kurses

    • 1.

      Einführung

      1:59

    • 2.

      Erstelle ein Projekt und wähle Einstellungen

      2:12

    • 3.

      Geräte-Simulator

      1:15

    • 4.

      Sprite-Import und Sprite-Editor

      3:23

    • 5.

      Scrollender Hintergrund

      7:31

    • 6.

      Neues Eingabesystem einrichten

      1:43

    • 7.

      Verbesserte Touch-Grundlagen

      4:43

    • 8.

      Move Player mit Touch

      7:07

    • 9.

      Einschränkungen der Spielerbewegung

      4:48

    • 10.

      Kameragrenzen

      5:34

    • 11.

      Update der Touch-Steuerung [Nicht überspringen]

      4:47

    • 12.

      Tipp-Zählung

      1:44

    • 13.

      Virtueller Joystick

      6:36

    • 14.

      Feind-Konzept

      5:38

    • 15.

      Meteor-Prefab

      7:17

    • 16.

      Kollisionsmatrix

      2:57

    • 17.

      Meteor Spawner

      7:30

    • 18.

      Objektrotation

      1:24

    • 19.

      Spielerschießen

      8:47

    • 20.

      SpielerStatistik und Schadensystem

      3:15

    • 21.

      UI-Grundlagen

      4:19

    • 22.

      Gesundheitsbar

      7:09

    • 23.

      Helfer im sicheren Bereich

      2:58

    • 24.

      Explosions-Animation

      5:36

    • 25.

      Schadensanimation und Übergang

      6:18

    • 26.

      Auf den Feind schießen

      12:49

    • 27.

      Grüner Feind

      1:45

    • 28.

      Feind-Spawner

      3:40

    • 29.

      Gewinn-Bedingung

      4:05

    • 30.

      UI-Panel-Controller- Text Mesh Pro

      5:13

    • 31.

      Game Manager

      8:39

    • 32.

      Singleton-Muster

      3:02

    • 33.

      Levels/Szenen ändern

      8:41

    • 34.

      Zwischen den Szenen verblassen

      9:05

    • 35.

      Ladebildschirm

      5:55

    • 36.

      Upgrade/Fix Fade-Effekt

      2:32

    • 37.

      Schriftenerstellung

      2:17

    • 38.

      Punktesystem

      6:09

    • 39.

      Playerprefs-Syntax

      2:32

    • 40.

      Score/HighScore speichern und laden

      7:37

    • 41.

      Szenenvorbereitung

      3:49

    • 42.

      Startbildschirm (Menü)

      4:21

    • 43.

      UI-Setup

      5:54

    • 44.

      Levelauswahl und Freischaltung

      7:55

    • 45.

      So erstellst du ganz einfach Levels

      2:22

    • 46.

      Android-Handy-Build zum Testen

      3:26

    • 47.

      iOS-Handy-Build zum Testen

      6:14

    • 48.

      Scriptable Object Spawner

      6:15

    • 49.

      Gesundheit Power Up

      4:39

    • 50.

      Shield Power-Up

      9:22

    • 51.

      Schild-Benutzeroberfläche

      5:42

    • 52.

      Shooting Power Up

      8:34

    • 53.

      Power-Ups-Update

      0:38

    • 54.

      Boss-Konzept und Vorbereitungen

      2:25

    • 55.

      Boss-Staaten und Controller

      4:23

    • 56.

      Staat betreten

      6:02

    • 57.

      Teststaaten

      2:21

    • 58.

      Boss Fire

      7:47

    • 59.

      Spezialangriff

      12:33

    • 60.

      Boss-Statistiken und der Tod

      8:22

    • 61.

      Spawn-Boss

      4:32

    • 62.

      Hintergrundsound

      2:26

    • 63.

      Schießen-Soundeffekt

      5:07

    • 64.

      Anzeigeneinrichtung

      9:00

    • 65.

      UPDATE: Unity Cloud

      1:15

    • 66.

      Banner-Werbung

      6:53

    • 67.

      Überspringbare Anzeigen

      10:03

    • 68.

      Belohnte Anzeigen [1]

      3:41

    • 69.

      Belohnte Anzeigen [2]

      16:32

    • 70.

      Android-Benachrichtigungen

      9:38

    • 71.

      iOS-Benachrichtigungen

      7:03

    • 72.

      Profiler

      5:14

    • 73.

      Objekt-Pooling

      12:32

    • 74.

      Android Build für das Publishing

      5:18

    • 75.

      Datenschutzrichtlinie

      2:41

    • 76.

      Google Play-Formulare

      8:07

    • 77.

      Google Play Interne Tests und Veröffentlichungen

      3:46

  • --
  • Anfänger-Niveau
  • Fortgeschrittenes Niveau
  • Fortgeschrittenes Niveau
  • Jedes Niveau

Von der Community generiert

Das Niveau wird anhand der mehrheitlichen Meinung der Teilnehmer:innen bestimmt, die diesen Kurs bewertet haben. Bis das Feedback von mindestens 5 Teilnehmer:innen eingegangen ist, wird die Empfehlung der Kursleiter:innen angezeigt.

111

Teilnehmer:innen

--

Projekt

Über diesen Kurs

Dieser Kurs wird mit der Unity 2022-Version durchgeführt. Die Vorlesungen sind sorgfältig bearbeitet, prägnant und leicht zu folgen. Es gibt keine Zeitverschwendung. Um dem Kurs beizuwohnen, brauchst du einige grundlegende C#-Kenntnisse (Variablen, Funktionen, "if"-Anweisungen usw.) und musst mit dem Unity-Editor vertraut sein.

Das Space Shooter-Handyspiel soll dich Schritt für Schritt durch die Herausforderungen führen, die in der Entwicklung mobiler Spiele auftreten können. Du lernst, wie du dein Spiel mit allen Bildschirmauflösungen und Geräten kompatibel machen kannst (automatische Kameraanpassungen, Skalierung und Platzierung von UI-Elementen und mehr).

Einige Highlights dieses Kurses:

  • Neues Eingabesystem

  • Monetarisierung

  • Benachrichtigungen

  • Optimierung

  • Gerätekompatibilität und Tests

  • Boss-Kampf

  • Veröffentlichungsprozess

Am Ende dieses Kurses hast du allgemeine Kenntnisse, wie du mobile Spiele entwickelst und veröffentlichen kannst.

(*Bitte beachte, dass der Veröffentlichungsprozess nur für Android abgedeckt wird, im Google Play Store, der Rest des Kurses deckt sowohl Android als auch iOS ab)

Ich beantworte alle Nachrichten, wenn du irgendwo feststeckst oder Hilfe brauchst.

Du kannst der Community auf dem Discord-Server beitreten und dich mit anderen eingeschriebenen Studierenden verbinden.

(Der Link zum Discord-Server befindet sich in der Resources-Datei)

Vielen Dank für deine Zeit und bis zu dir in den Kursstunden.

Triff deine:n Kursleiter:in

Teacher Profile Image

Mario Korov

Game Developer | Teacher | Mathematician

Kursleiter:in

You can find more tutorials on my YouTube channel: RootGames

Hello everyone, my name is Mario and I'm a self-taught game developer with a Bachelor's degree in Mathematics from the Department of Mathematics, Osijek.

For almost a decade of freelancing, finding quality and short tutorials was my major stepping stone, so I decided to put all my knowledge and passion into unique, straight-to-the-point videos to help other developers. You will save so much time, learn faster, and in the end make a game faster.

To sum up, all my love and passion are in Unity courses with the goal to help you in your game developer path. Thank you and see you in the lessons.

I'm really looking forward to this journey.

Vollständiges Profil ansehen

Level: All Levels

Kursbewertung

Erwartungen erfüllt?
    Voll und ganz!
  • 0%
  • Ja
  • 0%
  • Teils teils
  • 0%
  • Eher nicht
  • 0%

Warum lohnt sich eine Mitgliedschaft bei Skillshare?

Nimm an prämierten Skillshare Original-Kursen teil

Jeder Kurs setzt sich aus kurzen Einheiten und praktischen Übungsprojekten zusammen

Mit deiner Mitgliedschaft unterstützt du die Kursleiter:innen auf Skillshare

Lerne von überall aus

Ob auf dem Weg zur Arbeit, zur Uni oder im Flieger - streame oder lade Kurse herunter mit der Skillshare-App und lerne, wo auch immer du möchtest.

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.