Das Unity-Buch - Jashan Chittesh - E-Book

Das Unity-Buch E-Book

Jashan Chittesh

4,8

Beschreibung

Möchten Sie eigene Spiele entwickeln? Fürs Web, den Desktop oder für Smartphones und Tablets? In 2D, 3D oder gar Virtual Reality? Mit der beliebten Game Engine "Unity 5" ist das keine Zauberei. Unity-Kenner Jashan Chittesh nimmt Sie in seinem Buch virtuell an die Hand und führt Sie durch Unity und den gesamten Prozess der Spieleentwicklung. Sie brauchen nur grundlegende Programmierkenntnisse mitbringen, und schon geht es los. Anschaulich und praxisorientiert lernen Sie, wie Sie: • 2D-Spiele entwickeln mit Sprites, 2D-Animation, 2D-Physik und Parallax Scrolling • Schritt für Schritt ein anspruchsvolles 3D-Spiel programmieren • 3D-Spiele Virtual-Reality-tauglich machen, für Oculus Rift und Co. Dabei setzen Sie zahlreiche Techniken und Tricks ein, die eindrucksvolle Spiele ermöglichen, u.a.: • Materialien und Shader, inkl. physikbasiertes Shading (neu in Unity 5) • Audio und Effekte mit dem neuen Unity Audio Mixer • animierte Benutzerschnittstellen mit dem neuen Unity UI (ehemals uGUI) • einfache Splitscreen-Multiplayer-Funktionalitäten • Systematisch Fehler suchen, finden und beheben • Drawcalls und Batches verstehen, Performance optimieren • Projekte und Szenen ordentlich aufbauen, den Überblick behalten Über Unity hinaus lernen Sie die grundlegenden Konzepte und Arbeitsweisen der Spieleentwicklung kennen und erfahren, welche weiteren Tools hilfreich sind, z.B. für Grafik, 3D, Audio und Versionsverwaltung. Nach der Lektüre sind Sie mit den wichtigsten Fähigkeiten von Unity 5 vertraut. Sie können sie kreativ nutzen, um eigene Spielideen umzusetzen und auf verschiedenen Zielplattformen zu veröffentlichen. Auf der Website zum Buch finden Sie die kompletten Beispielprojekte mit Code, Aktualisierungen und eine Vielzahl weiterführenden Links. Außerdem: Über zwei Stunden Videotutorials und ein eigenes Forum, in dem der Autor Fragen zum Buch und zu Unity beantwortet.

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern
Kindle™-E-Readern
(für ausgewählte Pakete)

Seitenzahl: 788

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
4,8 (18 Bewertungen)
14
4
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Jashan Chittesh ist Diplom-Informatiker und arbeitet freiberuflich als Softwareentwickler. Seit 2007 entwickelt er mit Unity Computerspiele und gründete 2011 dazu die Firma narayana games. Seine Kenntnisse gibt er in Form von Unity-Workshops unter anderem an der Filmakademie Ludwigsburg weiter.

Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern – können Sie auch das entsprechende E-Book im PDF-Format herunterladen. Werden Sie dazu einfach Mitglied bei dpunkt.plus+:

www.dpunkt.de/plus

Das Unity-Buch

2D- und 3D-Spiele entwickeln mit Unity 5

Jashan Chittesh

Jashan Chittesh

[email protected]

Lektorat: René Schönfeldt

Copy-Editing: Friederike Daenecke, Zülpich

Satz: Petra Strauch, Bonn

Herstellung: Frank Heidt

Umschlaggestaltung: Helmut Kraus, www.exclam.de

Druck und Bindung: Stürtz GmbH, Würzburg

Bibliografische Information der Deutschen Nationalbibliothek

Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen

Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.

ISBN:

Buch 978-3-86490-232-1

PDF 978-3-86491-679-3

ePub 978-3-86491-680-9

1. Auflage 2015

Copyright © 2015 dpunkt.verlag GmbH

Wieblinger Weg 17

69123 Heidelberg

Die vorliegende Publikation ist urheberrechtlich geschützt. Alle Rechte vorbehalten. Die Verwendung der Texte und Abbildungen, auch auszugsweise, ist ohne die schriftliche Zustimmung des Verlags urheberrechtswidrig und daher strafbar. Dies gilt insbesondere für die Vervielfältigung, Übersetzung oder die Verwendung in elektronischen Systemen.

Es wird darauf hingewiesen, dass die im Buch verwendeten Soft- und Hardware-Bezeichnungen sowie Markennamen und Produktbezeichnungen der jeweiligen Firmen im Allgemeinen warenzeichen-, marken- oder patentrechtlichem Schutz unterliegen.

Alle Angaben und Programme in diesem Buch wurden mit größter Sorgfalt kontrolliert. Weder Autor noch Verlag können jedoch für Schäden haftbar gemacht werden, die im Zusammenhang mit der Verwendung dieses Buches stehen.

5 4 3 2 1 0

Vorwort

Unity ist eine Entwicklungsumgebung für Spiele und interaktive 3D-Anwendungen sowohl für Einsteiger als auch für Profis. Durch eine außergewöhnlich intuitive und einfache Benutzeroberfläche ist diese Game-Engine sehr gut zum Einstieg in die Spielentwicklung geeignet. Darüber hinaus bietet Unity auch dem fortgeschrittenen Spielentwickler beeindruckende und fast unbegrenzte kreative Möglichkeiten. Natürlich darf auch mit einem so komfortablen und doch mächtigen Werkzeug der Aufwand bei der Spielentwicklung nicht unterschätzt werden. Mit dem richtigen Know-how, etwas Talent und vor allem Beständigkeit kann mit Unity jedoch auch ein Einsteiger eine auf seine jeweiligen Fähigkeiten abgestimmte Spielidee in absehbarer Zeit in ein spielbares Produkt verwandeln. Sie werden nicht schon übermorgen das nächste große MMO auf dem Markt haben (der große grüne Button dazu fehlt Unity noch ;-)). Aber wenn Sie sich mit Unity intensiver befassen, haben Sie sicher in wenigen Monaten das eine oder andere kleine Spiel, das Ihnen, Ihren Freunden und Bekannten Freude bereitet. Und wer weiß: Manchmal haben auch kleine, einfache Spiele großen Erfolg. Dann erfreuen Ihre Spiele vielleicht sogar die ganze Welt! Und wenn Sie dranbleiben, haben Sie vielleicht eines Tages Ihr eigenes Spielentwicklungsstudio und produzieren richtig große Titel. Dieses Buch ist dazu vielleicht der Anfang.

Über dieses Buch

Das Unity-Buch hat vor allem die Absicht, das entsprechende Know-how auf allen relevanten Ebenen zu vermitteln und interessierten Anwendern mit grundsätzlichen Programmierkenntnissen einen möglichst mühelosen Einstieg in die Spielentwicklung mit Unity zu bieten.

Ich möchte Sie also auf eine Reise einladen, bei der wir gemeinsam auf spielerische Weise ein Spiel mit mehreren Variationen entwickeln. Dabei begegnen wir verschiedenen Bereichen von Unity, meistern Herausforderungen und entdecken in kleinen und größeren Schritten die unbegrenzten Möglichkeiten der Spielentwicklung. Gemeinsam betreten wir hier eine Welt, deren Horizont so weit reicht wie unsere Fantasie. Alles, was wir dann noch brauchen, ist die Bereitschaft, unsere Zeit der Verwirklichung der Ideen zu schenken, die aus dieser Fantasie geboren wurden.

Voraussetzungen

Spielentwicklung ist ein weites Feld, bei dem man eine Vielzahl von Talenten und Fähigkeiten einbringen kann. Im Umkehrschluss bedeutet das auch, dass man mit einem einzigen Buch nicht alles lernen kann, was man für die Entwicklung aller möglichen Spiele braucht. Speziell im Bereich 3D-Modelling und Programmierung verweise ich daher auf weiterführende Literatur, falls Sie Ihre Fähigkeiten dazu auffrischen wollen. Die Programmierbeispiele in C# sind vor allem am Anfang so erklärt, dass minimale Programmierkenntnisse in beliebigen Programmiersprachen zum Verständnis ausreichen sollten. Wenn Sie C# oder eine ähnliche Programmiersprache wie Java bereits können ist das natürlich von Vorteil. Kenntnisse in anderen Sprachen wie JavaScript oder Python können Sie in Unity ebenfalls gut einsetzen.

Wie Sie dieses Buch am besten lesen

Dieses Buch soll bewusst nicht als Referenz oder Nachschlagewerk dienen. Dazu gibt es das Unity Manual, das automatisch immer auf dem aktuellsten Stand von Unity ist und somit natürlich viel besser mit der schnellen Entwicklung der Game-Engine Schritt halten kann als jedes gedruckte Werk. Vielmehr ist dieses Buch als Reiseführer zu verstehen, der Sie Schritt für Schritt durch die Höhen und Tiefen des Entwicklungsprozesses verschiedener Variationen einer Spielidee führt. Dieser Reiseführer gibt Ihnen an vielen Stellen auch Vorschläge für eigene Entdeckungsreisen bis in die tiefsten Tiefen des Kaninchenbaus: teilweise in Form von Stichworten und Links, die Ihnen gute Einstiegspunkte für eigenen Recherchen bieten …

Übung macht den Meister

… teilweise auch durch anspruchsvollere Übungen, zu deren Umsetzung Sie meistens die im Buch beschriebenen Features und Workflows nutzen können, sich manchmal aber auch selbstständig zusätzliches Wissen aneignen müssen. Sie erkennen die Übungen leicht an der Marginalie Übung macht den Meister.

Von Anfang bis Ende

Insofern empfiehlt es sich natürlich auch, das Buch von Anfang bis Ende durchzuarbeiten und lediglich die Abschnitte, deren Inhalt Ihnen bereits vertraut ist, nur kurz zu überfliegen, um zu sehen, ob es da nicht doch noch ein Detail gibt, das Ihnen unbekannt ist.

Nachschlagen

Vielleicht werden Sie manchmal Ihr Wissen zu einem bestimmten Thema schnell mithilfe dieses Buches auffrischen oder einen bestimmten Trick nachlesen wollen. Dazu dient das ausführliche Stichwortverzeichnis. Mein Anliegen beim Schreiben des Buches war es, jeden Begriff und dazu passende Synonyme zu erfassen, die für so eine Suche infrage kommen könnten. Ich hoffe, dass mir dies gelungen ist und dass das Stichwortverzeichnis für Sie genau diesen Zweck erfüllt! Falls Sie einmal etwas nicht finden sollten: Lassen Sie mich das bitte wissen!

Die Website zum Buch: unity-buch.de

Die beste Möglichkeit, um sowohl mit Ihren Reisegefährten während der Spielentwicklung als auch mit mir in Kontakt zu treten, ist die Website zum Buch: unity-buch.de. Website und Buch gehören zusammen und ergänzen sich: Wenn Das Unity-Buch Ihr Reiseführer ist, dann ist unity-buch.de Ihr Portal in die Welt, die wir jetzt gemeinsam bereisen. Gleichzeitig spannt die Website ein soziales Netz aller Leser dieses Buches auf, die sich auf diese Weise beteiligen und ihre Reise mit anderen teilen wollen.

Grundsätzlich orientieren sich die verschiedenen Bereiche der Website am Inhaltsverzeichnis des Buches: Sie können also nach der Lektüre eines Kapitels im Buch auf die Website gehen und finden dort leicht alle Ressourcen, die zu diesem Kapitel passen. Zusätzlich bietet die Website aber auch Ansichten anhand verschiedener thematischer Kriterien und erlaubt Ihnen so auch eine ganz individuelle Reiseroute.

Downloads von unity-buch.de

Im Bereich Downloads auf unity-buch.de finden Sie nicht nur jeden Entwicklungsschritt unserer Beispielprojekte1, sondern auch Pakete mit rohen Beispielcodes, Bildern, Sounds und 3D-Modellen. Diese können Sie auch zur selbstständigen Umsetzung der Beispielprojekte oder neuen Varianten davon nutzen, falls Sie mangels Zeit oder entsprechend kultivierten Talents diese Dateien nicht selbst erstellen können oder wollen.

Beachten Sie bitte, dass diese Dateien lediglich Ihrem Lernen oder auch als Vorlage für eigene Dateien dienen und in Ihren eigenen Projekten nur nach schriftlicher Genehmigung verwendet werden dürfen.2 Natürlich können Sie auch für unsere gemeinsamen Beispielprojekte Ihre eigenen Kreationen verwenden. Alle Stellen im Buch, die auf einen Download verweisen, erkennen Sie leicht an dem Text Download von unity-buch.de neben dem Haupttext.

Falls Sie eine langsame Internet-Verbindung haben oder viel unterwegs sind: Es gibt auch ein Komplettpaket zum Download mit allen Einzel-Downloads und sämtlichen Screencasts (s. u.). Das können Sie über eine schnelle Internet-Verbindung herunterladen und dann auf Ihren Rechner übertragen.

Screencasts auf unity-buch.de

Manche Dinge lassen sich mit Worten und selbst mit Bildern nur sehr schwer beschreiben. In diesen Fällen habe ich Screencasts erstellt, also kleine Tutorial-Videos, um den Sachverhalt für Sie leicht verständlich zu veranschaulichen. Auch auf diese Screencasts verweise ich an entsprechenden Stellen im Buch, jeweils mit dem Text Screencast auf unity-buch.de. Auf unity-buch.de finden Sie im Bereich Screencasts alle Videos, die im Buch erwähnt werden, sowie ergänzende Tutorials.

Links auf unity-buch.de

Neben den Dateien und Videos bietet die Website zum Buch auf unity-buch.de noch eine Vielzahl weiterführender Links, auf die häufig auch im Buchtext verwiesen wird. Das erkennen Sie auch am Text Link auf unity-buch. de. Natürlich müssen Sie nicht sofort alle von der Website aus verlinkten Artikel lesen, und die Artikel, die wiederum von dort aus verlinkt sind, und so weiter – bis Sie das gesamte Internet bereist und verspeist haben. Aber schrittweise können Sie über diese Links Ihren Horizont erweitern, tolle Gegenden im World Wide Web kennenlernen und Ihre Kenntnisse in allen für die Spielentwicklung relevanten Bereichen immer weiter vertiefen. Im Bereich Links auf unity-buch.de finden Sie alle Links zum Buch: sowohl nach Abschnitten sortiert, sodass Sie nach der Lektüre eines Abschnitts im Buch dessen Inhalte komfortabel auf der Website vertiefen können, als auch nach thematischen Kriterien. Außerdem merkt die Seite sich, welchen Links Sie bereits gefolgt sind3 – so haben Sie jederzeit den Überblick über Ihren Fortschritt.

Das Fragen-Forum auf unity-buch.de

Link auf unity-buch.de

Im Bereich Fragen-Forum finden Sie ein deutsches Forum für Fragen im Stil von StackOverflow oder Unity Answers (siehe auch die Links auf der Website zum Buch). Bitte zögern Sie nicht, mich über dieses Forum zum Buch zu fragen. Gerne auch, falls Ihnen mal ein Stichwort im Stichwortverzeichnis fehlt: Zum einen kann ich Ihnen wahrscheinlich leicht helfen, die entsprechende Stelle im Buch zu finden; zum anderen gibt mir das auch die Möglichkeit, das Stichwortverzeichnis in der nächsten Auflage entsprechend zu erweitern und auch auf der Website zum Buch für andere Studienreisende in Sachen Spielentwicklung einen entsprechenden Vermerk im Bereich Errata zu hinterlassen.

Das Fragen-Forum arbeitet mit sogenannten Tags, wie 2D, 3D, C#, Physik, Unity UI, Asset Store, Stichwortverzeichnis oder auch Errata. Jeder Frage können Sie ein bis fünf solcher Tags zuordnen, und natürlich können Sie über die Tags auch zu diesem Tag passende Fragen suchen und damit vielleicht sehr schnell eine Antwort finden.

Was Sie in diesem Buch lernen: more than just facts

Nach der Lektüre von Das Unity-Buch sollten Sie genügend über wesentliche Bereiche der aktuellsten Version von Unity wissen, um Ihre eigenen Spielideen erfolgreich umsetzen zu können. Es wird zwar nicht jedes Feature beschrieben, und vor allem nicht bis ins letzte Detail. Dafür werden Sie aber am Ende dieses Buches einen sehr guten Orientierungssinn entwickelt haben: einerseits, um bei Bedarf mühelos bis ans letzte Detail aller Unity-Features zu gelangen, um sie bestmöglich zur Umsetzung Ihrer Spielidee zu nutzen; andererseits, um sich in dem manchmal sehr herausfordernden Prozess der Entwicklung von Spielen zurechtzufinden.

Das ist ein weiterer Grund, aus dem ich Ihnen mit dem Fragen-Forum auf der Website zum Buch anbiete, sich mit anderen Entwicklern zu vernetzen: Gerade in den schwierigen Phasen und vor allem am Anfang kann ein Austausch mit Reisegefährten den notwendigen Schub verleihen, um in den Hyperspace durchzubrechen, anstatt in Stagnation zu geraten und am Ende aufzugeben!

Spielentwicklung ist nicht nur ein enorm weites und gleichzeitig sehr tiefes, komplexes und herausforderndes Feld, sondern auch eines, in dem eine unglaublich schnelle Weiterentwicklung geschieht: Unity kenne ich persönlich seit Version 2.0 – das war Ende 2007. Inzwischen sind wir bei Version 5.0, und ganze Bereiche sind neu dazugekommen. Andere sind praktisch nicht mehr wiederzuerkennen, und manche Features sind auch weggefallen. Es macht großen Spaß, über immer modernere und mächtigere Werkzeuge zu verfügen und immer elegantere Workflows zu nutzen, die mit geringerem Aufwand hochwertigere Ergebnisse ermöglichen. Das bedeutet aber auch, dass man praktisch die ganze Zeit über Neues lernen muss, ohne sich dabei mit der technischen Entwicklung zu verzetteln. Genau dazu soll dieses Buch motivieren. Deswegen schreibe ich über einige Themen bzw. Features nur so viel, dass Sie das Feature gut in den Gesamtprozess der Spielentwicklung einordnen und sich die Details dann selbstständig aneignen können. Die Website unity-buch.de mit den weiterführenden Links dient als Einstiegspunkt für diese Vertiefung.

Link auf unity-buch.de

Leider sind viele für die Spielentwicklung relevante Artikel nur auf Englisch verfügbar. Das gilt auch für die Dokumentation von Unity. Dieses Buch ist in deutscher Sprache verfasst, daher gebe ich – wo möglich – Verweise auf deutsche Artikel. Es gibt auch bereits seit April 2010 Unity Insider, ein aktives deutsches Unity-Netzwerk mit Diskussionsforum.4 Dort finden Sie auch eine Initiative für ein deutsches Dokumentations-Wiki.5 Möglicherweise wird es hier später auch von Unity Technologies selbst etwas geben.6 Microsoft hat praktisch das komplette Microsoft Developer Network (MSDN) und damit auch die Dokumentation von C# und vom. NET Framework auf Deutsch übersetzt7 – und wie wir noch sehen werden, nutzt das auch uns als Unity-Entwickler.

Dennoch lohnt es sich für jeden Spielentwickler, sich auch mit der englischen Sprache anzufreunden. Denn bei der Spielentwicklung machen gute Englischkenntnisse einem das Leben deutlich einfacher. Viele für uns Spielentwickler relevante Ressourcen sind in dieser Sprache verfasst, und je mehr Sie auf Englisch lesen, desto leichter wird es mit der Zeit. Auch hier gilt: Übung macht den Meister! Vielleicht reisen Sie ja auch mal in ein englischsprachiges Land.

Wir reisen jetzt erst mal gemeinsam in die wundervolle Welt der Spielentwicklung. Das Fahrzeug, mit dem wir diese Reise antreten, ist Unity – und das nächste Kapitel habe ich einer ersten Vorstellung dieses Fahrzeugs gewidmet. Let the game begin!

Jashan Chittesh, 3. März 2015

Danksagungen

Zunächst ein riesiges Dankeschön an Joachim Ante, Nicholas Francis und David Helgason dafür, dass sie Unity zu einem Produkt entwickelt und der Welt zur Verfügung gestellt haben. Ohne diese drei Gründer von Unity Technologies (ursprünglich OTEE – Over The Edge Entertainment) würde es Unity und damit dieses Buch gar nicht geben. Dieses Dankeschön erstreckt sich natürlich auch weiter auf alle inzwischen über 500 Mitarbeiter von Unity Technologies – you girls and guys rock!

Dieses Buch würde es auch nicht geben ohne meinen Lektor René Schönfeldt, der den gesamten Prozess von Anfang bis Ende mit tollen Anregungen, geduldig und wohlwollend unterstützt hat. Dafür ein ganz herzliches Dankeschön!

Wertvolles Feedback habe ich auch von den Fachgutachtern erhalten, namentlich seien hier Martin Schulz, Marcus Ross und Julia Schmidt genannt.

Weiterhin möchte ich Friederike Daenecke für die wertvolle Rechtschreibkorrektur und Petra Strauch für den Satz dieses inzwischen doch recht umfangreichen Werkes danken!

Gestalterische Unterstützung erhielt ich von Nicole Delong und Sebastian Weidner. Hervorzuheben ist hier vor allem die neue 2D-Art für Snake sowie das GUI-Design von Nicole und die Profi-Tipps zum Postprocessing des Buchcovers von Sebastian. Danke auch für Eure Freundschaft!

Dankbarkeit aus tiefstem Herzen fühle ich natürlich auch für meine Lebensgefährtin Mirimah, die vor allem in den heißen Schreibphasen geduldig, verständnisvoll und liebevoll unterstützend die Erschaffung dieses Buches begleitet hat.

Inhaltsverzeichnis

Vorwort

1       Über Unity

1.1    Unbegrenzte Möglichkeiten: ganz einfach!

1.2    Zielplattformen: viele!

1.3    Entwicklungsplattformen: Mac und Windows

1.4    Unter der Motorhaube: Bekannte Technologien

1.5    Lizenzkosten: Es geht auch ohne

1.6    Wer Unity verwendet: ein großes Spektrum

2       Ein erstes einfaches 2D-Mini-Spiel

2.1    Die Unity-Game-Engine installieren

2.2    Erste Schritte mit Unity gehen: der Editor

2.2.1     Unser gesamtes Projekt: Project Browser

2.2.2     Die Hierarchie einer Szene: Hierarchy

2.2.3     Objekte der Szene im Raum: Scene View

2.2.4     Eigenschaften von Objekten: Inspector

2.2.5     Game View: Endlich spielen!

2.2.6     Was zeigt die Game View eigentlich? Kameras in Unity

2.2.7     Mit Layern und der Culling Mask arbeiten

2.2.8     In Project, Hierarchy und Scene View suchen

2.2.9     Weitere Views

2.2.10   Layouts

2.3    2D-Features in Unity verstehen

2.3.1     Sprites importieren und mit dem Sprite Editor bearbeiten

2.3.2     Den Sprite Renderer zur Darstellung von Sprites verwenden

2.3.3     Sortierung von Ebenen mit Sorting Layers einrichten

2.3.4     Einfache 2D-Animationen mit Mecanim und Dope Sheet erstellen

2.3.5     2D-Physik zum Erkennen von Kollisionen und Aufsammeln von Äpfeln einsetzen

2.3.6     Parallax Scrolling hinzufügen

2.3.7     Was mit ein wenig Editor-Scripting möglich ist

2.4    Erforschen und verändern

2.5    Mehr über die Entwicklung von 2D-Spielen mit Unity lernen

3       Unser Projekt: Traces of Illumination

3.1    Vorteile als Beispielprojekt

3.2    Spielmechanik und Begriffswelt

4       Der erste Prototyp

4.1    Ein neues Projekt anlegen

4.2    Level 01: Das Quadrat – Modeling in Unity

4.3    Das erste Fahrzeug – mehr Modelling in Unity

4.4    Bewegen und steuern – Scripting in Unity

4.5    Die Kamera führen

5       Die Spielentwicklung vorbereiten

5.1    Regeln: Spielmechanik und Programmierung

5.2    Spiel an Augen: Bildschirmdarstellung

5.2.1     Virtuelle Benutzerschnittstelle: Pixel- und Vektorgrafik

5.2.2     Spielwelt: 2D, 3D, Modelling, Texturing und Animation

5.3    Spiel an Ohren: Musik und Soundeffekte

5.4    Teamwork für Einzelspieler: Unity Asset Store

5.5    Klassisches Teamwork oder Backup: Versionsverwaltung

6       Den Prototyp fertigstellen

6.1    Eigene Materialien erstellen und verwenden

6.1.1     Material anlegen und einem GameObject zuweisen

6.1.2     Texturen zuweisen

6.1.3     Mip-Mapping und Qualitätseinstellungen

6.1.4     Shader programmieren … äh … ausprobieren

6.1.5     Prozedurale Materialien: Substances

6.1.6     Physikbasiertes Shading mit den Standard-Shadern

6.2    Die Wände hinter dem Fahrzeug erstellen

6.2.1     Lösungsmöglichkeiten zum Erzeugen der TraceWalls

6.2.2     Implementierung von Lösung B: Skalierung

6.2.3     Coroutines für zeitgesteuerte Ereignisse verwenden

6.2.4     Die Implementierung des Wandwuchses vollenden

6.2.5     Eigenheiten von Unity: Klassen und Structs, Variablen und Properties

6.2.6     Das Problem mit den Drehungen

6.2.7     Saubere Drehungen implementieren

6.2.8     Testing und kleine Fehler korrigieren

6.2.9     Erweiterung zu Lösung C: Vektortransformation

6.2.10   Das Modell für die Wand in Unity importieren

6.2.11   Ein neues Prefab für die Wände erstellen

6.2.12   Änderungen an Prefabs von der Szene ins Projekt zurückschreiben

6.2.13   Prozedural das Modell-Mesh verändern

6.2.14   Den Fehler finden

6.2.15   Beschränkung der Prefab-Ebenen im Project Browser

6.2.16   Wenn sichtbare Flächen unsichtbar werden

6.2.17   UV-Map kontinuierlich anpassen

6.3    Von Äpfeln und Explosionen, Triggern und Kollisionen

6.3.1     Explosionen aus dem Unity Asset Store einsetzen

6.3.2     Äpfel verteilen und sammeln

6.3.3     Von Collidern und Triggern

6.3.4     Die Debug-Ansicht im Inspector nutzen

7       Projekt-Polishing – Iteration 1

7.1    Die Projektstruktur optimieren

7.2    Die Szenenhierarchie übersichtlicher gestalten

7.3    Den Code für Erweiterungen vorbereiten

7.3.1     TracerController-Varianten über Vererbung umsetzen

7.3.2     Den InputHandler zur Behandlung von Tastaturabfragen erstellen

7.4    Die Reihenfolge der Scriptaufrufe bestimmen

8       Veröffentlichung vorbereiten

8.1    Ein Startmenü hinzufügen

8.1.1     Eine neue Szene anlegen

8.1.2     Über Internationalisierung und Lokalisierung

8.2    Das Startmenü mit Unity UI umsetzen

8.2.1     Das Unity-UI-Layout verstehen und anwenden

8.2.2     Unity Events: den MenuController implementieren

8.3    Den Spieler gewinnen oder verlieren lassen

8.3.1     Einen GameStateManager implementieren

8.3.2     Den Spielzustand sichtbar machen

8.4    Unity Audio: Stimmung! Soundeffekte! Musik!

8.4.1     Hintergrundmusik für Startmenü und Level auswählen

8.4.2     Soundeffekte für das Spiel hinzufügen

8.4.3     Dem Tracer ein Motorengeräusch geben

8.4.4     Dramatischere Drehungen entwickeln

8.4.5     Das Einsammeln von Äpfeln und das Gewinnen akustisch untermalen

8.4.6     Audio-Engineering: Musik und Effekte aufeinander abstimmen

9       Aus dem Editor zu den Spielern

9.1    Einen Webplayer veröffentlichen

9.2    Das Spiel mittels WebGL veröffentlichen

9.3    Standalones für Windows, Mac OS X und Linux

9.4    Mobile Zielplattformen: Tablets und Handys

9.4.1     Unity Remote

9.4.2     Steuerungsmöglichkeit für mobile Geräte einführen

9.4.3     Builds für Android-Handys und -Tablets veröffentlichen

9.4.4     Builds für iOS-Geräte veröffentlichen

9.4.5     Builds für Windows Store/Phone veröffentlichen

9.5    Builds für Oculus Rift veröffentlichen

9.6    Builds für weitere Zielplattformen veröffentlichen

10     Project Polishing – Iteration 2

10.1  Die Level-Geometrie durch ein 3D-Modell ersetzen

10.2  Neues Modell für das Fahrzeug mit verschiedenen LODs einbinden

10.2.1   Materialien und Texturen einstellen

10.2.2   Performance über Game View Stats analysieren

10.2.3   Einen optimierten Tracer mit LODs erstellen

10.2.4   Qualitätseinstellungen verstehen und LODs optimieren

10.2.5   Texturgröße bei LODs anpassen

10.3  Benutzerfarben für Tracer und Wand

10.3.1   Den Tracer einfärben

10.3.2   Die Wände einfärben

10.3.3   Die Wände dynamisch einfärben

10.3.4   Den Startscreen um eine Farbauswahl erweitern

10.3.5   Die Spielerfarbe über Szenenwechsel hinweg speichern

10.4  Mehr Action: Spielen auf Zeit mit Punkte-Bonus

10.4.1   Einen Timer einführen

10.4.2   Punktekategorien erstellen und im Level verteilen

10.4.3   Zeitmultiplikator und Punktedarstellung hinzufügen

11     Unsere GUI aufhübschen

11.1  Die wesentlichen Darstellungselemente von Unity UI

11.2  Das Startmenü aufhübschen

11.2.1   Echte 3D-Objekte als Pseudo-Hintergrundgrafik einsetzen

11.2.2   Masking verwenden, um einen scrollbaren Text umzusetzen

11.2.3   Bilder und Farben aus der Designer-Vorlage übernehmen

11.2.4   Den Titel mit mehreren Farben formatieren

11.2.5   Button-Animationen mit Mecanim umsetzen

11.2.6   Einen Einstellungsscreen erstellen

11.2.7   Zwischen Hauptmenü und Einstellungsscreen wechseln

11.2.8   Die GUI auf 3D umstellen

11.2.9   Wechsel zwischen den Screens animieren

11.3  Die InGameGUI aufhübschen

11.3.1   Runde Buttons als Prefabs verwenden

11.3.2   Steuerungsbuttons nur bei Touch-Devices einblenden

11.3.3   Eine Fortschrittsanzeige für die Äpfel implementieren

11.4  Anpassungen für hochauflösende Displays

12     Beleuchtung mit Erleuchtung: Enlighten

12.1  Umgebungslicht einstellen

12.2  Lichtquellen setzen

12.2.1   Licht ausrichten mit Directional Light

12.2.2   Strahlende Lichtpunkte setzen

12.2.3   Mit einem Spot anstrahlen

12.2.4   Virtuelle Lichtschirme: Area Lights

12.3  Still halten oder sich bewegen

12.3.1   Lightbaking für statische Objekte aktivieren

12.3.2   Lightprobes für bewegliche Objekte einrichten

12.4  Renderpfade: Forward oder Deferred wählen

12.5  Licht mit Layern einschränken

13     Project Polishing – Iteration 3

13.1  Scripts ordnen

13.1.1   Verzeichnisstruktur verbessern

13.1.2   Eigene Klassen in Namespaces zusammenfassen

13.2  InputHandler auf Events umstellen

14     Ein minimales Multiplayer-Spiel

14.1  Die Spieler vervielfältigen

14.2  Kameras aufräumen und Splitscreen einführen

14.3  Die Tastatur gerecht aufteilen

14.4  Das Punktekonto zusammenführen

14.5  Spaß haben!

14.6  Übung: PowerUps hinzufügen

15     Terrain Engine: Eine Landschaft bauen

15.1  Was ist eigentlich ein Terrain in Unity?

15.2  Vorbereitungen treffen

15.2.1   Die Grundeinstellungen konfigurieren

15.2.2   Terrain Assets importieren und registrieren

15.3  Die Landschaft formen

16     Durch die Landschaft laufen

16.1  Third Person Controller studieren

16.2  Den Charakter an unser Spiel anpassen

17     Durch die Landschaft fahren

18     Eine neue Dimension: Virtual Reality

18.1  Die VR-Brillen-Seh-Krankheit: Motion Sickness

18.2  Eine entspannte VR-Erfahrung gestalten

18.3  Interaktion mit Objekten im virtuellen Raum

18.4  VR-Anpassungen für unser Spiel umsetzen

18.4.1   First-Person-Variante unseres Landschaftsspiels

18.4.2   VR-Racing Apple Collection Games

18.4.3   Back to the roots: Im Tracer sitzen!

19     Enter the Endgame

20     Glossar

20.1  Begriffe

20.2  Icons und Buttons

Stichwortverzeichnis

1 Über Unity

Unity wird üblicherweise als Game-Engine (deutsch Spiel-Engine) bezeichnet, und das ist auch korrekt. Beschreibender wäre aber Entwicklungswerkzeug zur Erstellung von 2D- und 3D-Spielen und -Anwendungen für eine Vielzahl unterschiedlicher Zielplattformen einschließlich Virtual-Reality-Umgebungen. Streng genommen umfasst die Game-Engine an sich vor allem die einzelnen für Spiele notwendigen Systeme (wie Grafik, Physik, Audio, Steuerung und Skripting) sowie teilweise auch weiterführende Systeme, beispielsweise Netzwerkunterstützung oder auch das Speichern von Spielständen. Bis auf Letzteres (das Speichern von Spielständen) hat Unity das auch alles mit dabei. Wenn Sie mit Unity arbeiten, sehen Sie aber meistens den Unity Editor, also ein Autorensystem, das es erlaubt, alle für ein Spiel notwendigen Teile in Szenen zusammenzusetzen und damit ein komplettes Spiel zu erschaffen oder eben auch eine interaktive Anwendung. Denn Unity wird keineswegs nur zum Entwickeln von Spielen verwendet.

1.1 Unbegrenzte Möglichkeiten: ganz einfach!

Auch wenn Unity selbst inzwischen sowohl unter Windows als auch unter Mac OS X verwendet werden kann, merkt man ihm seine Mac-Ursprünge noch deutlich an:1 Die Benutzeroberfläche ist sehr einfach gehalten und zeigt dem Anwender meistens genau das, was er braucht. So findet man auch als neuer Anwender schnell den Einstieg. Die Komplexität der zugrunde liegenden Technologien bleibt dezent im Hintergrund verborgen. Fortgeschrittene Anwender haben dennoch Zugriff auf vieles, was »unter der Motorhaube« verborgen ist.

Surface Shader erleichtern die Shader-Programmierung

Ein schönes Beispiel hierfür sind die sogenannten Shader: kleine Programme, die auf der Grafikkarte ablaufen und dafür verantwortlich sind, dass die 3D-Modelle so auf dem Bildschirm erscheinen, wie der Spieler sie zu sehen bekommt. Unity bietet seit jeher eine große Auswahl vorgefertiger, spezialisierter Shader an, mit denen bereits eine Vielzahl von typischen Fällen abgedeckt ist. In vielen Fällen reicht das.

Man kann in Unity aber auch eigene Shader verwenden: Sämtliche Shader stehen auch im Quellcode zur Verfügung, können also als Grundlage für eigene Entdeckungsreisen und Experimente dienen. Fortgeschrittene Anwender können diese Shader also anpassen oder ihre ganz eigenen Shader programmieren.

Doch damit nicht genug: In Unity 3 wurden sogenannte Surface-Shader eingeführt. Somit muss der Shader-Programmierer sich in den meisten Fällen nur noch um die Besonderheiten in der Darstellung kümmern, während beispielsweise der Shader-Code für verschiedene Arten von Lichtquellen und Renderpfade2 automatisch von Unity generiert wird. Natürlich steht es dem Anwender auch frei, seine ganz eigenen Algorithmen zu entwerfen – wenn er das möchte.

Seit Unity 5 bietet die Game-Engine auch zwei universelle, physikbasierte Shader3, die auf intuitive Art und Weise für unterschiedlichste Materialien verwendet werden können – egal ob das nun Metall, Plastik, Holz oder Stoff ist. Im Hintergrund erzeugt Unity dafür automatisch unterschiedlichste Shader, die nur genau das können, was für das konkrete Material benötigt wird. Mit dieser Komplexität muss sich der Anwender aber nicht beschäftigen, wenn er das nicht möchte.

Man hat also zwei universell einsetzbare Shader, die in vielen Fällen ausreichen. Wenn nicht, hat man eine Vielzahl spezifischer Shader zur Auswahl. Reicht auch das nicht, kann man Surface Shader programmieren, bei denen man sich auf das Wesentliche konzentrieren kann und nicht selbst dafür sorgen muss, dass der Shader auch mit allen Beleuchtungsmodi und Renderpfaden klarkommt. Aber wenn man sich auch darum selbst kümmern möchte, kann man seine Shader auch komplett selbst schreiben und hat damit die volle Freiheit, die volle Kontrolle, aber auch die volle Verantwortung.

Unitys flüssige Asset Pipeline ist Gold wert

Besonderes Augenmerk verdient die sogenannte Asset Pipeline in Unity: Bei der Spielentwicklung hat man es mit einer Vielzahl unterschiedlicher sogenannter Assets zu tun. Assets sind im Prinzip einfach alle Dateien, die in einem Spiel oder einer interaktiven 3D-Anwendung verwendet werden: 3D-Modelle, Texturen, Audiodateien und nicht zuletzt Scripts (also Programmcode). Häufig müssen diese Assets speziell für die jeweilige Game-Engine aufbereitet werden. Teilweise müssen Programmierer erst entsprechende Routinen entwickeln, um Dateien – beispielsweise aus Blender4 – in ein Spiel einzubinden. Jedes Mal, wenn eine eingebundene Datei verändert wird, muss die Datei zuerst wieder in das entsprechende Format übertragen und das Spiel neu kompiliert werden, um schließlich nach längerer Wartezeit die Änderung im Spiel zu sehen und prüfen zu können. Aufgrund des komplexen, mehrstufigen Prozesses spricht man auch heute noch von einer (Asset) Pipeline.

Bei Unity funktioniert das anders: Wir ziehen unsere Assets einfach in das Projekt und klicken auf Play. Fertig. Ändern wir die Datei mit der jeweiligen Anwendung, in der diese Datei erstellt wurde, erkennt Unity diese Änderungen, sobald das Fenster wieder den Fokus hat – sogar während das Spiel im Editor läuft.5 Das nimmt im wahrsten Sinne des Wortes den »Schmerz aus der Spielentwicklung«.6 Ebenso können wir in Unity während des Spielens im Editor sämtliche Spielparameter ändern – sodass man sein Spiel in weiten Teilen buchstäblich »spielend« entwickelt.

Einfach, aber unbeschränkt

Trotz dieser Einfachheit ist Unity ausgesprochen flexibel: So gab es beispielsweise auch schon früher viele Anwender, die Unity zur Entwicklung von 2D-Spielen verwendet haben, auch wenn das Werkzeug ursprünglich zur Entwicklung von 3D-Spielen gedacht war. Seit Unity 4.3 bietet die Game-Engine auch explizite 2D-Unterstützung mit Sprites und 2D-Physik. Vor allem legt Unity aber kein spezifisches Spielgenre fest: Ob man nun beispielsweise ein Rennspiel, eine Flugsimulation, ein Knobel-Puzzle, ein Rollenspiel oder einen First-Person-Shooter (FPS) entwickeln möchte – die Entwicklungsumgebung unterstützt die Kreativität des Anwenders, ohne ihn durch eine Spezialisierung auf einzelne Genres in den Möglichkeiten einzuschränken. Das zeigt sich auch darin, dass mit Unity nicht nur Spiele entwickelt werden.

1.2 Zielplattformen: viele!

Eine weitere Besonderheit von Unity ist, dass eine Vielzahl von Zielplattformen unterstützt wird. So ist es möglich, aus einem einzigen Spielprojekt heraus Versionen für Linux, Apples Mac OS X und Microsoft-Windows-Betriebssysteme zu erzeugen, einschließlich Windows Store Apps. Ebenso ist es mit dem gleichen Projekt möglich, sogenannte Web Player zu erstellen, die mit einem Plug-in für alle gängigen Webbrowser ebenfalls unter Mac OS X und Windows lauffähig sind. Für moderne Browser kann Unity WebGL-Versionen Ihres Spiels erstellen, die dann auch ohne Plug-in-Installation funktionieren, auch unter Linux. Somit können Sie Unity-Spiele direkt in Webseiten einbinden und sehr einfach einer riesigen Anzahl potenzieller Spieler zur Verfügung stellen.

Mobile Geräte

Mit Unity iOS, Unity Android, Unity Windows Phone 8 und Unity Blackberry 10 kann auch praktisch der komplette mobile Spielemarkt angesprochen werden. Die Entwicklung für mobile Plattformen ist ein komplexes Thema, und es würde den Rahmen des vorliegenden Buches sprengen, es im Detail zu beschreiben. Dennoch werde ich Ihnen an einigen Stellen Tipps geben, um mögliche Hindernisse aus dem Weg zu räumen, falls Ihr eigenes Spiel auch auf mobilen Endgeräten laufen soll. Durch die rasante Entwicklung immer leistungsfähigerer mobiler Hardware wird auch der Aufwand, ein Spiel für Smartphones anzupassen, immer geringer und reduziert sich mehr und mehr auf die elegante Nutzung alternativer Eingabe- und Steuerungsmöglichkeiten.

Eine Plattform für sich: Virtual Reality

Ein alter Traum vieler Spielentwickler, der nun nach Jahrzehnten der Wartezeit endlich wahr zu werden scheint, ist Virtual Reality. Mit dem Oculus Rift gibt es zumindest ein Head-Mounted Display, das nicht nur finanziell erschwinglich ist, sondern bereits mit den heute verfügbaren Prototypen ein beeindruckendes Maß an sogenannter Immersion (etwa: Eintauchen in virtuelle Realität) ermöglicht. Zudem wird es bereits von Unity als Zielplattform voll unterstützt. Auch das Thema Virtual Reality könnte für sich ein ganzes Buch füllen. Sie werden aber zumindest in Abschnitt 9.5 lernen, wie man Builds für die Oculus Rift erstellt und Spiele für diese Plattform einer entsprechenden Spielerschaft zugänglich machen kann. In Kapitel 18 wagen wir einen kleinen Einstieg in diese ganz neue Dimension von Spielerfahrung.

Auch Sony hat bereits ein Virtual-Reality-System unter dem Arbeitstitel Project Morpheus in der Entwicklung, das neben Oculus Rift eine sehr interessante Zielplattform für Virtual-Reality-Anwendungen werden dürfte. Unity Technologies hat auch dafür bereits Unterstützung angekündigt7, was uns direkt zur gewissermaßen klassischen Plattform für Spiele führt: den Konsolen.

Totgesagte leben länger: Konsolen

Schließlich kann Unity auch Builds für Konsolen wie Nintendo Wii und Wii U, Microsoft Xbox360 und Xbox One sowie Sony PlayStation 3, 4 und Vita erstellen. Somit können Sie Ihre Unity-Projekte also auch für Konsolen anbieten. Dabei ist allerdings zu beachten, dass hierzu oft die Teilnahme an entsprechenden Entwicklerprogrammen notwendig ist, die teilweise sowohl finanziell als auch mit ihren Teilnahmebedingungen selektive Anforderungen an die Entwickler stellen.8 Dafür sind die entsprechenden Unity-Lizenzen bei manchen Entwicklerprogrammen bereits enthalten. Es entstehen dann also keine weiteren Kosten. Auf Besonderheiten bei der Entwicklung für Konsolen wird im vorliegenden Buch jedoch nicht näher eingegangen.

1.3 Entwicklungsplattformen: Mac und Windows

Auch bei den Plattformen, auf denen die Entwicklungsumgebung selbst läuft, ist Unity flexibel: Seit der Version 2.5 gibt es auch eine Version für Windows. Somit kommen sowohl Mac- als auch Windows-User gleichermaßen in den Genuss, mit Unity zu arbeiten. Eine Einschränkung aufgrund von Apple-Bestimmungen gibt es bei der iOS-Entwicklung: Da nur mit Xcode entwickelte Programme im AppStore zugelassen sind, war für die Entwicklung von Spielen für iPod, iPad und iPhone ein Mac notwendig. Diese Einschränkung ist mit Unity Cloud Build9 bereits Geschichte.

Link auf unity-buch.de

Ebenso erfordert die Entwicklung von Windows Store Apps und für Windows Phone 8, dass auf dem Rechner Visual Studio installiert ist – hier braucht man also auf jeden Fall Windows. Im Moment sind Builds für diese Zielplattform mit Unity Cloud Build noch nicht explizit angekündigt. Es ist aber immerhin angekündigt, dass mit der Zeit weitere Zielplattformen unterstützt werden sollen.

1.4 Unter der Motorhaube: Bekannte Technologien

Unity integriert eine Vielzahl bekannter Technologien und Bibliotheken. Dies erspart es nicht nur den Entwicklern von Unity, das »Rad neu zu erfinden«, sondern vereinfacht den Einstieg in Unity auch für Anwender, die mit diesen Technologien bereits vertraut sind.

Link auf unity-buch.de

Scripting in Unity basiert auf dem Mono-Framework. Somit steht Entwicklern neben der Unity-spezifischen API10 zur Spielentwicklung eine mächtige, ausgereifte Bibliothek zur Verfügung, die weitgehend dem. NET-Framework von Microsoft entspricht. Als Programmiersprachen werden bei Unity C#, JavaScript (eigentlich handelt es sich um eine Sprache namens UnityScript) sowie Boo11 (eine auf Python basierende Programmiersprache) unterstützt.

Im Folgenden erwähne ich einige weitere Technologien beispielhaft, die Unity intern verwendet. Angenehmerweise ist zum Arbeiten mit Unity ein tieferes Verständnis dieser Technologien oft nicht erforderlich, da sie weitgehend hinter einer einfachen, leicht zu erlernenden Benutzerschnittstelle versteckt sind.

Als Physik-Engine für 3D kommt bei Unity NVIDIA PhysX3 zum Einsatz. Somit können beispielweise Gravitation und das Verhalten bei Kollisionen umgesetzt werden, ohne dass man sich hier mit den Implementierungsdetails auseinandersetzen muss. Für 2D-Physik verwendet Unity Box 2D. Für die Vertonung arbeitet im Hintergrund FMOD, das nicht nur 3D-Audio mit einer Vielzahl von Effekten unterstützt (z. B. Hall/Reverb, Echo, Filter oder Verzerrungen), sondern auch das Abspielen von Tracker-Dateien (siehe Glossar). Und wer Netzwerkspiele direkt mit den Bordmitteln von Unity implementiert, der verwendet im Hintergrund (noch12) RAKNET. Diese hochperformante Netzwerkbibliothek sorgt beispielweise dafür, dass wir mit einem einfachen Schalter die Netzwerkkommunikation verschlüsseln können und dass in den meisten Fällen auch Spieler ohne öffentliche IP-Adressen Server starten können (Stichwort: NAT Punchthrough).

Seit Version 3 von Unity ist es auch möglich, komplexe Szenenbeleuchtungen unter Verwendung des Beast-Lightmappers innerhalb von Unity direkt in die Texturen zu baken (siehe Glossar). Die Technologie wurde in Unity 5 allerdings durch Enlighten ersetzt, was nicht nur ein sympathischerer Name ist und unter anderem auch Global Illumination in Echtzeit unterstützt, sondern auch die Abhängigkeit zur Firma Autodesk auflöst. Schließlich hat Unity Technologies gemeinsam mit der Firma Umbra Software eine sehr fortgeschrittene Lösung entwickelt, um jeweils nur die Objekte der Grafikkarte zum Rendern zu geben, die auch tatsächlich sichtbar sind (Occlusion Culling). Während für diese Technologie üblicherweise pro veröffentlichtem Titel Lizenzkosten im fünfstelligen Bereich anfallen, ist sie bei Unity direkt enthalten.

1.5 Lizenzkosten: Es geht auch ohne

Links auf unity-buch.de

Bereits seit der Version 2.6 ist die Standardversion von Unity kostenfrei, d. h., man kann Unity einfach herunterladen, installieren und damit ohne weitere Kosten seine ersten Spiele entwickeln und – wenn man möchte – auch verkaufen. Inzwischen gilt das auch für die meisten Zielplattformen, also insbesondere Mobile (seit Mai 201313), WebGL14 und sogar für einige Konsolen15. Seit Unity 5 gibt es die kostenfreie Personal Edition, die praktisch alle Engine-Features enthält (früher »Pro-Features«).

Die Unity Professional Edition (kurz Unity Pro) müssen Sie lizensieren, wenn Ihr Jahresumsatz bzw. der Ihrer Firma einen bestimmten Betrag übersteigt (derzeit 100.000 US-Dollar). Diese Version bietet Zugriff auf zusätzliche Dienste, die eher für professionelle Anwender gedacht sind und beispielsweise mit der darin enthaltenen Team License einen besseren Workflow in Teams ermöglichen. Details dazu finden Sie auf der offiziellen Unity-Website.

1.6 Wer Unity verwendet: ein großes Spektrum

Unity wird sowohl von unabhängigen Spielentwicklern verwendet, die teilweise sogar als Einzelpersonen arbeiten, als auch von großen AAA-Spielentwicklungsstudios. Obwohl Unity vor allem zur Spielentwicklung konzipiert ist, gibt es auch ganz andere Anwendungen mit Unity, die mit Spielen gar nichts zu tun haben – beispielsweise Simulationen, Visualisierungen (zum Beispiel im Bereich Architektur), Kunstinstallationen oder auch verschiedenste Arten von Lernsoftware.

Link auf unity-buch.de

Auf der Website zum Buch finden Sie unter Unity – Showcase – Gallery den Link auf eine von Unity Technologies gut sortierte und immer aktuell gehaltene Übersicht von Spielen und Anwendungen, die mit Unity umgesetzt wurden. Sie können hier nach Plattformen auswählen, ob es sich um 2D- oder 3D-Spiele handeln soll sowie welchem Genre (bei Spielen) bzw. im Falle von sonstigen Anwendungen welcher Kategorie die gelisteten Programme angehören sollen. Zu jedem Projekt gibt es neben einem Screenshot eine Kurzinfo sowie Links auf Beschreibungen der Entwickler und Details zum Projekt selbst. In diesem Bereich finden Sie außerdem eine Fülle von Case Stories sowie einige Trailer. Schmökern Sie hier ruhig, und lassen Sie sich von der Vielfalt inspirieren!

2 Ein erstes einfaches 2D-Mini-Spiel

Es ist viel einfacher, ein Spiel zu spielen, als selbst ein Spiel zu entwickeln. Das mag offensichtlich klingen – und dennoch trifft man in den entsprechenden Entwicklerforen sehr häufig auf Menschen, die den Aufwand der Spielentwicklung völlig unterschätzen. Die Folge davon sind zahlreiche ehrgeizige Projekte, die voller Enthusiasmus auf den einschlägigen Foren angekündigt werden, aber nur selten bedeutend über die Konzeptionsphase herauskommen. Das ist dann natürlich für alle Beteiligten eine frustrierende Angelegenheit. Gehen Sie dort besser nicht hin, das ist wirklich keine schöne Gegend!

Erfüllender ist, sich zunächst kleine, einfache Projekte vorzunehmen, die man mit überschaubarem Aufwand zum Abschluss bringen kann. Auf diese Weise sammelt man nützliche Erfahrungen und kann sich stufenweise an größere Projekte herantasten – getragen vom Erfolgserlebnis des jeweils vorausgegangen abgeschlossenen Projektes.

Abb. 2.1 Das Mini-Spiel: 2D Snake

Noch einfacher ist es, sich zuerst bestehende Projekte anzuschauen, jeden Aspekt eines solchen Projektes zu hinterfragen, um ihn zu verstehen, und schließlich eigene Anpassungen vorzunehmen, um das so gewonnene Verständnis zu vertiefen. Im nächsten Schritt können Sie dann sogar versuchen, ein solches Projekt selbstständig nachzubauen. So schaffen wir auch einen fließenden Übergang vom Lernprozess zum kreativen Prozess.

Für unseren ersten Einstieg in Unity verwenden wir einen Videospielklassiker, der vor einiger Zeit eine Renaissance als einfaches Handyspiel erlebt hat: Snake. Bei diesem einfachen 2D-Spiel steuert der Spieler eine Schlange, die sich in vier Richtungen bewegen kann (oben, unten, rechts, links). Das Ziel des Spiels ist es, alle Äpfel in einem Level zu verspeisen – was dadurch erschwert wird, dass die Schlange mit jedem Apfel wächst und sich nicht selbst in den Schwanz beißen darf.

Snake ist ein Beispiel für eine Spielidee, die sich mit sehr geringem Aufwand gut umsetzen lässt und daher als erster Einstieg in die Spielentwicklung gut geeignet ist. Snake wird also unser erstes einfaches Mini-Spiel, das wir verwenden, um uns ein wenig mit Unity vertraut zu machen – gleich legen wir los!

Übung macht den Meister

Einige weitere Beispiele, die Sie später als Übung implementieren könnten, wären Pong, Breakout, Asteroids oder auch Pac Man – wobei Letzteres aufgrund der nicht trivialen Gegner-AI schon eher zu den fortgeschritteneren Einstiegsspielen zu zählen ist.

Link auf unity-buch.de

Auf unity-buch.de finden Sie über den Link Asset Store – Complete Projects/Tutorials eine Vielzahl weiterer Projekte, die Sie später verwenden können, um sich mit anderen Projekten vertraut zu machen. Eine Auswahl habe ich dort auch direkt verlinkt, unter anderem auch eine umfangreichere Version von Snake2D.

2.1 Die Unity-Game-Engine installieren

Für den Fall, dass Unity noch nicht auf Ihrem Mac oder Windows PC installiert ist, gehen wir im Folgenden kurz den Download und die Installation durch, bevor wir am Ende dieses Abschnitts das Beispielprojekt herunterladen und in Unity öffnen:

1. Rufen Sie in einem Webbrowser die Adresse unity3d.com auf.

2. Klicken Sie auf den Link Get Unity rechts oben auf der Seite.

3. Klicken Sie auf Free Download und auf der nächsten Seite auf Download Installer.

Abb. 2.2 Unity-Download

4. Speichern Sie die Installationsdatei, und führen Sie sie aus. Unity verwendet seit Version 5 einen Download-Assistenten, und Sie können die einzelnen Komponenten auswählen, die Sie herunterladen und installieren wollen. Nehmen Sie ruhig alles!

5. Nach erfolgreicher Installation finden Sie Unity wie üblich auf dem Mac unter Applications und unter Windows im Startmenü1. Beim ersten Aufruf müssen Sie Unity noch registrieren und dazu auch einen Entwickler-Account eröffnen. Diesen Entwickler-Account brauchen Sie auch, um beispielsweise das Unity-Forum zu benutzen. Es empfiehlt sich, die Internet-Aktivierung zu verwenden. Die manuelle Aktivierung ist vor allem für Computer gedacht, die nicht am Internet angeschlossen sind.

6. Nach dem Start von Unity sehen Sie zuerst den Startbildschirm von Unity (siehe Abb. 2.3). Hier sehen Sie eine Liste aller zuletzt geöffneten Projekte – einschließlich der Unity-Version, mit der sie zuletzt bearbeitet wurden, sofern sie sich von der aktuellen Unity-Version unterscheidet.2 Bei Ihnen dürfte dort – im Gegensatz zu Abb. 2.3 – nur das Projekt Standard Assets Example Project stehen. Das ist das Beispielprojekt von Unity, das Sie sich später, wenn Sie bereits etwas mit dem Editor und den Grundprinzipien der Spielentwicklung vertraut sind, auch mal ansehen sollten. Hier können Sie auch neue Projekte erstellen.

Abb. 2.3 Der Startbildschirm von Unity

7. Mit dem Button Open other können Sie auch ein beliebiges anderes Projekt aus dem Dateisystem öffnen, auch wenn es nicht in der Liste der letzten Projekte steht. Das brauchen wir jetzt gleich.

Nun können wir uns nämlich anhand unseres einfachen 2D-Snake-Projekts mit dem Unity Editor vertraut machen.

Download von unity-buch.de

Laden Sie dazu das Beispielprojekt Snake2D.zip von der Website zum Buch herunter (http://unity-buch.de).

Im Folgenden gehe ich davon aus, dass Sie das Projekt unter Windows im Pfad C:\UnityProjekte\Snake2D bzw. unter Mac OS X im Pfad <user>/UnityProjekte/Snake2D entpacken.

1. Klicken Sie im Startbildschirm von Unity auf den Button Open other. Sollte Unity bei Ihnen bereits mit einem Projekt laufen, kommen Sie auf den Startbildschirm zum Öffnen eines Projekts auch wieder über das Menü: Edit/Open Project.

2. Öffnen Sie C:\UnityProjekte\Snake2D (Windows) bzw. <user>/Unity-Projekte/Snake2D (Mac OS X). Beachten Sie, dass Sie einfach das Verzeichnis Snake2D selektieren und dann auf Open (bzw. unter Windows: Select Folder) klicken können. Da Unity keine klassische Projektdatei hat, sondern ein Projektverzeichnis, wählt man hier nicht wie sonst üblich eine Datei aus, sondern ein Verzeichnis.

Screencast auf unity-buch.de

Zu Download und Installation von Unity sowie zum Download, Entpacken und ersten Öffnen des Beispielprojekts gibt es einen Screencast mit dem Titel Die ersten Schritte auf der Website zum Buch. Diesen Screencast finden Sie unter Screencasts im Bereich 2.1, Die Unity-Game-Engine installieren.

Feiern Sie diesen Moment: Soeben haben wir das Fahrzeug betreten, mit dem wir uns auf die Reise in die Spielentwicklung begeben. Bevor wir gleich losfahren, sehen wir es uns erst mal ganz genau an.

2.2 Erste Schritte mit Unity gehen: der Editor

Der Unity Editor besteht aus mehreren sogenannten Views3, die wir beliebig ein- und ausblenden und innerhalb oder außerhalb des Unity-Fensters anordnen können. Abb. 2.4 zeigt die Standardansicht beim ersten Öffnen von Unity.

Abb. 2.4 Der Unity Editor

2.2.1 Unser gesamtes Projekt: Project Browser

Der Project Browser gibt – wie der Name schon sagt – einen Überblick über das gesamte Projekt. Hier werden alle Assets aufgelistet, die im aktuellen Projekt verwendet werden können. Die hier dargestellte Dateistruktur entspricht dem Inhalt des Ordners Assets im Projektordner. Es gibt dazu passend auch eine nützliche Funktion im Kontextmenü (Rechtsklick auf beliebiges Objekt im Project Browser): Reveal in Finder (Mac) bzw. Reveal inExplorer (Windows). Damit wird die Datei direkt im Finder bzw. Explorer angesprungen. Änderungen an den Dateien (Umbenennen, Verschieben) sollten dennoch niemals auf der Betriebssystemebene (also im Finder bzw. Explorer) durchgeführt werden, sondern ausschließlich über den Project Browser im Unity Editor. Andernfalls gehen die projektinternen Verknüpfungen und Metadaten verloren. Durch einen Doppelklick können alle Assets in der Anwendung geöffnet und bearbeitet werden, in der sie erstellt wurden (sofern diese installiert ist). Änderungen werden nach dem Speichern in der externen Anwendung direkt in Unity übernommen.

Abb. 2.5 Der Project Browser im Two Column Layout

Der Project Browser bietet umfangreiche Suchmöglichkeiten. Sie sind so umfangreich, dass der Suche – die auch in einigen anderen Views funktioniert – ein eigener Abschnitt gewidmet ist (Abschnitt 2.2.8, In Project, Hierarchy und Scene View suchen).

In Abb. 2.5 sind noch drei kleine, aber feine Elemente des Project Browser grün hinterlegt, um Sie darauf aufmerksam zu machen:

Rechts unten finden Sie einen Slider, mit dem Sie die Größe der Vorschau der Assets im aktuell ausgewählten Verzeichnis einstellen können. Wenn Sie den Slider ganz nach links ziehen, verwandelt sich die Ansicht in eine kompakte Liste.

Rechts oben finden Sie ein kleines, geöffnetes Schloss (Schloss-Icon). Wenn Sie dieses Schloss anklicken, und den Project Browser damit »sperren« (lock), reagiert er nicht mehr auf Ereignisse in den anderen Views, die normalerweise dazu führen, dass ein bestimmtes Asset im Project Browser ausgewählt wird und damit z. B. auch die vorher getätigte Verzeichnisauswahl verloren ist. So können Sie sogar mehrere Project Browser gleichzeitig mit verschiedenen Kontexten anlegen, was manchmal sehr praktisch ist.

Rechts neben dem Schloss finden Sie ein kleines in Worten kaum zu beschreibendes Icon, das ich im Folgenden mit Kontextmenü-Icon bezeichnen werde, weil es ein Kontextmenü öffnet. Dort können Sie die aktuelle Ansicht schließen, neue Ansichten öffnen und auch die aktuelle Ansicht auf das gesamte Unity-Fenster vergrößern (Maximize). In diesem Kontextmenü verbirgt sich beim Project Browser noch ein kleines Juwel aus der langjährigen Geschichte von Unity: One Column Layout.

Das One Column Layout des Project Browser

Diese alternative Darstellungsmöglichkeit des Project Browser war früher die eine Project View, die es in Unity gab (damals hieß das noch View, nicht Browser). Sie ist aber als Möglichkeit nicht nur für nostalgische Unity-User erhalten geblieben, sondern bietet auch eine sehr kompakte Ansicht, die es insbesondere ermöglicht, den Inhalt mehrerer Verzeichnisse gleichzeitig darzustellen. Damit können Sie bis zu einer gewissen Projektgröße sogar alle Dateien des Projektes gleichzeitig in einer der Hierarchy View ähnlichen Übersicht sehen. Während das Two Column Layout sich eher für breite Bereiche im Editor eignet, können Sie einen Project Browser mit One Column Layout auch gut in einem schmalen Streifen seitlich anbringen.

Ein besonderes Asset: Szenen

Neben in Ordnern strukturierten 3D-Modellen, Texturen, Audiodateien, Materialien, Scripts und sogenannten Prefabs4 werden hier auch die Szenen des Projekts angezeigt.

Szenen sind ein zentrales Element in Unity. Man kann sie als einzelne Levels verstehen, und üblicherweise werden Levels tatsächlich als Szenen implementiert. Aber es könnte durchaus auch ein Level aus mehreren Szenen bestehen, ebenso wie eine Szene mehrere Levels beinhalten kann. In jedem Fall ist eine Szene in Unity eine Menge von Objekten, die im Editor in ihrer Gesamtheit geladen, bearbeitet und gespeichert werden können.5

Abb. 2.6 Der Project Browser im One Column Layout

Stellen Sie sicher, dass der Ordner Levels selektiert ist6, und klicken Sie doppelt auf die Szene Level-01, um sie zu öffnen. Falls es Ihnen jetzt in den Fingern juckt und Sie den Play-Button drücken und ein paar Runden spielen wollen: Go for it! Wir sind ja hier nicht in einer Schule von gestern!7Kommen Sie dann aber bitte irgendwann wieder – unsere Reise mit Unity hat ja gerade erst begonnen.

Wir sehen nun den Inhalt der Szene in zwei weiteren wesentlichen Views: in der Scene View sowie in der Hierarchy View. Diese beiden Views stellen die gleichen Daten dar – jedoch auf ganz unterschiedliche Arten.

2.2.2 Die Hierarchie einer Szene: Hierarchy

Die Hierarchy dient dazu, die hierarchische Struktur der Szene zu bearbeiten bzw. über die hierarchische Struktur der Szene zu navigieren und Objekte zu selektieren. Durch Klick auf die Pfeile nach rechts können die Kinder von Objekten angezeigt werden. Wenn man hier in einer tiefen Struktur arbeitet, ist 8 zum Öffnen bzw. Schließen von Teilbäumen ein nützlicher Trick: Damit werden automatisch auch alle offenen Unterbäume geöffnet bzw. geschlossen. So muss man nicht jeden Unterbaum einzeln anklicken.

In Abb. 2.7 sehen Sie die Szenenhierarchie der Szene Level-01, wobei bei Snake und Background die Kinder sichtbar sind, bei SnakeHead, Ground, Trees und Clouds jedoch nicht. Die in der Farbe Blau dargestellten Objekte sind Prefabs oder 3D-Modelle aus dem Projekt. Was man hier nicht sieht, sind rot dargestellte Objekte: Diese Farbe verwendet Unity, wenn bei Prefabs oder 3D-Modellen, die ja direkt aus dem Projekt kommen, die ursprüngliche Datei aus dem Projekt nicht mehr vorhanden ist.

Abb. 2.7 Hierarchy

Die Hierarchie ändern: Parenting

Neben dem Umbenennen der Objekte mit (Mac) bzw. (Windows) oder durch einen Klick auf ein bereits selektiertes Objekt können wir in der Hierarchy durch Drag & Drop Objekte zu Kindern von anderen Objekten machen sowie die Reihenfolge der Objekte ändern. Ziehen Sie beispielsweise Apples auf Background. Diese Aktion, bei der wir ein Objekt einem anderen als Kind hinzufügen, bezeichnen wir auch als Parenting.

Kindobjekte werden automatisch mit ihren Elternobjekten bewegt: Würde man beispielsweise jetzt Background in der Scene View anders im Raum platzieren, so würden Ground, Trees, Clouds und Apples ebenfalls verschoben, rotiert oder skaliert.

Die hierarchische Gliederung der Objekte in der Szene9 ist in Unity von sehr großer Bedeutung, und wir werden sie auch für Tricks verwenden, beispielsweise um Objekte elegant zu positionieren. Bei solchen Tricks ändern wir die Hierarchie nur vorübergehend zum Editieren der Szene. Ebenso sollten Sie jetzt übrigens auch Apples wieder auf die Wurzel-Ebene ziehen, falls Sie den Ursprungszustand der Szene nicht sowieso schon wieder hergestellt haben.

Die Reihenfolge der Objekte in der Hierarchy hat auf das eigentliche Spiel derzeit nur im Bereich Unity UI einen Einfluss, also dem in Unity 4.6 neu eingeführten System zur Erstellung von grafischen Benutzerschnittstellen (GUI-System). Früher war Unity UI auch unter dem Namen uGUI bekannt, und dieser Name hat sich in vielen Foren eingebürgert – aber das war an sich nur ein Projektname, der seit Unity 4.6 zumindest offiziell nicht mehr verwendet wird.

Dort werden auf jeden Fall Objekte, die in der Hierarchie weiter unten stehen, vor Objekten gezeichnet, die in der Hierarchie weiter oben angesiedelt sind. Dies mag Photoshop-Usern (und Benutzern vergleichbarer Programme) zunächst ungewohnt erscheinen. Es macht aber Sinn, weil auf diese Weise einfach die komplett aufgeklappte Baumstruktur von oben nach unten gezählt werden kann. Es spielt also keine Rolle, ob ein Objekt ein Kind von einem anderen Objekt ist oder einfach auf gleicher Hierarchiestufe in der Liste darunter steht.

Pro-Tipp

Die Reihenfolge der Sortierung in der Hierarchy lässt sich auch umstellen: In den Preferences10 gibt es unter General eine Option Enable Alphanumeric Sorting. Ist diese aktiv, so erscheint das in Abb. 2.8 grün markierte Icon, über das Sie jetzt auch Sortierung nach Alphabet auswählen können (Alpha-beticalSort). Sie können gleichzeitig mehrere Hierarchy-Ansichten mit verschiedenen Sortierreihenfolgen offen haben.

Abb. 2.8 Verschiedene Sortierreihenfolgen in der Hierarchy

Link auf unity-buch.de

Es ist sogar möglich, eigene Sortierreihenfolgen zu programmieren: Implementieren Sie dazu einfach eine eigene Klasse, die von BaseHierarchy-Sort aus der Unity-Editor-API erbt, und legen Sie die Scriptdatei im speziellen Projektverzeichnis Editor ab. (Dieses Verzeichnis müssen Sie zu diesem Zweck natürlich eigens im Projekt anlegen.) Einen Link auf die Dokumentation dieser Klasse mit Beispielen finden Sie auf unity-buch.de.

Die einfache Erweiterbarkeit verschiedenster Bereiche des Unity Editors ist ein äußerst nützliches Feature, auf das ich im Rahmen dieses Buches leider nur gelegentlich hinweisen kann. Aber nehmen Sie sich spätestens nach der Lektüre dieses Buches ruhig einmal Zeit, um dieses Thema eigenständig zu vertiefen. Editor Scripting kann Ihnen bei der Spielentwicklung nämlich enorm viel Zeit und Mühe sparen, indem Sie Ihr Fahrzeug für das jeweilige Territorium tunen, in dem Sie gerade unterwegs sind. Einen Einstieg finden Sie über den Link Extending the Editor.

Screencast auf unity-buch.de

Auf der Website zum Buch finden Sie unter dem Namen Unity Basics: Die Hierarchy View verwenden ein ausführliches Video zur Hierarchy View. In diesem Screencast gehe ich auch anschaulich auf den Effekt der Sortierreihenfolge der Hierarchy für Unity UI, das neue GUI-System in Unity, ein.

2.2.3 Objekte der Szene im Raum: Scene View

Im Gegensatz zur Hierarchy dient die Scene View dazu, die in der Szene enthaltenen Objekte im dreidimensionalen Raum anzuordnen. Seit Unity 4.3 ist dieser Satz nicht mehr ganz korrekt: Jetzt dient die Scene View auch zum Anordnen von Objekten auf einer zweidimensionalen Fläche. Seit Unity 4.6 ist auch das nicht mehr ganz korrekt: Jetzt dient die Scene View auch zum Design von Benutzerschnittstellen mit Unity UI. Es gibt aber eine absolute, unumstößliche und immerwährende Wahrheit: Die Scene View ist für die Spielentwicklung mit Unity äußerst wichtig!

Ein wesentlicher Teil des Level-Designs wird über diese Ansicht erledigt: Wir positionieren hier den Spieler, eine oder mehrere Kameras sowie die Umgebung.

2D- vs. 3D-Modus in der Scene View

Während in Project Browser, Hierarchy und vielen anderen Bereichen kaum ein Unterschied zwischen der Entwicklung eines 2D- oder 3D-Spiels in Unity erkennbar ist, unterscheidet die Scene View naturgemäß zwischen 2D- und 3D-Modus.

Sie können direkt beim Erstellen eines neuen Projekts oder auch nachträglich in den Editor Project Settings (Menü Edit/Project Settings/Editor) im Bereich Default Behavior Mode einstellen, ob Ihr Projekt Voreinstellungen für 2D- oder 3D-Spiele nutzen soll. Dies hat vor allem einen Einfluss auf den Standardmodus für die Scene View und das Importverhalten bei Texturen. Da wir hier gerade ein 2D-Spiel bearbeiten, beschäftigen wir uns zuerst kurz mit dem 2D-Modus.

Im 2D-Modus in der Scene View navigieren

Der 2D-Modus der Scene View wird durch den kleinen, in Abb. 2.9 grün markierten Button mit der Aufschrift 2D aktiviert.

Die Navigation im 2D-Modus ist schnell erklärt: Mit gedrückter rechter oder mittlerer Maustaste ( bzw. ) können Sie die Ansicht nach links, rechts, oben und unten verschieben, mit dem Scrollrad in die Ansicht hinein- und hinauszoomen. Falls Sie eine Maus ohne rechte Maustaste oder Scrollwheel haben: Kaufen Sie sich eine – sonst ärgern Sie sich bei der Spielentwicklung nur!

Abb. 2.9 Scene View im 2D-Modus

Bis dahin können Sie sich auch mit oder den Cursortasten () zum Verschieben und (am Mac sieht das eher so aus: ) zum Zoomen behelfen. Mit der -Taste können Sie alle Bewegungen beschleunigen (was bei mir mit dem Scrollrad nicht funktioniert – das wäre dann also Maus- und Tastaturakrobatik mit ).

Selektierte Objekte in der Scene View fokussieren

Schließlich können wir mit der Taste (oder dem Menü Edit/Frame Selected) ein Objekt fokussieren, also mit passender Größe in die Mitte der Scene View holen. Mit (oder 11 oder Edit/Lock View to Selected) können wir einen Modus aktivieren, in dem Unity die Scene View jederzeit automatisch so verschiebt, dass das Objekt nach dem Verschieben immer wieder in der Mitte ist. Dieser Lock View Modus wird durch einfaches Drücken der Taste wieder beendet.

Objekte im 2D-Modus bearbeiten: Rect Tool

Sie können 2D-Objekte (Sprites und alle Unity-UI-Elemente12) in Unity mit den gleichen Werkzeugen bearbeiten wie 3D-Objekte. Die Werkzeuge für 3D-Objekte werden im nächsten Abschnitt vorgestellt. Besonders gut geeignet zur Bearbeitung von 2D-Objekten in der Scene View ist aber das Rect Tool. Sie können das Rect Tool mit der Taste aktivieren oder durch Klick auf den in Abb. 2.10 grün markierten Button in der Werkzeugleiste. Damit können Sie Sprites und Elemente von Unity UI sehr einfach verschieben, skalieren und rotieren, ohne dazu das Werkzeug wechseln zu müssen. Und das funktioniert sogar mit 3D-Objekten. Das erste Werkzeug für 3D-Objekte haben Sie also gerade schon kennengelernt.

Abb. 2.10 Das Rect Tool in der Scene View

Je nach Position des Mauszeigers relativ zum Rahmen bzw. den Handles des Objekts ändert sich der Mauszeiger, und damit welche Art von Transformationen wir durch Klicken und Ziehen mit der linken Maustaste am Objekt durchführen.

Wenn Sie zusätzlich zum Klicken und Ziehen die -Taste gedrückt halten, schränkt Unity hier den Bewegungsgrad je nach Transformation ein:

beim Verschieben auf die X- bzw. Y-Achse ( erst drücken, wenn Sie mit dem Verschieben angefangen haben)

beim Skalieren so, dass die Seitenverhältnisse beibehalten werden (erst drücken, wenn Sie mit dem Skalieren angefangen haben)

beim Rotieren auf 15°-Schritte, entweder um den im Sprite Editor eingestellten Pivot-Punkt des zuletzt selektierten Objektes oder um die Mitte des Objekts bzw. aller aktuell selektierten Objekte (je nach der Einstellung Pivot oder Center in den Gizmo Display Toggles, siehe auch Abb. 2.11 und Abb. 2.12). Hier müssen Sie drücken, bevor Sie mit dem Rotieren beginnen!

Abb. 2.11 Gizmo Display Toggle mit Pivot und Local

Abb. 2.12 Gizmo Display Toggle mit Center und Global

Beim Skalieren, das normalerweise den jeweils gegenüberliegenden Punkt bzw. die gegenüberliegende Seite fix hält und von dort aus skaliert, gibt es außerdem die Möglichkeit, mit der Taste den Pivot-Punkt als Zentrum der Skalierung zu verwenden.

Durch Gedrückthalten der Taste wird das Vertex Snapping aktiviert (was hier vielleicht eher Pivot-Point Snapping heißen müsste). Falls Sie es umständlich finden, dauerhaft V gedrückt halten zu müssen, können Sie auch mit den Vertex Snapping Modus aktivieren und ihn, wenn Sie fertig sind, mit wieder deaktivieren. Damit stellt Unity sicher, dass der Pivot-Punkt oder das Zentrum des Sprites exakt auf einem der Eckpunkte eines anderen Sprites liegt. Dabei wählen wir zuerst – noch ohne die Maustaste zu drücken – den Punkt, an dem wir das Objekt greifen wollen, und ziehen diesen dann mit gedrückter Maustaste auf einen Punkt in einem anderen Objekt, an dem wir unser bearbeitetes Objekt ausrichten wollen.

Screencast auf unity-buch.de

Am besten machen Sie sich mit diesem Werkzeug direkt in Unity vertraut – Probieren geht hier im wahrsten Sinne des Wortes über Studieren. Sie finden aber auf unity-buch.de auch den Screencast Das Rect Tool für 2D, Unity UI und 3D verwenden, in dem die verschiedenen Möglichkeiten zur Nutzung des Rect Tool vorgestellt werden.

Die Scene View im 3D-Modus benutzen

Grundsätzlich ist natürlich das Arbeiten im dreidimensionalen Raum an einem zweidimensionalen Monitor eine größere Herausforderung für unser räumliches Vorstellungsvermögen als der 2D-Modus. Das ist aber letztlich auch einfach nur Übungssache. Wer schon einmal mit einer 3D-Modelling-Anwendung gearbeitet hat, dürfte sich auch in Unity recht zügig zurechtfinden. Für alle anderen kommt jetzt der erste Schritt aus der flachen Ebene in den Raum – eine sehr besondere Station auf unserer Reise.

Zunächst brauchen wir natürlich Möglichkeiten, um im dreidimensionalen Raum zu navigieren und die Perspektive zu wechseln. Dazu gibt es in Unity verschiedene Vorgehensweisen, die je nach Situation eingesetzt werden können. Dabei muss selbstverständlich der 2D-Modus der Scene View ausgeschaltet sein, und am besten probieren Sie das mit einer echten 3D-Szene13 aus:

Abb. 2.13 Scene View im 3D-Modus – Vorschau auf unser 3D-Projekt

In der Scene View im dreidimensionalen Raum navigieren

Unity bietet uns einige Möglichkeiten, um möglichst komfortabel über die Scene View im virtuellen, dreidimensionalen Raum unseres Spiels zu navigieren:

Rotieren um das aktuelle Zentrum: Durch +Ziehen können wir die Kamera um das aktuelle Zentrum herum rotieren. Diesen Modus erkennen Sie daran, dass der Mauscursor zu einem Auge wird, sobald Sie drücken. Die Verwendung dieser Art der Navigation lernt man am besten durch Ausprobieren. Generell besteht die beste Vorgehensweise darin, die jeweilige Taste auf der Tastatur zu drücken und zu halten, dann zusätzlich die Maustaste zu drücken und dann mit dem Ziehen zu beginnen. Wenn man mit dem Ziehen fertig ist, lässt man zuerst die Maustaste los und dann die Taste auf der Tastatur.

Bewegen der Kamera: Je nachdem, wie viele Tasten Ihre Maus hat, gibt es hier verschiedene Möglichkeiten: Mit einer 3-Tasten-Maus (üblicherweise ist auch das Mausrad als Taste ausgelegt) ist es einfach +Ziehen. Falls man keine dritte Maustaste hat, behilft man sich mit einer alternativen Tastenkombination: +Ziehen bzw.+Ziehen.14 In diesem Modus wird der Mauscursor zu einer Hand. Bei gedrückter -Taste wird die Bewegung beschleunigt, sodass man auch weitere Strecken sehr schnell zurücklegen kann.

Zoomen: Das Ein- und Herauszoomen funktioniert durch Betätigen des Mausrades (sofern vorhanden) sowie alternativ mit +Ziehen. Am Mac ist hier zu beachten, dass bei Mäusen mit nur einer Taste die Standardkombination zur Simulation der rechten Maustaste zum Einsatz kommt: , d. h., das Zoomen funktioniert auf dem Mac mit Eintasten-Mäusen über die Kombination +Ziehen. Aktiviert man diesen Modus über eine Tastenkombination, wird der Mauscursor zu einer Lupe. Auch das Zoomen kann durch Drücken der -Taste beschleunigt werden.

Navigation mit den Cursortasten: Ähnlich wie in manchen älteren Spielen kann man sich mit den Cursortasten () vor und zurück sowie nach rechts und links bewegen. Zusätzliches Drücken der -Taste beschleunigt auch hier.

Flugmodus (First Person Control): Unity unterstützt auch eine Navigation über eine Kombination aus Tastatur und Maus, wie sie in vielen modernen Spielen mit Egoperspektive üblich ist. Dieser Modus wird durch Drücken und Halten der rechten Maustaste () aktiviert. Wir können nun die Tasten , , und in der üblichen Weise verwenden, um uns vorwärts, rückwärts bzw. nach rechts oder links zu bewegen. Zusätzlich können wir mit den Tasten und aufsteigen bzw. sinken. Bewegungen mit der Maus ändern in diesem Modus einfach die Blickrichtung. Diesen Modus erkennen Sie daran, dass der Mauscursor zu einem Auge mit drei Tasten wird, sobald Sie in der Scene View die rechte Maustaste drücken. Schließlich können wir auch hier durch Drücken der -Taste die Bewegung beschleunigen. Das geht tatsächlich fast immer, außer wenn es nicht geht, nämlich beim Rotieren um das Zentrum, was man sich leicht merken kann, weil es logisch ist: Nach 360° sind wir bei jeder Rotation wieder am Ursprung – dort gibt es also keine weiten Strecken zurückzulegen. Die Beschleunigung über die -Taste wäre also unnütz.

Objekt in den Fokus nehmen: Durch Drücken der -Taste wird das aktuell selektierte Objekt wie im 2D-Modus fokussiert, also ins Zentrum der Scene View genommen. Auch im 3D-Modus funktioniert Lock View ().

Pro-Tipp

Eine etwas trickreiche Sache mit der Tastenkombination für Frame Selected (speziell wenn man auch in Hierarchy und Inspector arbeitet) ist, dass die Taste nur funktioniert, wenn die Scene View auch aktiv ist. Meistens funktioniert das einfach, indem man mit dem Mauszeiger darüber fährt. Aber nicht immer: Wahrscheinlich hat jeder mittelmäßig erfahrene Unity-User mindestens einmal den Buchstaben F in irgendeinem gar nicht dafür vorgesehenen Feld im Inspector eingetragen. Merken Sie sich daher, dass wir den gleichen Effekt auch durch Doppelklick auf ein Objekt in der Hierarchy erzielen. Wenn man dann Lock View aktivieren möchte, kann man das immer noch im nächsten Schritt tun.

Mit dem 3D-Kreuz (Scene Gizmo) arbeiten

Ein weiteres, sehr nützliches Hilfsmittel – sowohl zur Orientierung als auch zum schnellen Ändern der Perspektive – ist das 3D-Kreuz, das es logischerweise auch nur im 3D-Modus der Scene View gibt. Im Englischen heißt es schlicht Scene Gizmo, was übersetzt ungefähr Szenen-Ding entspräche. Wir bleiben etwas trockener und sprechen im Weiteren vom 3D-Kreuz.

Abb. 2.14 Das 3D-Kreuz

Anhand von Abb. 2.14 erkennen Sie, dass Unity ein Koordinatensystem verwendet, bei dem die X-Achse nach rechts zeigt, die Y-Achse nach oben und die Z-Achse nach hinten. Diese Wahl hat sich für Unity spätestens seit Einführung der 2D-Features bewährt, weil dieses Achsensystem auch den 2D-Bildschirmkoordinaten direkt entspricht. Es gibt auch Anwendungen (und mathematische Theorien), bei denen X- und Y-Achse in der Ebene liegen, und die Z-Achse nach oben zeigt. Falls Sie so eine Art von Koordinatensystem gewohnt sind, müssen Sie sich für Unity umgewöhnen.

Außerdem hat man mit dem 3D-Kreuz jederzeit eine Erinnerung, welche Farben für welche Achsen stehen: X ist rot, Y ist grün und Z ist blau.

Auch mit diesem vielseitig einsetzbaren Werkzeug machen wir uns am besten durch Experimentieren und Spielen vertraut. Zunächst können wir mit den oben beschriebenen Mitteln die Perspektive der Scene View ändern und uns dabei jetzt über das 3D-Kreuz orientieren, da es seine Rotation automatisch anpasst.

Wenn wir mit dem Mauszeiger über die verschiedenen Achsen bzw. den Würfel in der Mitte fahren, wird jeweils das Element gelb markiert, das auf einen Mausklick reagieren würde. Mit einem solchen Mausklick () auf eine der Achsen können wir jederzeit einfach und präzise in Draufsicht, Seitenansicht oder Vorderansicht wechseln (jeweils aus beiden Richtungen).

Mit einem Klick auf den Würfel in der Mitte oder auf den Text Persp (bzw. Iso) können wir einfach zwischen