Unity 2021/22 und C# online lernen
Die Heise Medien Gmbh, bekannt u.a. vom IT-Portal heise.de, bietet mit Heise-Academy online-Fortbildungen im IT-Bereich an. Hier findest Du nun auch meinen Video-Kurs „Unity und C#: Einstieg ins Game-Engineering“, bei dem ich Dich durch die technischen Grundlagen von Unity 2021 führe. Ab Februar 2023 ist der Kurs zudem bei Udemy erhältlich.
Wie wird eine Game-Engine programmiert?
In diesem Kurs geht es um die Grundlagen der Spielentwicklung in Unity. Dabei lernst Du virtuelle Welten aufzubauen und Programmlogik mit C# zu formulieren. Wir schauen uns Lösungswege und auch typische Probleme an, die bei der Arbeit mit Unity üblicherweise auftreten.
Am Ende dieses Kurses hast du einen kompletten Überblick über Unity und kennst alle wichtigen Funktionen die du brauchst um deine Inhalte umzusetzen. Beginnend bei der Frage wie du Modelle von Blender nach Unity exportierst, über die Organisation von Szenen, dem Anlegen von Animationen, Beleuchtung, Kameraeinstellungen und 2D-Grafik bis hin zur Verbindung mit Programmlogik, Physikberechnungen und Interaktionsmöglichkeiten wird der gesamte Workflow abgebildet.
Leistungsfähige Echtzeit-Grafik für virtuelle Szenarios
Nicht nur Spiele sondern auch viele andere Produkte wie z.B. Simulationen oder Produktvisualisierungen stellen hohe technische Ansprüche, die eine GameEngine erfüllt. Das in diesem Kurs erworbene Wissen lässt sich somit zur Umsetzung von Spielen wie auch zahlreichen weiteren Anwendungsgebieten nutzen.
Die einzelnen Funktionen des Programms werden Schritt für Schritt besprochen und direkt innerhalb der Software erklärt. Die einzelnen Umsetzungsbeispiele und Übungen kannst du sofort mitmachen und so das Gelernte selbst ausprobieren.
Inhalte dieses Video-Kurses
Gesamtlänge: ca. 14 Stunden
Kapitel 1: Einführung und Setup
ca. 15 Minuten
- Unitys Lizenzmodell und Installation
Lizenzen, Versionen und Module in Unity, Unity. Anmeldung & Installation. Aktivierung und Lizenz einrichten. Was ist Unity Hub? Installationprozess durchlaufen. - Anbindung von Visual Studio
Visual Studio als Code-Editor installieren, bestehende VS-Installation anbinden. Plattform-Ziele (nach)installieren. Problem: Keine Auto-Vervollständigung in VS.
Kapitel 2: Unity-Grundlagen
Kapiteldauer ca. 65 Minuten
- Elemente von Unity-Projekten
Struktur eines Unity-Projekts, Projekte in Unity-Hub anlegen, Projekt-Struktur, Projektdarstellung im Editor, Problem: Objekt-Beziehungen gehen verloren, „Asset“. - Ein minimales Programm in Unity
Code schreiben & ausführen, Hello World, Aufbau eines minimalen Unity-Scripts. - Unity-Message-Methoden
Was ist sind Unity-Messages? Welche vordefinierten Messages gibt es? Sichtbarkeitsmodifikatoren. Welchen Schutzgrad brauchen Messages wie z.B. Start()? Aufbau eines minimalen Unity-Scripts. - Komponenten-Architektur
Begriff der Komponente. Fehler: „Can‘t add script component […] because the script class cannot be found. - Felder, Attribute und der Inspector
Was sind Felder? Feld-Werte über den Inspector steuern. Wie funktionieren Inspector-Werte technisch gesehen? Was sind „Attribute“ und was bewirkt [SerializeField]? - IMGUI – Einfache grafische Diagnosetools
Was ist das IMGUI (Immediate Mode GUI)? Funktion von OnGUI(). - Eingabe-Elemente im IMGUI
Wie unterscheidet sich das IMGUI vom sonst üblichen Programmierstil in Unity? Problem: Die manuelle Angabe der Zeichnen-Koordinaten ist sehr mühsam. - Interaktives Quiz zu diesem Kapitel
Kapitel 3: Raum und Input
Kapiteldauer ca. 80 Minuten
- Organisation von 3D-Elementen
Objekte im virtuellen Raum, Game Objects als Grundtyp, GameObject und gameObject, Szenengraph und Hierarchie - Transform-Eigenschaft
Objekte im Raum transformieren, Code-Element „transform“: Zugriff auf die Objekt-Position. - Objekte per Code im Raum verschieben
Vector3 und Vector2. Positionen zuweisen. Problem: Der Rückgabewert von Transform.position ist keine Variable und kann nicht geändert werden.“ [CS1612] - Objekte per Code skalieren
- Objekte per Code rotieren
Zugriff auf die Rotation, Besonderheiten der Rotation, Objekt per C# um die eigene Y-Achse um 45° drehen. - Wie wird ein Objekt nach vorne bewegt?
- Objekte hierarchisch organisieren
Zugriff auf die Hierarchie und Elternobjekte. - Reflektion: Erkenntnisse zum „Transform“
- Zeitliche Verläufe mit Update und deltaTime realisieren
Eingaben per Input erfassen. Wie wird ein Tastendruck abgefragt? - Eingabeachsen
Spiel-Eingaben erfassen, Input-Axes einrichten, Wie wird ein Achsensignal abgefragt? - Interaktives Quiz zu diesem Kapitel
Kapitel 4: Assets und Instanzen
Kapiteldauer ca. 90 Minuten
- Klickereignisse auf 3D-Objekten
Grundlagen Mausinteraktionen, Wie reagiert ein Objekt auf konkrete Mausinteraktionen? OnMouseUpAsButton(). Problem: Rechte Maustaste nicht identifizierbar. - Modelle von Blender nach Unity portieren
Modell von Blender nach Unity exportieren, Welches Dateiformat für Exporte verwenden? Export-Import-Ablauf - Problemlösungen beim Portieren: Objektursprung und Größenverhältnisse
Wo soll der Objektursprung in Blender liegen? Größenverhältnisse zwischen Blender und Unity stimmen nicht. Unterschiedliche Koordinatensysteme. Importierte Modelle sind in Unity gedreht und skaliert. - Austauschen eines lückenhaft erscheinenden Modells
Das Modell ist in Unity irgendwie löchrig. - Arbeitsfluss bei der Asset-Produktion
Asset-Pipeline: Was wird wo gebaut? Allgemeine Entscheidungshilfe: Dynamik & Interaktivität. Wie sieht die Produktionspipeline für ein Maisfeld im Spiel aus? - Modell-Instanzen per Code ansteuern
Mit Assets und Instanzen programmieren, Game Object – Instanzen, Duplikate, Instantiate(originalGO), Destroy(gameObject), DestroyImmediate(gameObject) - Aktivieren und Deaktivieren von Objekten und Komponenten
SetActive(zustand) vs. enabled-Eigenschaft. Problem: Meine Komponente hat kein Häkchen. - Objekte suchen und finden
Wie findet ein GameObject ein anderes? Wie findet eine Komponente eine andere? Häufige Suchläufe. Objekte explizit koppeln. - Objektkomposition per Prefab
Wie lassen sich Objektkompositionen wiederverwenden? Was sind Prefabs? Wie wird ein Prefab erzeugt? Eigenschaften und Verhalten von Prefab-Instanzen. Eigenschaften und Verhalten von Prefab-Assets - Interaktives Quiz zu diesem Kapitel
Kapitel 5: Material, Textur und Shader
Kapiteldauer ca. 100 Minuten
- Unterscheidung Materialien, Shader & Texturen
Begriffsunterscheidung. Material in Unity. Welche Rolle spielen Shader? - Render-Pipelines
Was ist die Render-Pipeline (RP)? Render-Pipelines in Unity. Wie wird die Universal Render Pipeline (URP) in neuem Projekt aktiviert? Was ist der Package Manager? Umstellung auf Universal Render Pipeline. Problem: Nach Umstellung auf URP erscheinen die Szenen-Objekte pink. - Shader Graph-Editor
Installation des Shader Graph per Package Manager, Wie funktioniert der Shader-Graph-Editor? - Portierung von Materialien
Mythos: „Um Materialien aus Blender zu exportieren, muss man diese backen. Wie wird ein Blender-Material nach Unity überführt? Texturemaps als Materialfundament - Arbeiten mit Material-Assets
Wie ändert man das Material eines importierten Modells in Unity? Wie werden Material-Assets erzeugt? Wie ändert man das Material eines einzelnen Modells in der Szene? Wie ändert man ein Material per C#? - Problem: Material-Änderung per Code wirkt nicht.
Typische Textur-Probleme, Ausgangssituation. Probleme: Pixel tauchen auf, die in der Textur garnicht vorkommen, Texturkanten zeigen einen Farbschimmer. Wie wird eine Textur gekachelt? Pixel und Kanten werden immer geglättet. Die Textur wird verzerrt importiert. - Mapping-Koordinaten
UV-Koordinaten in Unity, Wie erreicht Code die UV-Koordinaten? Beispiel: 2D-Gesichter bei Klick ändern. - Videotexturen
- Interaktives Quiz zu diesem Kapitel
Kapitel 6: Animation und Bewegung
Kapiteldauer ca. 130 Minuten
- Animationsprogrammierung
Wie fährt ein Objekt von A nach B? Lerp(von, bis, prozent). Version mit Kopplung über öffentliches Feld. - Bewegungsprogrammierung mittels iTween.
Installation der iTween-Bibliothek per Package Manager. Bewegung mit iTween. iTween: Easing (Bewegungsabschwächung). Wie werden Parameter an iTween übergeben? Welche Parameter unterstützt iTween.Hash? - Pfadanimation
Installation des iTween-Pfadeditors per Download. Wie wird eine Pfadanimation in Unity mittels iTween realisiert? Beim Loop springt die Animation. - Anmerkungen zu iTween
- Hierarchische Animation
Bones & Rigging. Produktions-Pipeline einer Bones-Animation. - Clips
Wie wird ein Clip-Asset abgespielt? Animation als Zustandsvisualisierung. Clips auf Zustände (States) abbilden. Zustandsübergänge (Transitions). - Typische Probleme im Animator
Wie wird ein Clip im Animator wiederholt? Der Clip wirkt abgeschnitten. Eine dem FBX hinzugefügte Animation erscheint nicht als Clip. - Übergänge und Parameter im Animator
Zustandswerte (Parameter). Wie löst C# den Animation-State-Wechsel aus? Fehler: Pro State einen Parameter anlegen. Was bedeuten die Standard-Zustände im Animator? - Ebenen und Gewichte
Animator-Layer - Weitere Animationstechnik: Vertex- Animation
- Interaktives Quiz zu diesem Kapitel
Kapitel 7: KI und Physik
Kapiteldauer ca. 90 Minuten
- Überblick KI / AI in Games
- Unitys Physik-System
Collider: Typische Funktionen. Wann simuliert Unity Physik auf Objekten? - Physiksimulation gezielt beeinflussen
Problem: Explizite Transformation & Physik stören sich. isKinematic-Eigenschaft. - Kollisionen
OnCollisionEnter und Typische Collider-Funktionen - Physik-bezogener Code
Was gehört in Update bzw. FixedUpdate? Wie werden Objekte gezielt per Physik bewegt? - Kollisionsabfrage per Strahlverfolgung (Raycast)
Raycast(strahl, …) und grafische Diagnose eines Raycast. - Pfadfindung in Unity
Navigationsprobleme in der Praxis. Was sind statische Game-Objects? - Bewegung per NavMesh-System
Was sind NavMeshes und NavAgents? Wie wird ein NavMesh in Unity erstellt? Wie wird ein NavAgent in Unity erstellt? Das Navmesh geht nicht bis zum Rand. Wie verhindert ein NavAgent dynamische Objekte? - Feinderkennung durch NPCs
Wie sieht ein NPC ein anderes Objekt? Welche Objekte liegen im Sichtfeld des NPC? - Interaktives Quiz zu diesem Kapitel
Kapitel 8: Kamera-Steuerung
Kapiteldauer ca. 65 Minuten
- Second-Person-Perspektive
Modell der „Gott“-Kamera bzw. Vogelperspektive. Blickweite vs. Clipping, Linienverkürzung - Panning-Bewegung der Kamera
Wie wird ein Panning im 3D-Raum realisiert? - Third-Person-Perspektive
Modell der „Cinematic“-Kamera in Beobachterperspektive. Verfolgerkamera per Parenting umsetzen. - Constraints
Was sind Constraints? Wann Constraints und wann z.B. transform.LookAt? - Mehrere Kameras einsetzen
Wie wird ein Kamerawechsel programmiert? - First-Person-Perspektive
Modell der „Ego“-Kamera in Normalsicht. Wie ist ein MouseLook aufgebaut? Wie wird ein MouseLook umgesetzt? - Essentielle Kamera-Eigenschaften
Kamera-Eigenschaften, Brennweite, Zoom und Dolly - Explizites Rendern
Wie wird ein echter Spiegel realisiert? - Interaktives Quiz zu diesem Kapitel
Kapitel 9: Beleuchtungseffekte in der Universal Render Pipeline
Kapiteldauer ca. 85 Minuten
- Einführung Beleuchtung
Rolle der Beleuchtung, Beleuchtungsarten in Unity - Indirektes Licht
Wie wird indirektes Licht in Unity aufgesetzt? - Probleme beim indirekten Licht
Mein Mesh empfängt kein indirektes Licht. Lightmaps ignorieren dynamische Objekte. Wie werden bewegliche Objekte indirekt beleuchtet? - Spiegelungen
Spiegelungen per Lichtsystem, Performance von Reflexionen verbessern. - Gerichtetes Licht
- Umgebungslicht
Licht der Skybox - Punkt- und Kegellicht
- Flächen-Licht
- Material-Emissionen
- Schatten
Schattenwurf konfigurieren, komplexe Schatten simulieren: Ambient Occlusion - Transparenz
Alpha-Transparenz - Programmierung eines Flackerlichts
- Interaktives Quiz zu diesem Kapitel
Kapitel 10: 2D-Graphik und GUIs
Kapiteldauer ca. 95 Minuten
- Wie unterscheidet sich 2D von 3D in Unity?
Ist mein Projekt 2D oder 3D? - Sprites
Was sind Sprites? Sprites in der (3D-)Szene rendern - Animation von Sprites
Unity-Keyframe-Animation aufsetzen - 2D-Physik und Kollisionen
Canvas-Layout-System (UGUI), Bild-Eigenschaften von Spielszenen, Bild-Eigenschaften von GUI-Elementen, Kernbestandteile von Unitys GUI-System. Wie wird das UI-Layout-System angelegt? - Grundlagen des Canvas
RectTransform, Werkzeuge für UI-Bearbeitung, RectTransform: Pivotpunkt und Anker. - Dynamische Layouts
Problem: Elemente überlappen sich bei wenig Platz. RectTransform: Anker-Streckung. Ergebnis bei Änderung der Bildschirmgröße. Wie wird eine Vignette oder ein Bloodscreen realisiert? - UI-Skalierung aufgrund der Bildschirmgröße
Problem bei Größenänderung mit Inhaltsblöcken, Canvas Scaler, Prinzip von Scale With Screen Size. - Skalierbare Sprites
Unterschied Skalierung und Größenänderung. Was ist ein 9-Slice oder 9-Grid? - Autolayouts
Wie werden GUI-Elemente als Liste angeordnet? - Event System
Wie wird eine Methode an einen GUI-Button gebunden? - Interaktives Quiz zu diesem Kapitel
Kapitel 11: Daten und Persistenz
Kapiteldauer ca. 45 Minuten
- Hintergrund zur Notwendigkeit der Datentrennung
Das Spiel als Zustandssammlung persistente und transiente Informationen. Spielmechaniken nach J. Schell (Wh. Game Design) Objekte, Attribute, Status. Inspiration: Endlicher Automat. - Daten vom Szenengraph trennen
Wie werden Spielinhalt und Darstellung getrennt? Warum ist die strenge Trennung von Daten und Darstellung wichtig? Fehler: Datenobjekte und Engineobjekte mischen - Spielobjekt durch Spieldaten steuern
Sonnenlichtwinkel durch Uhrzeit steuern - Speichern und Laden von Daten
„Serialisierung“ und „Deserialisierung“. Wie wird ein Daten-Objekt in einen String konvertiert? - Daten/Dateien schreiben und lesen
Wohin werden Savegames gespeichert? Woraus entsteht Application.persistentDataPath? - Scriptable Objects
Serialisierungsformen in Unity. Wie wird ein Scriptable Object erzeugt und benutzt? - Szenenmanagement
Wie wird zu einer anderen Szene gewechselt? - Wie bleiben Daten über Szenenwechsel hinweg erhalten?
Laden und Mischen mehrerer Szenen. DontDestroyOnLoad. - Interaktives Quiz zu diesem Kapitel