Unity und C#: Einstieg ins Game-Engineering
What you'll learn
- Virtuelle Szenen mit 3D- und 2D-Modellen aufbauen
- Objekte per C#, Tools und künstlicher Intelligenz erzeugen, verändern und animieren
- Materialien, Texturen und Shader mit der Universal Renderpipeline darstellen
- Lichtquellen, indirektes Streulicht, Spiegelungen und Kameratechnik in Szene setzen
- Spieldaten von der Engine trennen, speichern und laden
Requirements
- Grundkenntnisse in Objektorientierter Programmierung (z.B. Java, C++, C#, Python,...)
- Grundkenntnisse in Blender von Vorteil (aber nicht zwingend nötig)
- Rechner mit Unity 2021 und Blender ab 2.8
Description
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.
Die einzelnen Funktionen des Programms werden Schritt für Schritt besprochen und direkt innerhalb der Software erklärt. Die jeweiligen Umsetzungsbeispiele und Übungen kannst du sofort mitmachen und so das Gelernte selbst ausprobieren.
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.
Themengruppen in diesem Kurs:
Virtuelle Szenen mit 3D- und 2D-Modellen aufbauen
Objekte per C#, Tools und künstlicher Intelligenz erzeugen, verändern und animieren
Materialien, Texturen und Shader mit der Universal Renderpipeline darstellen
Lichtquellen, indirektes Streulicht, Spiegelungen und Kameratechnik in Szene setzen
Spieldaten von der Engine trennen, speichern und laden
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 Kursinhalte im Detail:
Einführung und Setup
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.
Unity-Grundlagen
Elemente von Unity-Projekten
Struktur eines Unity-Projekts, Projekte in Unity-Hub anlegen, Projekt-Struktur, Projektdarstellung im Editor, Problem: Objekt-Beziehungen gehen verloren, Begriff des „Assets“.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
Raum und Input
Organisation von 3D-Elementen
Objekte im virtuellen Raum, Game Objects als Grundtyp, GameObject und gameObject, Szenengraph und HierarchieTransform-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
Assets und Instanzen
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-AblaufProblemlösungen beim Portieren: Objektursprung und Größenverhältnisse
Wo soll der Objektursprung in Blender liegen? Probleme: 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
Problem: 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-AssetsInteraktives Quiz zu diesem Kapitel
Material, Textur und Shader
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
Wie wird ein Blender-Material nach Unity überführt? Texturemaps als MaterialfundamentArbeiten 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
Animation und Bewegung
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.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-LayerWeitere Animationstechnik: Vertex- Animation
Interaktives Quiz zu diesem Kapitel
KI und Physik
Ü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-FunktionenPhysik-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
Kamera-Steuerung
Second-Person-Perspektive
Modell der „Gott“-Kamera bzw. Vogelperspektive. Blickweite vs. Clipping, LinienverkürzungPanning-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 DollyExplizites Rendern
Wie wird ein echter Spiegel realisiert?Interaktives Quiz zu diesem Kapitel
Beleuchtungseffekte in der Universal Render Pipeline
Einführung Beleuchtung
Rolle der Beleuchtung, Beleuchtungsarten in UnityIndirektes 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 SkyboxPunkt- und Kegellicht
Flächen-Licht
Material-Emissionen
Schatten
Schattenwurf konfigurieren, komplexe Schatten simulieren: Ambient OcclusionTransparenz
Alpha-TransparenzProgrammierung eines Flackerlichts
Interaktives Quiz zu diesem Kapitel
2D-Grafik und GUI
Wie unterscheidet sich 2D von 3D in Unity?
Ist mein Projekt 2D oder 3D?Sprites
Was sind Sprites? Sprites in der (3D-)Szene rendernAnimation von Sprites
Unity-Keyframe-Animation aufsetzen2D-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
Daten und Persistenz
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 mischenSpielobjekt durch Spieldaten steuern
Sonnenlichtwinkel durch Uhrzeit steuernSpeichern 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
Schreibe Dich jetzt ein, um sofort Zugriff auf all diese Inhalte zu bekommen!
Who this course is for:
- Frontend- und Fullstack-Entwickler mit ersten Programmierkenntnissen
- Alle die einen technischen Einstieg in Unity suchen
Instructor
Hi, ich möchte Dir dabei helfen, deinen Traum vom eigenen Computerspiel Wirklichkeit werden zu lassen. Mein erstes kommerziell veröffentlichtes Spiel habe ich Mitte der 1990er Jahre als Hobby-Projekt mit einem Basic-Dialekt unter Windows entwickelt. Seither verfolge ich das Thema Spieleentwicklung in Hobby, Studium und Beruf, wo ich bereits an Spielen für namhafte Kunden mitwirkte. Ich habe über 20 Jahre Erfahrung in allen Phasen des Entwicklungsprozesses, die ich gerne mit Dir teilen möchte.