Seifert / Wislaug | Spiele entwickeln mit Unity 5 | E-Book | sack.de
E-Book

E-Book, Deutsch, 670 Seiten

Seifert / Wislaug Spiele entwickeln mit Unity 5

2D- und 3D-Games mit Unity und C# für Desktop, Web & Mobile. Für Unity 5.6
3. aktualisierte und erweiterte Auflage 2017
ISBN: 978-3-446-45368-5
Verlag: Carl Hanser
Format: PDF
Kopierschutz: 1 - PDF Watermark

2D- und 3D-Games mit Unity und C# für Desktop, Web & Mobile. Für Unity 5.6

E-Book, Deutsch, 670 Seiten

ISBN: 978-3-446-45368-5
Verlag: Carl Hanser
Format: PDF
Kopierschutz: 1 - PDF Watermark



- Der Bestseller zur Spieleentwicklung mit Unity in der dritten, aktualisierten Auflage
- Für alle, die ihr eigenes Spiel entwickeln wollen; Vorkenntnisse sind nicht erforderlich
Begeben Sie sich mit Carsten Seifert - alias Hummelwalker auf YouTube - und Jan Wislaug - Video-Trainer für Unity - in die Welt von Unity 5. Erfahren Sie hier, wie Sie Ihre Ideen umsetzen und eigene Spiele entwickeln können. Nach einer Einführung in C# und die Skript-Programmierung lernen Sie, wie die wichtigsten Werkzeuge und Systeme in Unity funktionieren, zusammenarbeiten und wie Sie diese kombinieren können. Darauf aufbauend entwickeln Sie zwei komplette Spiele - ein 2D- und ein 3D-Game.
Die dritte Auflage wurde komplett auf Unity 5.6 aktualisiert und geht u. a. auf die neue Plattform WebGL ein, beschreibt das überarbeitete Licht-System und zeigt die neuen Möglichkeiten beim Partikelsystem. Die Spiele sowie Video-Tutorials stehen als Online-Download zur Verfügung.
Aus dem Inhalt
Installation & Oberfläche von Unity 5.6 // Einführung in C# // Skript-Programmierung // Objekte in der 2. und 3. Dimension // Physically Based Shading // Kameras: die Augen des Spielers // Unitys aufgebohrtes Lichtsystem // Physik-Engine // User-Interaktion auf PC und mobilen Geräten // Audiosysteme und Abmischung // Partikeleffekte mit Shuriken // Landschaften gestalten // Wind Zones // GUI-Systeme // Prefabs // Internet & Datenbanken // Animationen // Künstliche Intelligenz // Fehlersuche & Performance // Spiele für verschiedene Plattformen vorbereiten // Beispiel 1: 2D-Touch-Game // Beispiel 2: 3D-Adventure// Produktionsprozesse in der Spieleentwicklung
Online finden Sie
•die Games aus dem Buch mit allen Ressourcen
•Videotutorials zur Vertiefung
•weitere Beispiele, Zusatzmaterialien
Seifert / Wislaug Spiele entwickeln mit Unity 5 jetzt bestellen!

Weitere Infos & Material


1;Inhalt;5
2;Vorwort;20
3;1 Einleitung;22
3.1;1.1 Multiplattform-Publishing;22
3.2;1.2 Das kann Unity (nicht);23
3.3;1.3 Lizenzmodelle;23
3.4;1.4 Aufbau und Ziel des Buches;24
3.5;1.5 Weiterentwicklung von Unity;25
3.6;1.6 Online-Zusatzmaterial;26
4;2 Grundlagen;28
4.1;2.1 Installation;28
4.2;2.2 Oberfläche;28
4.2.1;2.2.1 Hauptmenü;30
4.2.2;2.2.2 Scene View;31
4.2.3;2.2.3 Game View;33
4.2.4;2.2.4 Toolbar;35
4.2.5;2.2.5 Hierarchy;37
4.2.6;2.2.6 Inspector;38
4.2.7;2.2.7 Project Browser;42
4.2.8;2.2.8 Console;44
4.3;2.3 Das Unity-Projekt;44
4.3.1;2.3.1 Neues Projekt anlegen;45
4.3.2;2.3.2 Bestehendes Projekt öffnen;46
4.3.3;2.3.3 Projektdateien;47
4.3.4;2.3.4 Szene;47
4.3.5;2.3.5 Game Objects;48
4.3.6;2.3.6 Tags;50
4.3.7;2.3.7 Layer;51
4.3.8;2.3.8 Assets;52
4.3.9;2.3.9 Frames;55
4.4;2.4 Das erste Übungsprojekt;55
5;3 C# und Unity;58
5.1;3.1 Die Sprache C#;58
5.2;3.2 Syntax;59
5.3;3.3 Kommentare;60
5.4;3.4 Variablen;60
5.4.1;3.4.1 Namenskonventionen;60
5.4.2;3.4.2 Datentypen;61
5.4.3;3.4.3 Schlüsselwort var;62
5.4.4;3.4.4 Datenfelder/Array;62
5.5;3.5 Konstanten;64
5.5.1;3.5.1 Enumeration;64
5.6;3.6 Typkonvertierung;65
5.7;3.7 Rechnen;65
5.8;3.8 Verzweigungen;66
5.8.1;3.8.1 if-Anweisungen;67
5.8.2;3.8.2 switch-Anweisung;69
5.9;3.9 Schleifen;70
5.9.1;3.9.1 for-Schleife;70
5.9.2;3.9.2 Foreach-Schleife;71
5.9.3;3.9.3 while-Schleife;71
5.9.4;3.9.4 do-Schleife;72
5.10;3.10 Klassen;72
5.10.1;3.10.1 Komponenten per Code zuweisen;73
5.10.2;3.10.2 Instanziierung von Nichtkomponenten;73
5.10.3;3.10.3 Werttypen und Referenztypen;75
5.10.4;3.10.4 Überladene Methoden;76
5.11;3.11 Der Konstruktor;76
5.11.1;3.11.1 Konstruktoren in Unity;77
5.12;3.12 Lokale und globale Variablen;77
5.12.1;3.12.1 Namensverwechslung verhindern mit this;77
5.13;3.13 Zugriff und Sichtbarkeit;78
5.14;3.14 Statische Klassen und Klassenmember;78
5.15;3.15 Parametermodifizierer out/ref;79
5.16;3.16 Array-Übergabe mit params;80
5.17;3.17 Eigenschaften und Eigenschaftsmethoden;81
5.18;3.18 Vererbung;82
5.18.1;3.18.1 Basisklasse und abgeleitete Klassen;83
5.18.2;3.18.2 Vererbung und die Sichtbarkeit;83
5.18.3;3.18.3 Geerbte Methode überschreiben;84
5.18.4;3.18.4 Zugriff auf die Basisklasse;84
5.18.5;3.18.5 Klassen versiegeln;85
5.19;3.19 Polymorphie;85
5.20;3.20 Schnittstellen;86
5.20.1;3.20.1 Schnittstelle definieren;86
5.20.2;3.20.2 Schnittstellen implementieren;86
5.20.3;3.20.3 Zugriff über eine Schnittstelle;87
5.21;3.21 Namespaces;88
5.21.1;3.21.1 Eigene Namespaces definieren;89
5.22;3.22 Generische Klassen und Methoden;90
5.22.1;3.22.1 List;90
5.22.2;3.22.2 Dictionary;91
6;4 Skript-Programmierung;94
6.1;4.1 MonoDevelop;94
6.1.1;4.1.1 Hilfe in MonoDevelop;95
6.1.2;4.1.2 Syntaxfehler;95
6.2;4.2 Nutzbare Programmiersprachen;96
6.2.1;4.2.1 Warum C#?;97
6.3;4.3 Unitys Vererbungsstruktur;97
6.3.1;4.3.1 Object;98
6.3.2;4.3.2 GameObject;98
6.3.3;4.3.3 ScriptableObject;98
6.3.4;4.3.4 Component;98
6.3.5;4.3.5 Transform;99
6.3.6;4.3.6 Behaviour;99
6.3.7;4.3.7 MonoBehaviour;99
6.4;4.4 Skripte erstellen;99
6.4.1;4.4.1 Skripte umbenennen;100
6.5;4.5 Das Skript-Grundgerüst;101
6.6;4.6 Unitys Event-Methoden;101
6.6.1;4.6.1 Update;102
6.6.2;4.6.2 FixedUpdate;102
6.6.3;4.6.3 Awake;103
6.6.4;4.6.4 Start;103
6.6.5;4.6.5 OnGUI;103
6.6.6;4.6.6 LateUpdate;104
6.6.7;4.6.7 Aufruf-Reihenfolge;104
6.7;4.7 Komponentenprogrammierung;105
6.7.1;4.7.1 Auf GameObjects zugreifen;105
6.7.2;4.7.2 GameObjects aktivieren und deaktivieren;107
6.7.3;4.7.3 GameObjects zerstören;107
6.7.4;4.7.4 GameObjects erstellen;107
6.7.5;4.7.5 Auf Components zugreifen;108
6.7.6;4.7.6 Components hinzufügen;110
6.7.7;4.7.7 Components entfernen;110
6.7.8;4.7.8 Components aktivieren und deaktivieren;110
6.7.9;4.7.9 Attribute;111
6.8;4.8 Zufallswerte;112
6.9;4.9 Parallel Code ausführen;113
6.9.1;4.9.1 WaitForSeconds;114
6.10;4.10 Verzögerte und wiederholende Funktionsaufrufe mit Invoke;115
6.10.1;4.10.1 Invoke;115
6.10.2;4.10.2 InvokeRepeating, IsInvoking und CancelInvoke;115
6.11;4.11 Daten speichern und laden;116
6.11.1;4.11.1 PlayerPrefs-Voreinstellungen;116
6.11.2;4.11.2 Daten speichern;117
6.11.3;4.11.3 Daten laden;118
6.11.4;4.11.4 Key überprüfen;118
6.11.5;4.11.5 Löschen;118
6.11.6;4.11.6 Save;118
6.12;4.12 Szeneübergreifende Daten;119
6.12.1;4.12.1 Werteübergabe mit PlayerPrefs;119
6.12.2;4.12.2 Zerstörung unterbinden;121
6.13;4.13 Debug-Klasse;123
6.14;4.14 Kompilierungsreihenfolge;123
6.14.1;4.14.1 Programmsprachen mischen und der sprachübergreifende Zugriff;124
6.15;4.15 Ausführungsreihenfolge;124
6.16;4.16 Plattformabhängig Code kompilieren;125
6.17;4.17 Eigene Assets mit ScriptableObject;126
6.17.1;4.17.1 Neue ScriptableObject-Subklasse erstellen;126
6.17.2;4.17.2 Instanzen eines ScriptableObjects erstellen;127
7;5 Objekte in der zweiten und dritten Dimension;130
7.1;5.1 Das 3D-Koordinatensystem;130
7.2;5.2 Vektoren;131
7.2.1;5.2.1 Ort, Winkel und Länge;132
7.2.2;5.2.2 Normalisieren;133
7.3;5.3 Das Mesh;134
7.3.1;5.3.1 Normalenvektor;135
7.3.2;5.3.2 MeshFilter und MeshRenderer;136
7.4;5.4 Transform;138
7.4.1;5.4.1 Kontextmenü der Transform-Komponente;138
7.4.2;5.4.2 Objekthierarchien;139
7.4.3;5.4.3 Scripting mit Transform;140
7.4.4;5.4.4 Quaternion;140
7.5;5.5 Shader und Materials;141
7.5.1;5.5.1 Der Standard-Shader;142
7.5.2;5.5.2 Texturen;159
7.5.3;5.5.3 UV Mapping;162
7.6;5.6 3D-Modelle einer Szene zufügen;163
7.6.1;5.6.1 Primitives;163
7.6.2;5.6.2 3D-Modelle importieren;165
7.6.3;5.6.3 In Unity modellieren;166
7.6.4;5.6.4 Prozedurale Mesh-Generierung;167
7.6.5;5.6.5 Level Of Detail;167
7.7;5.7 2D in Unity;169
7.7.1;5.7.1 Sprites;170
7.7.2;5.7.2 SpriteRenderer;175
7.7.3;5.7.3 Parallax Scrolling;178
8;6 Kameras, die Augen des Spielers;182
8.1;6.1 Die Kamera;182
8.1.1;6.1.1 Komponenten eines Kamera-Objektes;184
8.1.2;6.1.2 HDR – High Dynamic Range-Rendering;184
8.1.3;6.1.3 Linearer- und Gamma-Farbraum;187
8.2;6.2 Kamerasteuerung;190
8.2.1;6.2.1 Statische Kamera;190
8.2.2;6.2.2 Parenting-Kamera;191
8.2.3;6.2.3 Kamera-Skripte;191
8.3;6.3 ScreenPointToRay;193
8.4;6.4 Mehrere Kameras;194
8.4.1;6.4.1 Kamerawechsel;194
8.4.2;6.4.2 Split-Screen;195
8.4.3;6.4.3 Einfache Minimap;196
8.4.4;6.4.4 Render Texture;198
8.5;6.5 Image Effects;200
8.5.1;6.5.1 Beispiel: Haus bei Nacht;200
8.6;6.6 Skybox;202
8.6.1;6.6.1 Mehrere Skyboxen gleichzeitig einsetzen;203
8.6.2;6.6.2 Skybox selber erstellen;204
8.7;6.7 Occlusion Culling;205
8.7.1;6.7.1 Occluder Static und Occludee Static;207
8.7.2;6.7.2 Occlusion Culling erstellen;207
9;7 Licht und Schatten;210
9.1;7.1 Environment Lighting;210
9.2;7.2 Lichtarten;212
9.2.1;7.2.1 Directional Light;213
9.2.2;7.2.2 Point Light;214
9.2.3;7.2.3 Spot Light;215
9.2.4;7.2.4 Area Light;216
9.3;7.3 Schatten;217
9.3.1;7.3.1 Einfluss des MeshRenderers auf Schatten;218
9.4;7.4 Light Cookies;219
9.4.1;7.4.1 Import Settings eines Light Cookies;219
9.4.2;7.4.2 Light Cookies und Point Lights;220
9.5;7.5 Light Halos;221
9.5.1;7.5.1 Unabhängige Halos;222
9.6;7.6 Lens Flares;222
9.6.1;7.6.1 Eigene Lens Flares;223
9.7;7.7 Projector;223
9.7.1;7.7.1 Standard Projectors;223
9.8;7.8 Lightmapping;225
9.8.1;7.8.1 Light Probes;228
9.9;7.9 Rendering Paths;230
9.9.1;7.9.1 Forward Rendering;231
9.9.2;7.9.2 Vertex Lit;232
9.9.3;7.9.3 Deferred Lighting;233
9.10;7.10 Global Illumination;234
9.10.1;7.10.1 Baked GI;235
9.10.2;7.10.2 Realtime Lighting;236
9.10.3;7.10.3 Lightmapping Settings;237
9.11;7.11 Light Explorer;238
9.12;7.12 Reflexionen (Spiegelungen);239
9.12.1;7.12.1 Reflection Probes;240
9.13;7.13 Qualitätseinstellungen;243
9.13.1;7.13.1 Quality Settings;243
9.13.2;7.13.2 Qualitätsstufen per Code festlegen;243
10;8 Physik in Unity;246
10.1;8.1 Physikberechnung;246
10.2;8.2 Rigidbodies;247
10.2.1;8.2.1 Rigidbodies kennenlernen;248
10.2.2;8.2.2 Masseschwerpunkt;249
10.2.3;8.2.3 Kräfte und Drehmomente zufügen;250
10.3;8.3 Kollisionen;253
10.3.1;8.3.1 Collider;253
10.3.2;8.3.2 Trigger;257
10.3.3;8.3.3 Static Collider;259
10.3.4;8.3.4 Kollisionen mit schnellen Objekten;259
10.3.5;8.3.5 Terrain Collider;260
10.3.6;8.3.6 Layer-basierende Kollisionserkennung;260
10.3.7;8.3.7 Mit Layer-Masken arbeiten;261
10.4;8.4 Wheel Collider;263
10.4.1;8.4.1 Wheel Friction Curve;264
10.4.2;8.4.2 Entwicklung einer Fahrzeugsteuerung;266
10.4.3;8.4.3 Autokonfiguration;273
10.4.4;8.4.4 Fahrzeugstabilität;275
10.5;8.5 Physic Materials;275
10.6;8.6 Joints;276
10.6.1;8.6.1 Fixed Joint;276
10.6.2;8.6.2 Spring Joint;277
10.6.3;8.6.3 Hinge Joint;277
10.7;8.7 Raycasting;277
10.8;8.8 Character Controller;279
10.8.1;8.8.1 SimpleMove;279
10.8.2;8.8.2 Move;280
10.8.3;8.8.3 Kräfte zufügen;281
10.8.4;8.8.4 Einfacher First Person Controller;282
10.9;8.9 2D-Physik;284
10.9.1;8.9.1 OnCollision2D- und OnTrigger2D-Methoden;286
10.9.2;8.9.2 2D Physic Effectors;287
11;9 Maus, Tastatur, Touch;290
11.1;9.1 Virtuelle Achsen und Tasten;290
11.1.1;9.1.1 Der Input-Manager;290
11.1.2;9.1.2 Virtuelle Achsen;292
11.1.3;9.1.3 Virtuelle Tasten;292
11.1.4;9.1.4 Steuern mit Mauseingaben;293
11.1.5;9.1.5 Joystick-Inputs;293
11.1.6;9.1.6 Anlegen neuer Inputs;294
11.2;9.2 Achsen- und Tasteneingaben auswerten;294
11.2.1;9.2.1 GetAxis;294
11.2.2;9.2.2 GetButton;295
11.3;9.3 Tastatureingaben auswerten;296
11.3.1;9.3.1 GetKey;296
11.3.2;9.3.2 anyKey;296
11.4;9.4 Mauseingaben auswerten;297
11.4.1;9.4.1 GetMouseButton;297
11.4.2;9.4.2 Mauseingaben auf Objekten per Event;298
11.4.3;9.4.3 mousePosition;298
11.4.4;9.4.4 Mauszeiger ändern;299
11.5;9.5 Touch-Eingaben auswerten;301
11.5.1;9.5.1 Der Touch-Typ;301
11.5.2;9.5.2 Input.touches;302
11.5.3;9.5.3 TouchCount;302
11.5.4;9.5.4 GetTouch;302
11.5.5;9.5.5 CrossPlatformInput;303
11.6;9.6 Beschleunigungssensor auswerten;304
11.6.1;9.6.1 Input.acceleration;305
11.6.2;9.6.2 Tiefpass-Filter;306
11.7;9.7 Steuerungen bei Mehrspieler-Games;307
11.7.1;9.7.1 Split-Screen-Steuerung;307
11.7.2;9.7.2 Netzwerkspiele;308
12;10 Audio;310
12.1;10.1 AudioListener;310
12.2;10.2 AudioSource;311
12.2.1;10.2.1 Durch Mauern hören verhindern;313
12.2.2;10.2.2 Sound starten und stoppen;315
12.2.3;10.2.3 Temporäre AudioSource;316
12.3;10.3 AudioClip;317
12.3.1;10.3.1 Länge ermitteln;317
12.4;10.4 Reverb Zone;317
12.5;10.5 Filter;319
12.6;10.6 Audio Mixer;319
12.6.1;10.6.1 Das Audio Mixer-Fenster;319
12.6.2;10.6.2 Audiosignalwege;323
12.6.3;10.6.3 Mit Snapshots arbeiten;327
12.6.4;10.6.4 Views erstellen;328
12.6.5;10.6.5 Parameter per Skript bearbeiten;328
13;11 Partikeleffekte mit Shuriken;332
13.1;11.1 Editor-Fenster;333
13.2;11.2 Particle Effect Control;334
13.3;11.3 Numerische Parametervarianten;334
13.4;11.4 Farbparameter-Varianten;335
13.5;11.5 Default-Modul;335
13.6;11.6 Effekt-Module;337
13.6.1;11.6.1 Emission;337
13.6.2;11.6.2 Shape;337
13.6.3;11.6.3 Velocity over Lifetime;339
13.6.4;11.6.4 Limit Velocity over Lifetime;339
13.6.5;11.6.5 Inherit Velocity;340
13.6.6;11.6.6 Force over Lifetime;340
13.6.7;11.6.7 Color over Lifetime;340
13.6.8;11.6.8 Color by Speed;341
13.6.9;11.6.9 Size over Lifetime;341
13.6.10;11.6.10 Size by Speed;341
13.6.11;11.6.11 Rotation over Lifetime;341
13.6.12;11.6.12 Rotation by Speed;342
13.6.13;11.6.13 External Forces;342
13.6.14;11.6.14 Noise;342
13.6.15;11.6.15 Collision;343
13.6.16;11.6.16 Triggers;344
13.6.17;11.6.17 Sub Emitter;346
13.6.18;11.6.18 Texture-Sheet-Animation;346
13.6.19;11.6.19 Lights;347
13.6.20;11.6.20 Trails;347
13.6.21;11.6.21 Renderer;348
13.7;11.7 Partikelemission starten, stoppen und unterbrechen;350
13.7.1;11.7.1 Play;351
13.7.2;11.7.2 Stop;351
13.7.3;11.7.3 Pause;351
13.7.4;11.7.4 enableEmission;351
13.8;11.8 OnParticleCollision;352
13.8.1;11.8.1 GetCollisionEvents;352
13.9;11.9 Feuer erstellen;353
13.9.1;11.9.1 Materials erstellen;353
13.9.2;11.9.2 Feuer-Partikelsystem;354
13.9.3;11.9.3 Rauch-Partikelsystem;357
13.10;11.10 Wassertropfen erstellen;361
13.10.1;11.10.1 Tropfen-Material erstellen;361
13.10.2;11.10.2 Wassertropfen-Partikelsystem;362
13.10.3;11.10.3 Kollisionspartikelsystem;364
13.10.4;11.10.4 Kollisionssound;366
14;12 Landschaften gestalten;368
14.1;12.1 Was Terrains können und wo die Grenzen liegen;369
14.2;12.2 Terrainhöhe verändern;369
14.2.1;12.2.1 Pinsel;370
14.2.2;12.2.2 Oberflächen anheben und senken;370
14.2.3;12.2.3 Plateaus und Schluchten erstellen;371
14.2.4;12.2.4 Oberflächen weicher machen;372
14.2.5;12.2.5 Heightmaps;372
14.3;12.3 Terrain texturieren;374
14.3.1;12.3.1 Textur-Pinsel;375
14.3.2;12.3.2 Texturen verwalten;375
14.4;12.4 Bäume und Sträucher;377
14.4.1;12.4.1 Bedienung des Place Tree-Tools;378
14.4.2;12.4.2 Wälder erstellen;378
14.4.3;12.4.3 Mit Bäumen kollidieren;378
14.5;12.5 Gräser und Details hinzufügen;379
14.5.1;12.5.1 Detail-Meshs;380
14.5.2;12.5.2 Gräser;381
14.5.3;12.5.3 Quelldaten nachladen;381
14.6;12.6 Terrain-Einstellungen;382
14.6.1;12.6.1 Base Terrain;382
14.6.2;12.6.2 Resolution;382
14.6.3;12.6.3 Tree & Details Objects;383
14.6.4;12.6.4 Wind Settings;383
14.6.5;12.6.5 Zur Laufzeit Terrain-Eigenschaften verändern;384
14.7;12.7 Der Weg zum perfekten Terrain;385
14.8;12.8 Gewässer;386
15;13 Wind Zones;388
15.1;13.1 Spherical vs. Directional;389
15.2;13.2 Wind Zone – Eigenschaften;390
15.3;13.3 Frische Brise;391
15.4;13.4 Turbine;391
16;14 GUI;392
16.1;14.1 Das UI-System uGUI;393
16.1.1;14.1.1 Canvas;393
16.1.2;14.1.2 RectTransform;397
16.1.3;14.1.3 UI-Sprite Import;401
16.1.4;14.1.4 Grafische Controls;402
16.1.5;14.1.5 Interaktive Controls;406
16.1.6;14.1.6 Controls designen;413
16.1.7;14.1.7 Animationen in uGUI;414
16.1.8;14.1.8 Event Trigger;415
16.2;14.2 Screen-Klasse;416
16.2.1;14.2.1 Schriftgröße dem Bildschirm anpassen;416
16.3;14.3 OnGUI-Programmierung;417
16.3.1;14.3.1 GUI;418
16.3.2;14.3.2 GUILayout;420
16.3.3;14.3.3 GUIStyle und GUISkin;421
17;15 Prefabs;424
17.1;15.1 Prefabs erstellen und nutzen;424
17.2;15.2 Prefab-Instanzen erzeugen;424
17.2.1;15.2.1 Instanzen per Code erstellen;425
17.2.2;15.2.2 Instanzen weiter bearbeiten;426
17.3;15.3 Prefabs ersetzen und zurücksetzen;426
17.4;15.4 Prefab-Verbindungen auflösen;427
18;16 Internet und Datenbanken;428
18.1;16.1 Die WWW-Klasse;428
18.1.1;16.1.1 Rückgabewert-Formate;429
18.1.2;16.1.2 Parameter übergeben;430
18.2;16.2 Datenbank-Kommunikation;431
18.2.1;16.2.1 Daten in einer Datenbank speichern;431
18.2.2;16.2.2 Daten von einer Datenbank abfragen;432
18.2.3;16.2.3 Rückgabewerte parsen;434
18.2.4;16.2.4 Datenhaltung in eigenen Datentypen;435
18.2.5;16.2.5 HighscoreCommunication.cs;437
18.2.6;16.2.6 Datenbankverbindung in PHP;438
19;17 Animationen;440
19.1;17.1 Allgemeiner Animation-Workflow;441
19.2;17.2 Animationen erstellen;441
19.2.1;17.2.1 Animation View;442
19.2.2;17.2.2 Curves vs. Dope Sheet;443
19.2.3;17.2.3 Animationsaufnahme;443
19.2.4;17.2.4 Beispiel Fallgatter-Animation;448
19.3;17.3 Animationen importieren;449
19.3.1;17.3.1 Rig;450
19.3.2;17.3.2 Animationen;452
19.4;17.4 Animationen einbinden;455
19.4.1;17.4.1 Animator Controller;456
19.4.2;17.4.2 Animator-Komponente;471
19.4.3;17.4.3 Beispiel Fallgatter: Animator Controller;472
19.5;17.5 Controller-Skripte;474
19.5.1;17.5.1 Parameter des Animator Controllers setzen;475
19.5.2;17.5.2 Animation States abfragen;475
19.5.3;17.5.3 Beispiel Fallgatter Controller-Skript;476
19.6;17.6 Animation Events;478
19.7;17.7 Das „alte“ Animationssystem;479
20;18 Künstliche Intelligenz;482
20.1;18.1 NavMeshAgent;483
20.1.1;18.1.1 Eigenschaften der Navigationskomponente;484
20.1.2;18.1.2 Zielpunkt zuweisen;485
20.1.3;18.1.3 Pfadsuche unterbrechen und fortsetzen;485
20.2;18.2 Navigation-Fenster;486
20.2.1;18.2.1 Agents Tab;487
20.2.2;18.2.2 Object Tab;488
20.2.3;18.2.3 Bake Tab;488
20.2.4;18.2.4 Areas Tab;489
20.3;18.3 NavMeshObstacle;490
20.4;18.4 Off-Mesh Link;491
20.4.1;18.4.1 Automatische Off-Mesh Links;491
20.4.2;18.4.2 Manuelle Off-Mesh Links;492
20.5;18.5 Point & Click-Steuerung für Maus und Touch;493
21;19 Fehlersuche und Performance;496
21.1;19.1 Fehlersuche;496
21.1.1;19.1.1 Breakpoints;497
21.1.2;19.1.2 Variablen beobachten;498
21.1.3;19.1.3 Console Tab nutzen;499
21.1.4;19.1.4 GUI- und GUILayout nutzen;499
21.1.5;19.1.5 Fehlersuche bei mobilen Plattformen;500
21.2;19.2 Performance;502
21.2.1;19.2.1 Rendering-Statistik;503
21.2.2;19.2.2 Batching-Verfahren;504
21.2.3;19.2.3 Analyse mit dem Profiler;505
21.2.4;19.2.4 Echtzeit-Analyse auf Endgeräten;507
22;20 Spiele erstellen und publizieren;510
22.1;20.1 Der Build-Prozess;510
22.1.1;20.1.1 Szenen des Spiels;511
22.1.2;20.1.2 Plattformen;512
22.1.3;20.1.3 Notwendige SDKs;512
22.1.4;20.1.4 Plattformspezifische Optionen;513
22.1.5;20.1.5 Developer Builds;513
22.2;20.2 Publizieren;514
22.2.1;20.2.1 App;515
22.2.2;20.2.2 Browser-Game;515
22.2.3;20.2.3 Desktop-Anwendung;516
23;21 Erstes Beispiel-Game: 2D-Touch-Game;518
23.1;21.1 Projekt und Szene;518
23.1.1;21.1.1 Die Kamera;520
23.1.2;21.1.2 Texturen importieren und Sprites definieren;521
23.2;21.2 Gespenster und Hintergrund;523
23.2.1;21.2.1 Gespenster animieren;526
23.2.2;21.2.2 Gespenster laufen lassen;530
23.2.3;21.2.3 Gespenster-Prefab erstellen;532
23.3;21.3 Der GameController;533
23.3.1;21.3.1 Der Spawner;533
23.3.2;21.3.2 Level-Anzeige;535
23.3.3;21.3.3 Der Input-Controller;536
23.3.4;21.3.4 Game Over-UI;538
23.3.5;21.3.5 Hintergrundmusik;545
23.4;21.4 Punkte zählen;546
23.5;21.5 Spielende;547
23.6;21.6 Spiel erstellen;548
24;22 Zweites Beispiel-Game: 3D Dungeon Crawler;550
24.1;22.1 Level-Design;551
24.1.1;22.1.1 Modellimport;552
24.1.2;22.1.2 Materials konfigurieren;553
24.1.3;22.1.3 Prefabs erstellen;554
24.1.4;22.1.4 Dungeon erstellen;556
24.1.5;22.1.5 Dekoration erstellen;561
24.2;22.2 Inventarsystem erstellen;563
24.2.1;22.2.1 Verwaltungslogik;563
24.2.2;22.2.2 Oberfläche des Inventarsystems;571
24.2.3;22.2.3 Inventar-Items;574
24.3;22.3 Game Controller;581
24.4;22.4 Spieler erstellen;581
24.4.1;22.4.1 Lebensverwaltung;583
24.4.2;22.4.2 Spielersteuerung;594
24.4.3;22.4.3 Wurfstein entwickeln;602
24.4.4;22.4.4 Lautstärke steuern;608
24.5;22.5 Quest erstellen;609
24.5.1;22.5.1 Erfahrungspunkte verwalten;609
24.5.2;22.5.2 Questgeber erstellen;611
24.5.3;22.5.3 Sub-Quest erstellen;620
24.6;22.6 Gegner erstellen;625
24.6.1;22.6.1 Model-, Rig- und Animationsimport;625
24.6.2;22.6.2 Komponenten und Prefab konfigurieren;626
24.6.3;22.6.3 Animator Controller erstellen;628
24.6.4;22.6.4 NavMesh erstellen;630
24.6.5;22.6.5 Umgebung und Feinde erkennen;631
24.6.6;22.6.6 Gesundheitszustand verwalten;634
24.6.7;22.6.7 Künstliche Intelligenz entwickeln;638
24.7;22.7 Eröffnungsszene;647
24.7.1;22.7.1 Szene erstellen;647
24.7.2;22.7.2 Startmenü-Logik erstellen;648
24.7.3;22.7.3 Menü-GUI erstellen;650
24.8;22.8 WebGL-Anpassungen;652
24.8.1;22.8.1 WebGL-Input ändern;652
24.8.2;22.8.2 Quit-Methode in WebGL abfangen;653
24.9;22.9 Finale Einstellungen;654
24.10;22.10 So könnte es weitergehen;657
25;23 Der Produktionsprozess in der Spieleentwicklung;658
25.1;23.1 Die Produktionsphasen;658
25.1.1;23.1.1 Ideen- und Konzeptionsphase;659
25.1.2;23.1.2 Planungsphase;659
25.1.3;23.1.3 Entwicklungsphase;659
25.1.4;23.1.4 Testphase;660
25.1.5;23.1.5 Veröffentlichung und Postproduktion;660
25.2;23.2 Das Game-Design-Dokument;660
26;24 Schlusswort;662
27;Index;664


01 Einleitung

Computerspiele gehören heutzutage zu den beliebtesten Freizeitgestaltungen unserer Zeit. Mit Zunahme der Popularität ist aber auch der Anspruch an diese Spiele gestiegen. Während in den ersten Jahren bis Jahrzehnten dieser jungen Branche noch ein einziger Programmierer ausreichte, um alle notwendigen Aufgaben zu erledigen, werden anspruchsvolle Computerspiele heutzutage meist von großen Teams umgesetzt. Hier arbeiten 3D-Modellierer, Grafiker, Sounddesigner, Level-Designern und natürlich auch Programmierer aus unterschiedlichen Sparten Hand in Hand.

Um den stetig wachsenden Ansprüchen zu genügen, sind aber auch die Werkzeuge der Entwickler ständig mitgewachsen. Eines dieser Werkzeuge ist Unity. Unity ist eine Spieleentwicklungsumgebung für Windows- und Mac OS X-Systeme und wird von der aus Dänemark stammenden Firma Unity Technologies entwickelt. Mit ihr können Sie sowohl interaktive 3D- als auch 2D-Inhalte erstellen. Wir sprechen deshalb von Inhalten und nicht nur von Spielen, weil Unity zwar eigentlich für die Entwicklung von 3D-Spielen gedacht war, mittlerweile aber auch immer häufiger Anwendung in anderen Bereichen findet. So wird es beispielsweise für Architekturvisualisierungen genutzt, im E-Learning-Bereich eingesetzt oder in der Digital-Signage-Branche für das Erstellen digitaler Werbe- und Informationssysteme genommen.

Da Unity ursprünglich für die Entwicklung von 3D-Spielen konzipiert wurde, lautet die Internet-Adresse der Firma unity3d.com. Dies ist der Grund, weshalb die Entwicklungssoftware auch gerne mal „Unity3D“ genannt wird, was aber eben nicht ganz korrekt ist.

1.1 Multiplattform-Publishing

Eine besondere Stärke von Unity ist die Unterstützung von Multiplattform-Publishing. Das bedeutet, dass Sie in Unity ein Spiel einmal entwickeln können, das Sie dann aber für mehrere Plattformen exportieren können. Aktuell werden mehr als 25 Plattformen unterstützt, die sich grob in folgende Kategorien einteilen lassen:

  • Die sogenannten „Standalones“. Hierzu gehören: Windows Desktop, Mac, Linux (und Steam OS)

  • Die mobilen Smartphone-/Tablet-Plattformen: iOS, Android, Windows Phone, Fire OS

  • Die Spielekonsolen: PlayStation 4, PlayStation Vita, Xbox One, Nintendo Switch, Wii U, Nintendo 3DS

  • Die Kategorie „Smart-TV“. Hier werden folgende Systeme unterstützt: AndroidTV, Samsung SMART-TV, tvOS

In Verbindung mit diesen Plattformen bietet Unity die Möglichkeit, Inhalte direkt für verschiedene Virtual-Reality-Systeme zu entwickeln. Hierzu gehören: Occulus-Rift, Google-Cardboard, Steam-VR, Playstation-VR, Gear-VR, Microsoft Hololens und Daydream.

Auch für Web-Inhalte bietet Unity entsprechende Features. Mit der Plattform „WebGL“, die im Browser läuft und auf HTML5 basiert, können Sie Nutzern direkten Zugriff auf Ihre Inhalte geben.

Bei den erwähnten Spielekonsolen müssen Sie allerdings noch eine Einschränkung beachten: Sie müssen hier extra Lizenzen erwerben, die zum einen nicht günstig und zum anderen nur für Firmen verfügbar sind, die von den jeweiligen Konsolenherstellern auch als Entwickler akzeptiert wurden. Deshalb werden wir die Konsolenentwicklung in diesem Buch auch außen vor lassen und nicht näher beleuchten.

1.2 Das kann Unity (nicht)

Unity bringt eine ganze Reihe an nützlichen Werkzeugen mit, um Spiele und andere 2D- und 3D-Anwendungen zu entwickeln. So gibt es neben einer ausgeklügelten Physik-Engine auch Tools für Partikeleffekte, zur Landschaftsgestaltung oder auch für Animationen. Außerdem wird Unity mit einer extra angepassten Version der Softwareentwicklungsumgebung MonoDevelop ausgeliefert, in der die Programmierung umgesetzt und das Debugging vorgenommen werden kann.

Eines ist Unity allerdings nicht: Es ist keine 3D-Modellierungssoftware. Unity bietet zwar von Haus aus einige 3D-Grundobjekte an, sogenannte Primitives, die für kleinere Aufgaben genutzt werden können, aber für richtige Modellierungsaufgaben sollten Sie auf die dafür entwickelten Spezialtools wie 3ds Max oder das kostenlose Blender zurückgreifen.

1.3 Lizenzmodelle

Sie haben die Möglichkeit, auf verschiedene Modelle zurückzugreifen, wenn Sie Unity nutzen möchten. Zum eine gibt es eine komplett kostenfreie Variante, welche bereits alle oben genannten Zielplattformen unterstützt und eine komplette Spieleentwicklung bis hin zum fertigen Spiel erlaubt. Es gibt jedoch auch einige Einschränkungen, die sich allerdings nur auf erweiterte oder visuelle Features beziehen. So müssen Sie zum Beispiel auf die dunkle Oberfläche (Skin) Ihres Unity-Programms verzichten oder haben auch keinen Zugriff auf den Premium-Support von Unity.

Bei der kostenpflichtigen Variante unterscheidet man die drei Abo-Modelle „Plus“, „Pro“ und „Enterprise“, welche jeweils monatlich zu bezahlen sind. Je teurer das Abo ist, umso mehr Funktionen stehen zur Verfügung.

Da sowohl die kostenfreie als auch die kostenpflichtige Edition kommerziell genutzt werden darf, gibt es beim Einsatz der kostenlosen Version die Vorgabe, dass nur Firmen bzw. Entwickler diese einsetzen dürfen, die nicht mehr als 100.000 US-Dollar Umsatz in einem Geschäftsjahr machen.

1.4 Aufbau und Ziel des Buches

Mit diesem Buch werden Sie lernen, auf Basis von Unity eigene 2D- und 3D-Spiele zu entwickeln. Sie werden sich mit den unterschiedlichen Tools der Game Engine vertraut machen und die Skript-Programmierung erlernen. Dabei steht aber nicht das Ziel im Fokus, wirklich jede einzelne Funktion und Möglichkeit zu beleuchten, die Unity dem Entwickler anbietet. Vielmehr zeigen wir Ihnen, wie die unterschiedlichen Bereiche von Unity funktionieren und miteinander zusammenarbeiten. Denn der Funktionsumfang dieser Spieleentwicklungsumgebung ist mittlerweile so umfangreich geworden, dass es gar nicht mehr möglich ist, alle Tools und deren Möglichkeiten bis ins letzte Detail in einem einzigen Buch ausführlich zu behandeln. Daher liegt der Schwerpunkt auf den Kernfunktionen und wichtigen Optimierungstechniken, die in Unity für die 2D- und 3D-Spieleentwicklung bereitgestellt werden, ergänzt um Anwendungsbeispiele und Praxistipps.

Möchten Sie weiter in die Tiefe eines speziellen Tools gehen oder mehr Informationen zu bestimmten Scripting-Klassen erhalten, empfehlen wir Ihnen die mit Unity mitgelieferten Hilfe-Dokumente, die Sie über das Help-Menü erreichen. Dort finden Sie sowohl ein ausführliches Manual über die in Unity integrierten Tools sowie eine über alle Unity-Klassen und deren Möglichkeiten. Letztere finden Sie auch über die Hilfe von MonoDevelop, der mitgelieferten Programmierumgebung.

Spieleentwicklung wird häufig auch als Spieleprogrammierung bezeichnet, auch wenn viele Aufgaben in der Spieleentwicklung heutzutage nicht mehr programmiert, sondern mithilfe von Tools erledigt werden. Nichtsdestotrotz ist der Programmieranteil bei der Entwicklung eines Spiels doch immer noch sehr hoch. Deshalb wird auch das Buch zunächst mit zwei größeren programmierbezogenen Kapiteln beginnen. Das erste behandelt allgemeine Grundlagen der Programmierung, das zweite geht auf die Unity-spezifischen Themen ein. Erst danach werden wir in die 3D-Welt von Unity eintauchen und die verschiedenen Werkzeuge behandeln. Der Aufbau ist deshalb so gewählt, weil wir in den folgenden Kapiteln immer wieder kleinere Skript-Beispiele zeigen, die Einsatzmöglichkeiten in der Praxis demonstrieren.

Ganz grundsätzlich ist die Reihenfolge der einzelnen Kapitel so gewählt, dass die Inhalte aufeinander aufbauen. Aus diesem Grund kommen auch erst zum Ende des Buches die beiden Beispiel-Games, eines für 2D und eines für 3D. In diesen werden alle angesprochenen Themen noch einmal aufgegriffen und die gesamten Zusammenhänge in der Praxis gezeigt. Nichtsdestotrotz können Sie gerne diese Kapitel auch vorziehen. Speziell das 2D-Spiel eignet sich hierfür gut.

Im Buch werden wir Hinweiskästen, wie den obigen, einsetzen, um Hinweise und Tipps zu geben. Je nach Typ des Hinweises werden diese mit unterschiedlichen Icons ausgezeichnet.

Hinweise zu weiterführenden Inhalten im InternetPraxistippsAllgemeine Hinweise

1.5 Weiterentwicklung von Unity

Die Spieleindustrie gehört zu den Branchen, die sich aktuell am schnellsten verändern. Kein Wunder also, dass auch Unity ständig weiterentwickelt wird und neue Funktionen erhält. Sollten Sie Unterschiede zwischen dem Buch und Ihrer Unity-Version erkennen, wird dies sicher der ständigen Weiterentwicklung von Unity geschuldet sein.

Aber nicht nur der Funktionsumfang wird ständig weiterentwickelt, auch das Lizenzmodell von...



Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.