Skripting in Unity Grundkurs

Eine eigene Sammlung mit Enumerations

Testen Sie unsere 1985 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Als Programmierer können Sie sich auch eigene "Sammlungen" anlegen, verwalten und benutzen. Weshalb das sinnvoll sein kann, veranschaulicht dieser Film.
08:49

Transkript

Wäre es nicht schön, irgendwie im Programmcode eine Sammlung von eigenen Daten festzulegen, die überhaupt nicht an Int, Floats, String oder was auch immer gebunden sind? Hier im markierten Text wäre das doch eine gute Sache. Hier habe ich mal verschiedene Stati eines Spiels festgehalten. Der Spieler ist gerade im Intro, der Spieler ist gerade im MainMenu, er hat das Spiel gerade pausiert, oder ist mitten im Spiel, in einer Lobby oder sonst was. Es ist sinnvoll, diesen Status abzufragen. und das Spiel soll ja in Abhängigkeit dieses Status irgendetwas tun. Wie wir diese eigene Sammlung an eigenen Daten festlegen können, schauen wir uns jetzt mal gemeinsam an. Das Spiel sollte ja wissen, Moment, ich hab gerade pausiert. Dann soll vielleicht die Zeit angehalten werden, es soll ein Pausemenu angezeigt werden, und um das festzuhalten, müssen diese ganzen Stati ja erstmal bekannt sein. Das könnte man über sogenannte Enumerations festhalten. Enumerations, oder so heißt die Klasse hier oben auch, Enums, enthalten von uns festgelegte Werte, und folgendermaßen deklariert man sie: Ich schreib hier auch erstmal wieder Public vor, damit wir das Ganze im Inspektor festsetzen können, beziehungsweise damit wir da besser mit arbeiten können, und dann benutzen wir das Schlüsselwort enum für Enumeration. Und auch hier ist es sehr ähnlich einer Variablen-Deklaration, wir sagen erst, was für einen Typ haben wir denn hier, und dann, was für einen Namen. Und dann nenne ich das Ganze einfach mal GameStates. Und wir sehen, im Gegensatz zu einer Variablen, die ich hier oben nochmal hinschreibe, wird das Ganze auch anders ge-highlighted, und ich habe es groß geschrieben, das ist auch eine Sache der Konvention, Enums werden gerne großgeschrieben, Variablen dagegen klein. Sie werden auch anders hervorgehoben, mit diesem etwas hellen Grün. Jetzt müssen wir natürlich unsere ganzen Stati noch aufzählen, und das geht in einer geschweiften Klammer. Visual Studio hilft uns wieder, die geschweifte Klammer wird vervollständigt, und jetzt schreiben wir unsere ganzen Game Stati doch einfach mal da rein. Intro, fertig, Komma, eine Aufzählung, MainMenu, dann InGame, Paused und so weiter und so weiter. Hier können wir so viele Stati eintragen, wie wir möchten. Das Ganze muss natürlich nicht nur Game States enthalten, sondern kann auch verschiedene andere Aufzählungen enthalten, wichtig ist nur, dass das von uns völlig frei gewählte Datenwerte sind. Finalisieren tun wir das mit einem Semikolon, und damit würde dieses Objekt verschiedene Game States jetzt existieren. Wir sagen dem Programm, hey, du kennst jetzt diese Stati. Wenn wir jetzt darauf zugreifen möchten, dann tun wir das über das Schlüsselwort GameStates. Wir sagen also zum Beispiel, ja, unser Skript hat jetzt einen bestimmten Status, denn hier sagen wir lediglich, welchen Status gibt es denn überhaupt. Wir sagen also ganz frei in den Raum, hier, liebes Spiel, es gibt den Status Intro Es gibt den Status MainMenu, es gibt den Status Soundso. Wir müssen jetzt noch explizit sagen, welchen Status haben wir denn gerade, damit wir damit später arbeiten können, zum Beispiel Abfragen machen können. "Moment, welchen Status haben wir gerade? Ach, wir sind im Pausemenu, dann zeige ich doch mal irgendwie die Pauseeinstellungen. Und das machen wir über Public, wieder um die Bearbeitbarkeit im Inspektor herzustellen, Public GameStates und dann könnten wir sagen, currentGameState, und hier haben wir wieder eine typische Variablen-Deklaration. Public, okay, klar, für die Bearbeitung im Inspektor, dann, welchen Typ wollen wir denn hier haben? Wir haben uns den Typ quasi selber angelegt, denn das muss nicht "GameStates" heißen, das kann ja auch "Gabeln im Regal" heißen, aber hier haben wir es GameStates genannt, und dann haben wir diesem currentGameState den entsprechenden Namen gegeben. Eine Zuweisung ist hier auch noch sinnvoll, und Visual Studio zeigt uns direkt, was wir denn hier überhaupt alles zuweisen können. denn hier sind wir jetzt beschränkt auf eben diese vier Werte, oder wie viele wir auch immer da oben eintragen. Rekapitulieren wir das nochmal: Wir wollten eine eigene Sammlung an zum Beispiel Stati eines aktuellen Game Status festsetzen. Wir wollten einfach mal festhalten, Moment, was für Stati kann unser Spieler denn in unserem Spiel überhaupt annehmen. Diese Sammlung haben wir zunächst angelegt. Wir haben sie also zunächst dem Spiel bekannt gemacht, Hör mal, liebes Spiel, das und das und das und das gibt es jetzt, und das ist von uns völlig willkürlich gewählt worden, und völlig willkürlich wurde auch der Name dafür, GameStates gewählt. Hier haben wir natürlich darauf geachtet, dass er möglichst beschreibend ist, dass wir auch selber verstehen, Moment, was waren denn das nochmal für Stati, und dann haben wir die Sammlung finalisiert, so weit, so gut. Die Sammlung ist da, jetzt müssen wir mit der Sammlung auch noch was machen. Wir haben sie ja angelegt, um mit ihr zu arbeiten. Dann schnappen wir uns aus der Sammlung einfach einen aktuellen Status, welchen Status haben wir denn gerade? Haben den "currentGameState" genannt, und sehen, ja, er ist vom Typ GameStates, und haben dem auch gleich einen Wert zugewiesen. Jetzt sind wir hier natürlich sehr stark begrenzt, denn die Werte, die haben wir ja auch selbst festgelegt, also können wir auch nur aus dieser Zahl von Werten wählen. In Unity selber können wir damit auch arbeiten, da wir die Schlüsselwörter Public benutzt haben. Das Ganze sieht dann so aus, wenn wir das auch auf ein leeres Game Object packen, dass wir hier eine Dropdown-Liste von uns selbst definierten Werten haben, und das ist eine sehr sehr komfortable Funktion, denn stellen Sie sich vor, Sie haben nicht nur Game Stati, sondern in Ihrem Spiel irgendwelche Arten von Objekten, die der Spieler aufnehmen kann, sei es, um einen Gesundheitsbonus zu bekommen, oder um Munition aufzufüllen, oder um ein Running Boost zu bekommen, die könnten alle das gleiche Skript haben, und sie dürften sich nur unterscheiden, oder sie könnten sich nur unterscheiden, durch ihren Typ. Machen wir das mal gerade, und gehen zurück in Visual Studio, und nennen das nicht mehr GameStates, sondern zum Beispiel - ObjectType Was für einen Typ von Objekt haben wir? Und da können wir hier zum Beispiel sagen, HealthPlus, also, wenn ich das aufnehme, krieg ich Gesundheit, oder RunBoost, oder aber AmmunitionBoost, und so weiter und so weiter. Ich hoffe, ich habe mich da jetzt nicht verschrieben, aber es müsste alles passen, jetzt müssen wir natürlich noch die Werte anpassen, und hier heißt das jetzt nicht mehr "currentGameState", sondern "currentType" zum Beispiel, und sagen wir einfach mal, der Standardwert wäre HealthPlus, also das Standardobjekt ist ein Gesundheits-Boost. Und in Unity könnten wir jetzt Objekte verteilen, das mache ich jetzt hier mal nicht über ein leeres Game Objekt, sondern zum Beispiel über eine Sphäre, da kommt unser Skript drauf, und dann könnte der Spieler über diese Sphäre drüberlaufen, und wir könnten hier definieren, "Du, liebe Sphäre, du gibst ihm Gesundheit". So. Eine weitere Sphäre gibt ihm dann aber einen RunningBoost. Und so haben wir unterschieden, nur per Dropdown-Liste, was unser Objekt tun soll, durch unsere eigene Sammlung an Daten. Hier wäre es am besten, wenn Sie sich diese Enums einfach nochmal vergegenwärtigen, und ein wenig damit herumspielen. Was kann ich machen, was ist sinnvoll, Vielleicht haben Sie schon ein Projekt, wo so eine Liste sinnvoll wäre, und dann probieren Sie sie einfach mal aus.

Skripting in Unity Grundkurs

Greifen Sie mithilfe von C#-Skripts dynamisch in Ihr Unity-Projekt ein. Auch Programmier-Neulinge lernen Schritt für Schritt den Einstieg ins Skripting.

4 Std. 50 min (40 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Anleitung für Unity 5-Nutzer:

  • Schritt 1: Projekt in Unity 5 öffnen und die Meldung bestätigen, dass das Projekt ein Upgrade bekommt.
  • Schritt 2: Wenn die Meldung kommt, dass die API upgedatet werden muss, diese auch bestätigen

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!