Einführung 2D Spiele mit Unity entwickeln - Kollisionen, Game Over und UI

Sign in to queue

Description

GUI anlegen

Legen wir mal einen einfachen Game Over-Screen an. Dazu speichern wir die bisherige Szene: File -> Save Scene as.. und wählen den Ordner "Szenen". Dort geben wir der Szene den Namen "Hauptspiel" und erstellen mit Hilfe von Strg + N eine neue, leere Szene. Die Speichert ihr am besten auch gleich ab, als "Game Over".

Im Ordner Skripte erstellen wir jetzt wie gehabt ein neues Skript, zum Beispiel "GameOver", das wir dann via Klicken und Ziehen auf die "Main Camera" ziehen.

Ein GUI - ausgeschrieben "Graphic User Interface" - ist nicht schwer zu erstellen.

Im GameOver-Skript könnt ihr folgende Methode hinzufügen:

void onGUI (){}

 

Und davor noch:

 

public float posX, posY, width, height;

 

Diese Methode ermöglicht es, GUI-Elemente zu definieren.

Füllt sie zum Beispiel wie folgt:

if (GUI.Button(new Rect(Screen.width*posX, Screen.height*posY, Screen.width*width, Screen.height*height), "Neu starten")){}

 

Damit wird folgendes getan: ein Button in Form eines neuen Rechtecks (new Rect) wird angelegt. In den Klammern nach Rect werden die Koordinaten in folgender Reihenfolge angegeben: Position X, Position Y, Breite, Höhe.

Die aktuell dargestellte Schreibweise mit "Screen.width" bzw. "Screen.height" und den entsprechenden Multiplikatoren erlaubt es euch, flexibel auf verschiedene Bildschirmformate zu reagieren. Der Textblock ganz zum Schluss ist die Beschriftung des Buttons.

Der Einsatz innerhalb der if-Abfrage bewirkt, dass mit Klick auf den Button eine Aktion ausgeführt wird, die innerhalb der Klammern genauer definiert sind.

Speichert das Skript und geht zurück in Unity, wo ihr die Kamera auswählt und sehen solltet, dass die neuen Parameterfelder für Pos X etc. hinzugekommen sind. Startet das Spiel und ändert die Werte zum Beispiel auf

posX = 0.25posY = 0.25width = 0.5height = 0.3


Ihr seht einen Button!

Stoppt das Spiel und gebt die Werte erneut ein, damit sie dieses mal übernommen werden.

Geht zurück in das Skript und befüttert die If-Abfrage noch mit dem Befehl "Application.LoadLevel(0);" - das Skript sollte jetzt wiefolgt aussehen:

void OnGUI(){
if (GUI.Button(newRect(Screen.width*posX, Screen.height*posY, Screen.width*width, Screen.height*height), "Neu starten"))
{
Application.LoadLevel(0);
}
}

Mit dem Application LoadLevel könnt ihr einfach zwischen Spielszenen wechseln. Allerdings müsst ihr Unity dazu noch sagen, welche Szene wohin gehört. Geht also zurück in Unity, speichert die Szene nochmal und öffnet das Menü "File -> Build Settings".

Generic Episode Image

 

 Wenn ihr die Build Settings das erste mal startet, ist das obere Feld leer. Klickt auf "Add Current", um die aktuelle Szene hinzuzufügen und schließt die Build Settings dann wieder. Dann öffnet ihr das Hauptspiel und macht das gleiche Prozedere erneut, um eine Auflistung ähnlich der oberen zu sehen. Auf der rechten Seite könnt ihr auch die Zahl sehen, die ihr für den jeweiligen Application Level verwenden müsst.

Ihr seht allerdings, dass eure Liste vermutlich genau umgekehrt zu der meinen ist. Das lässt sich einfach dadurch ändern, dass ihr mittels von Klicken, Ziehen und Loslassen der jeweiligen Szene die Reihenfolge anpassen könnt.

Schließt das ganze und öffnet noch einmal die Game Over-Szene, um sie jetzt auch zu starten. Wenn ihr auf den Button klickt, sollte sich jetzt das Hauptspiel öffnen.

Versucht doch mal, auf diese Art und Weise auch einen Startbildschirm einzubauen!

Tags:

Unity, tutorial, game

The Discussion

Add Your 2 Cents